🐍Python
[OpenCV] 04-10. Histograms in OpenCV (4)
이번 장에서는 “히스토그램 배경투사”에 대해서 알아볼 것 이다.Theory이는 Michael J. Swain , Dana H. Ballard의 논문 Indexing via color histograms에서 등장했다.간단하게 뭐라고 말할 수 있을까? 이는 이미지 분할 또는 이미지에서 관심 있는 객체를 찾는데 사용된다. 간단히 말해서, 입력과 동일한 크기의 이미지를 생성하는데, 여기서 각각의 픽셀은 우리의 물체에 속하는 픽셀의 확률에 해당한다. 좀 더 단순한 말로, 출력 이미지는 관심있는 객체부분은 나머지 부분에 비해 하얗게 표시될 것 이다. 이는 직관적인 설명이다. 히스토그램 배경투사는 camshift 알고리즘등과 함께 사용된다.어떻게 해야 할까? 관심 대..
[OpenCV] 04-10. Histograms in OpenCV (3)
이번 장에서는, 2D 히스토그램을 찾고 그려볼 것이다. 다가올 챕터들에 있어서 도움이 될 것이다.Introduction(1)에서는 1차원 히스토그램을 계산하고 그렸었다. 하나의 특성만 다루기에 1차원이라고 부르는 것이다. (흑백 스케일 픽셀의 강도 값) 하지만 2차원 히스토그램에서는, 두 가지 특성을 고려한다. 일반적으로 두 가지 특성이 모든 픽셀의 색조&채도 값인 컬러 히스토그램을 찾는데 사용된다.컬러 히스토그램을 어떻게 만드는지 이해해볼 것이고, 앞으로 있을 히스토그램 Back-Projection을 이해하는데 유용할 것 이다.2D Histogram in OpenCV이는 다소 간단하고 cv2.calcHist() 함수를 이용하여 계산한다. 컬러 히스토그램에 대해, 이미지를 ..
[OpenCV] 04-10. Histograms in OpenCV (2)
이번 장에서는히스토그램 균등화의 개념에 대해서 배우고 이미지의 대조를 향상시키는데 사용할 것이다.Theory픽셀 값이 특정 값 범위에만 국한된 이미지를 고려해보자. 예를 들면, 밝은 이미지는 모든 픽셀이 높은 값으로 범위를 이룰 것이다. 하지만 좋은 이미지는 이미지의 모든 지역에서 픽셀을 가지고 있어야한다. 그래서 히스토그램을 양쪽 끝까지 늘려야 하며, 그것이 히스토그램 균등화가 하는 일이다. 이는 일반적으로 이미지의 대조를 향상시켜준다. 위키피디아 Histogram Equalization에서 자세하게 읽는 것을 추천한다. 대신에, 여기ㅣ서는 Numpy 구현하는 것을 볼 것이다. 그 이후 OpenCV 함수에 대해 볼 것이다.import cv2 import n..
[OpenCV] 04-10. Histograms in OpenCV (1)
이번 장에서는OpenCV와 Numpy 함수를 같이 사용하여 히스토그램을 찾는 것OpenCV와 Matplotlib 함수를 사용하여 히스토그램을 그리는 것cv2.calcHist(), np.histogram()등의 함수에 대해서 볼 것 이다.Theory그래서 히스토그램이란 무엇일까? 히스토그램을 이미지 분포의 강도에 관한 총량을 알려주는 그래프나 도표정도로 생각할 수 있다. 이는 X축에 픽셀값(항상 0부터 255는 아니다)을 나타내고 Y축에 이에 대응하는 이미지의 픽셀의 수를 나타낸다.이는 이미지를 이해하는 다른 방법일 뿐이다. 이미지의 히스토그램을 보면 이미지의 대조, 밝기, 강도 분포에 대한 직관을 얻을 수 있다. 최근의 이미지 처리 도구들은, 히스토그램에 ..
[OpenCV] 04-9. Contours (5)
이번 장에서는, Contours의 층에 대해서 알아볼 것이다.(Contours의 부모-자식 관계)Theorycv2.findContours() 함수를 이용하여 이미지의 contours를 찾게되면, Contour Retrival Mode 인자를 넘겨야한다. 보통은 cv2.RETR_LIST 나 cv2.RETR_TREE를 사용하고 작동도 잘한다. 하지만 사실상 의미하는 것이 무엇일까?결과에서 또한, 3가지 arrays를 얻는데, 첫 번째는 이미지, 두 번째는 contours, 나머지 하나는 “계층”이라 불리우는 것이다. 하지만 이 계층을 어디에서도 쓴적이 없다. 그러면 계층은 무엇이고 어디에 사용될까? 이전에 언급했던 인자들과는 무슨 관계가 있는 것일까?이번 장에서 다루게..
[OpenCV] 04-9. Contours (4)
이번 장에서는Convexity defects와 이를 어떻게 찾아내는지를 볼 것이다점에서 다각형까지의 최단 거리를 찾을 것이다.다른 모양들을 매칭시킬 것이다.Theory and Code1. Convexity Defects두 번째 장에서 convex hull이 무엇인지 보았다. 이 hull에서 객체의 이탈은 convexity defect로 간주될 수 있다.OpenCV는 이를 찾을 수 있는 완성된 함수인 cv2.convexityDefects() 를 제공한다. 기본 함수는 다음과 같다.hull = cv2.convexHull(cnt,returnPoints = False) defects = cv2.convexityDefects(cnt,hull) convex hul..