[OpenCV 3.2] Circle Detection (원 검출)

HoughCircles 함수를 이용하여 원을 검출한다.


1. 소스 코드

검출 과정은 1)그레이스케일 2)이진화 3)에지 검출 4)원 검출 5)검출 결과 표시 순이다.


2. 실행 결과




컴퓨터 비전과 영상 처리에 대해 독학을 하면서 정리한 걸 적고 있습니다.

전공과 무관하며 전문적인 지식이 아니므로 개인적인 의견과 부족하고 틀린 점이 많습니다.

추가 지식 및 잘못된 점을 지적해주시면 공부하는데 많은 도움이 되겠습니다. 감사합니다^^

- 푸어맨


[Reference]

(HoughCircles) http://docs.opencv.org/2.4/modules/imgproc/doc/feature_detection.html?highlight=houghcircles

(공 검출) http://zeal74.tistory.com/1171

(오목 UI) http://lyzqm.blogspot.kr/2015/07/3.html#more

[OpenCV 3.2] Detect Rectangle - 1 (사각형 검출)

OpenCV의 findContours와 approxPolyDP함수를 이용하여 사각형을 검출한다.


1. 사각형을 검출할 이미지를 생성한다.


2. 사각형을 검출할 이미지를 Canny함수로 에지 이미지로 변환한다.

1) 소스 코드

2) 실행 결과


3. 에지 이미지를 morphologyEx 함수로 형태를 뭉갠다.

1) 소스 코드

2) 실행 결과


4. Morph 이미지를 contours함수를 이용하여 도형들을 그룹화 한 후 그려준다.

1) 소스 코드

디버그 모드로 findContours 함수 사용에서 에러가 발생했는데 릴리즈 모드로 바꿔서 빌드하니 해결이 되었다.

2) 실행 결과


5. contours 이미지를 approxPolyDP를 이용하여 선분을 간략화한 후에 4개의 꼭지점을 갖는 도형을 검출한다.

1) 소스 코드

처음에 convexHull을 사용해 봤는데, convexHull는 십자가나 별표 모양의 안쪽으로 굽어진 도형들이 있는 경우에 내부 점들을 무시하기 때문에 다각형 검출에 적절하지 못하다.

2-1) appoxPolyDP의 실행 결과

2-2) 4개의 꼭지점의 도형만 검출 결과


6. 사각형 검출 최종 순서도


다음은 주어진 이미지와 비슷한 이미지를 검출하는 것에 대해 정리한다.




컴퓨터 비전과 영상 처리에 대해 독학을 하면서 정리한 걸 적고 있습니다.

전공과 무관하며 전문적인 지식이 아니므로 개인적인 의견과 부족하고 틀린 점이 많습니다.

추가 지식 및 잘못된 점을 지적해주시면 공부하는데 많은 도움이 되겠습니다. 감사합니다^^

- 푸어맨


[Reference]

(Detect rectagle from corners) http://stackoverflow.com/questions/34377943/opencv-is-it-possible-to-detect-rectangle-from-corners

(Ramer–Douglas–Peucker algorithm) https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm

(contours2.cpp) https://github.com/opencv/opencv/blob/master/samples/cpp/contours2.cpp

(형태학 필터)  http://hongkwan.blogspot.kr/2013/01/opencv-5-2-example.html

(approxPolyDP) http://docs.opencv.org/trunk/dd/d49/tutorial_py_contour_features.html

(외곽선 찾기) http://hns17.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-ConvexHull-Grahams-Scan

[OpenCV 3.2] Canny Edge Detector - 가장자리 검출 알고리즘

영상에서 사각형 혹은 숫자 등의 물체를 인식할 때 형상의 테두리로 알 수 있다.

이미지를 그레이 이미지로 변환한 후 가장자리 검출 알고리즘을 이용하여 이미지를 이진화 하는 방법에 대해 정리한다.


1. Canny Edge Detector란?

Canny 에지 검출 알고리즘은 1986년도에 John F. Canny에 의해 고안되어 대중적으로 많이 사용되고 있다.

Canny 알고리즘은 에지 검출 알고리즘에 있어서 다음 세가지의 기준을 내놓는다.

낮은 에러율 : 실제 에지만을 탐지하는 능력

낮은 오차율 : 실제 에지와 탐지된 에지의 픽실 거리 차이를 최소화

최소한의 응답성 : 각 에지에 대해서는 한 번만의 검출


2. 소스 코드

1) canny 함수

void Canny(InputArray image, OutputArray edges, double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false )

image : 그레이 이미지

edges : 변환한 에지 이미지

threshold1 : 에지 임계값

threshold2 : threshold1 * ratio

apetureSize : 커널 사이즈


2) MFC에 Canny Edge 슬라이더 컨트롤 변수 추가하기

MFC 관련 소스 코드 참조 : http://poorman.tistory.com/157


3) Canny 함수 추가

3. 실행 결과

다음은 ...




컴퓨터 비전과 영상 처리에 대해 독학을 하면서 정리한 걸 적고 있습니다.

전공과 무관하며 전문적인 지식이 아니므로 개인적인 의견과 부족하고 틀린 점이 많습니다.

추가 지식 및 잘못된 점을 지적해주시면 공부하는데 많은 도움이 되겠습니다. 감사합니다^^

- 푸어맨


[Reference]

(OpenCV Canny 함수) http://www.docs.opencv.org/2.4.10/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html

(캐니 알고리즘) http://iskim3068.tistory.com/60

(숫자 인식) http://egloos.zum.com/skaria/v/1083349

(번호판 인식) http://mind3002.blogspot.kr/2016/01/cc-opencv-license-plates-recognition.html

+ Recent posts