아래의 수평필터, 수직 필터를 적용해서 각 픽셀의 gx, gy 계산


엣지 찾기
// 190: Thresh_low, 200: Thresh_high, 3: kernel_size
Canny(image, canny, 190, 200, 3);
알고리즘
Gaussian Filter 로 이미지 smooth
sobel edge mask 로 gradient magnitude 와 angle images 를 계산
// x, y, kernel size = 1, 0, 3 / 0, 1, 3
Sobel(blur, grad_x, CV16S, 1, 0, 3);
Sobel(blur, grad_y, CV16S, 0, 1, 3);
Non-Maxima Suppression을 통해 불필요 픽셀 제거 및 가장 강한 엣지만 남김
Double Thresholding
원의 중심 좌표, 반지름 ⇒ x,y,r 3D 매개변수 공간 이용
동일한 중심과 반지름을 가지는 경우 찾기
(𝑥 − 𝑐1)^2+(𝑦 − 𝑐2)^2= 𝑐3
HoughLines 는 각 좌표에 대해서 계산, HoughLinesP는 확률적 좌표에 대해서 계산 함, 따라서, HoughLinesP는 직선의 시작점, 끝점을 계산
// canny, output, 해상도, theta, thresh, 최소 각, 최대 각)
HoughLines(edge, lines, 1, CV_PI/180, 150, 0, CV_PI);
// canny, output, 해상도, theta, thresh, 최소라인길이, 최대라인길이
HoughLinesP(edge, lines, 1, CV_PI/180, 50, 10, 300);