이미지 커널(Kernel)에 대한 이해를 아주 쉽게 가르쳐 준다. http://setosa.io/ev/image-kernels/ The use of Kernels - also known as convolution matrices or masks - is invaluable to image processing. Techniques such as blurring, edge detection, and sharpening all rely on kernels - small matrices of numbers - to be applied across an image in order to process the image as a whole.
OpenCV 에서 Basic image processing 는 다음과 같이 9가지를 이야기 하고 있습니다.1: Translation (상하, 좌우 이동)2: Rotation (그림의 회전 ,중심축이 어디냐?)3: Resizing (이미지의 사이즈 조정, Aspect Ratio고려)4: Flipping (수평, 수직으로 뒤집기)5: Cropping (그림 일부만 가져오기)6: Image arithmetic (그림을 더 진하게, 연하게 만들기)7: Bitwise operations (그림의 Bit 연산)8: Masking (마스크)9: Splitting and merging channels ( Color Channel 로 나누고, 합치고)오늘은 Resizing, Flipping에 대해서 알아보겠습니다.Res..
imutils 는 OpenCV가 제공하는 기능 중에 좀 복잡하고 사용성이 떨어지는 부분을 잘 보완해 주는 패키지이다.기본적으로 모두 OpenCV의 기능을 사용하고 있기 때문에 해당 기능을 사용하는 것은 아주 권장되고 있다. 설치는$ pip install imutilsTranslation# translate the image x=25 pixels to the right and y=75 pixels uptranslated = imutils.translate(workspace, 25, -75) Rotation# rotate the image and display itrotated = imutils.rotate(bridge, angle=angle, center=(cx, cy))Resizing# resize th..
OpenCV 에서 Basic image processing 는 다음과 같이 9가지를 이야기 하고 있습니다.1: Translation (상하, 좌우 이동)2: Rotation (그림의 회전 ,중심축이 어디냐?)3: Resizing (이미지의 사이즈 조정, Aspect Ratio고려)4: Flipping (수평, 수직으로 뒤집기)5: Cropping (그림 일부만 가져오기)6: Image arithmetic (그림을 더 진하게, 연하게 만들기)7: Bitwise operations (그림의 Bit 연산)8: Masking (마스크)9: Splitting and merging channels ( Color Channel 로 나누고, 합치고)오늘은 Transition 과 Rotation 두가지만 알아보겠습니다...
우선 제가 말씀 드리는 내용은 반드시 실습을 해 보셔야 합니다.그렇게 했을 때, 내것이 될 수 있습니다. 그냥 눈으로만 보고 지나간다면 1시간 뒤면 내 기억속에서 사라집니다. 그리고 실습은 가능한 Jupyter notebook으로 하시기 바랍니다.jupyter notebook은 pip 나 anaconda, miniconda 설치로 가능합니다. OpenCV는 이벤트 처리가 쉽고, 그림을 그리는 것이 매우 쉽다. 우선 OpenCV가 가지고 있는 모든 이벤트를 보기위해서 다음과 같이 하면 OpenCV가 지정한 모든 것을 볼 수 있습니다. 그런데 이렇게 하면 너무 많아서 찾기 어려우니... 1234import cv2 for name in dir(cv2): print(name)cs 다음과 같이 하시는 것이 휠씬 ..
그리스 신화가 어떻게 구전이 되고, 기록으로 남게 되었는지 이야기를 했는데, 쉽게 와 닿지 않을 것이다. 그래서 우리가 잘 알고 있는 광개토대왕의 이야기를 그리스식 영웅으로 만들어 볼까 한다. 제우스가 트로이 전쟁으로 많은 영웅들을 역사에서 사라지게 한 후 많은 시간이 흘렀다. 인류가 너무 많아져서 힘들다는 기아아의 불평을 듣고, 물로 전 인류를 청소하는 것 보다는 전쟁을 통해서 적당히 사람 수를 줄이는 것이 좋다는 모모스 여신의 충고를 듣고 내린 결단이었다. 하지만 전쟁을 통해 너무나 많은 영웅이 죽었기 때문에 오히려 불편한 게 한두가지가 아니었다. 호랑이 없는 숲에 서로 자신이 왕이라고 싸우는 인간들의 분쟁을 마냥 방치하고 있을 수는 없었기 때문이다. 인간들의 분쟁에 조금씩 관여을 하다보니 도저히 못..
그리스 신화는 영웅(인간)들의 이야기를 신들이 이름과 신들의 능력을 활용해 좀 더 멋진 이야기로 꾸미고 있다고 이야기 했다. 즉 전혀 없던 이야기를 꾸며낸 소설이 아니라 역사적으로 실존했던 사실을 불멸하는 신의 이름과 신이 부여하는 정당성으로 포장하고 싶었던 것이다. 하지만 책을 읽다보면 도대체 어떤 부분이 실재 존재한 인간의 이야기이고, 어떤 부분이 가공된 부분인지 파악하기 힘들다. 우리가 잘 알고 있는 일리아스와 오딧세이아는 BC 13세기에 일어났던 그리스와 트로이의 전쟁 이야기가 입에서 입으로 구전되다가 5백년 후 장님이었던 호메로스가 서사시 형태로 남긴 것이 오늘에 전해지는 것이다. 어떤 사실이 기록으로 남겨지지 않고 구전 된다는 이야기는 말을 전하는 사람의 말재주, 상상력, 과장 등에 의해 내용..
이것이 대상 이미지입니다. 우선 해당 이미지에 대한 정보를 보면, 파일 타입은 png, 파일 Size : 579Kb 이고, Width 600, Height : 475 이고, BGR(Blue, Green, Red)의 3개 Channel로 구성되어 있습니다. (왜 BGR로 표시하는 지를 이 글을 읽어보시기 바랍니다. 전혀 중요하지 않지만...) 즉 이 파일을 메모리에 올리면, 600 x 475 x 3 = 855 Kb 메모리를 차지하면서 처리가 되는 것입니다. png 이미지를 jpg로 저장하면, 사이즈가 많이 줄어드는 모습을 볼 수 있습니다. png file size : 579 Kb ==> jpg file size : 173 Kb 로 줄어드는 것을 볼 수 있는데, 이것은 png는 이미지 무손실 압축을 하기 때..
이미지를 주제로 공부를 한지 1년, 이제 공부했던 것들을 정리하면서 내 생각도 정리하고, 해당 내용들을 다른 사람들과 공유해 보고자 한다. 첫번째 주제로 "왜 RGB가 아니라 BGR 로 저장할까?" 사실 그동안 이미지와 색은 RBG로 공부를 해 왔는데, OpenCV의 시작은 BGR로 시작을 한다.그래서 왜 그런지 이유를 찾아 보니, 대가의 어이 상실 답변을 찾았다. 해당 책의 작가는 Dr. Adrian Rosebrock 로 https://www.pyimagesearch.com/ 사이트를 운영하고 있고, 이 분이 만든 PyImageSearch Gurus Course를 통해서 OpenCV에 대한 공부를 하였다. 왜 OpenCV에서는 RGB가 아니라 BGR 로 저장할까?별로 중요하지 않고, OpenCV 개발할..
그리스 신화를 읽어 본 분이라면 누구나 느끼지만 그 이야기의 복잡함과 짜임새에 놀라게 된다. 그리고 그들의 풍부한 감성과 상상력에 주눅이 든다. 그리스 인들이 왜 그리스 신화를 만들었지는 앞서 이야기 했지만, 간단히 정리를 해 보자. 그리스 인들은 자연과 인간들 사이에서 일어나는 일련의 현상들의 복잡함을 어떻게 설명할까 고민 하고 다양한 시도를 했을 것이다. 그 다양한 시도 중에 사람들의 설득력을 얻은 것이 바로 신화라는 모형이다. 인간 세상을 설명할 모형은 그 모든 유형을 설명할 수 있어야 하기 때문에 인간보다 더 강한 뭔가가 필요했다. 예를 들면 인간은 천둥과 번개를 일으킬수 없기 때문에 천둥 번개를 만들 수 있고, 영원 불멸하며 전지전능한 힘을 발휘하는 신을 만들어 낸것이다. 즉 그리스인들은 그리스..