허프 변환(Hough Transform)
표준 허프 변환(SHT)은 영상에서 직선을 검출하도록 설계되었습니다. SHT는 직선에 대한 파라미터 표현을 사용합니다.
rho = x*cos(theta) + y*sin(theta)
theta는 원점에서 직선까지의 법선 방향의 각도로, 양의 x축을 기준으로 시계 방향으로 측정됩니다(단위: 도). rho는 원점에서 직선에 수직인 벡터를 따라 측정한 직선까지의 평행 오프셋입니다. rho의 크기는 원점과 직선 사이의 수직 거리와 동일합니다. 다음 그림은 theta와 rho가 직선의 수직 투영(법선 방향)을 기준으로 어떻게 정의되는지 보여줍니다.

hough 함수를 사용하여 이진 영상의 허프 변환을 수행할 수 있습니다. hough 함수는 행과 열이 각각 rho 값과 theta 값에 대응되는 파라미터 공간 행렬을 반환합니다. rho와 theta의 모든 조합에 대해 SHT는 해당 파라미터를 갖는 직선을 계산하고, 그 직선을 따라 입력 이진 영상에서 true인 모든 픽셀의 합을 반환합니다.
허프 변환을 계산한 후에는 houghpeaks 함수를 사용하여 파라미터 공간 행렬에서 피크 값을 찾을 수 있습니다. 이들 피크가 입력 영상에서 직선일 가능성이 있는 부분을 나타냅니다. 그러나 입력 영상에 피크가 있다고 해서 반드시 직선이라는 것은 아닙니다. 피크는 일직선상에 놓인 여러 개의 짧은 선분들이 누적된 결과로 나타날 수도 있기 때문입니다.
허프 행렬의 피크에 영향을 미치는 선분에 대한 자세한 내용을 확인하려면 houghlines 함수를 사용할 수 있습니다. 피크에 대응하는 각 선분에 대해 houghlines 함수는 선분 양 끝점의 (x, y) 좌표와 직선의 theta 값 및 rho 값을 반환합니다. houghlines 함수는 간격이 작은 선분들을 자동으로 연결함으로써 입력 이진 영상에서 잡음의 영향을 줄입니다. 끝점에 대한 정보를 사용하여 영상에서 가장 긴 선을 식별하거나 입력 영상 위에 선분을 표시할 수 있습니다. 예제는 Detect Lines and Highlight Longest Segment Using Hough Transform 항목을 참조하십시오.
참고 항목
hough | houghlines | houghpeaks