38

저는 컴퓨터 비전을 향한 첫발을 내디뎠습니다. 나는 Hough 변환을 독자적으로 구현하려고 시도했지만 전체적인 그림을 얻지 못했습니다. 나는 위키 피 디아 엔트리를 읽었고 심지어 리차드 두다와 피터 하트의 "그림에서 선과 곡선을 감지하기위한 원래의 허프 변환 사용"을 읽었지만 도움은되지 않았다.설명해주었습니다. 허치 변환 설명

좀 더 친숙한 언어로 나에게 설명해 줄 사람이 있습니까?

답변

32

직사각형 좌표의 선을 생각해 보면 더 일반적입니다. 즉, y = mx + b입니다. 위키피디아의 기사에 따르면, 한 줄 또한 극형으로 표현할 수 있습니다. Hough 변환은이 표현의 변경을 이용합니다 (선에 대해서는 어쨌든, 원이나 타원 등에도 적용 할 수 있습니다).

Hough 변환의 첫 번째 단계는 이미지를 가장자리 집합으로 줄이는 것입니다. Canny 엣지 디텍터는 빈번한 선택입니다. 최종 에지 이미지는 Hough 프로세스의 입력으로 사용됩니다.

즉 그들의 위치 방향 세타 및 거리 R을 이용하여 표현되고, 극성 형태로 변환 된 에지 이미지에 "조명"픽셀을 요약하면 - 대신 X Y한다. (이미지의 중심은 일반적으로이 좌표 변경을위한 참조 점으로 사용됩니다.)

Hough 변환은 본질적으로 히스토그램입니다. 동일한 세타 및 r에 매핑되는 에지 픽셀은 이미지에서 선을 정의하는 것으로 가정됩니다. 발생 빈도를 계산하려면 theta을 이산화합니다 (여러 개의 bin으로 분할). 모든 가장자리 픽셀이 극형으로 변환되면 원본 이미지의 선을 결정하기 위해 저장소가 분석됩니다.

그것은 N 가장 자주 매개 변수를 찾는 것이 일반적이다 - 매개 변수 또는 임계 값과 같은 일부 N이 무시됩니다보다 작은 계산됩니다.

이 답변이 원래 제시 한 출처보다 좋을지 모르겠습니다. 귀하가 고착하고있는 특별한 점이 있습니까?

+0

당신의 대답은 좋습니다. 그것은 내가 다른 곳에서 읽은 것을 다시 보증합니다. Ray H가 아래에 제공 한 대답은 또한 내가 어려움을 겪고 있다고 말했습니다. 매개 변수의 가능한 모든 조합이 계산됩니다. 그래서 머리를 여러 가지 방식으로 듣는 것만으로도 더 명확 해집니다. – Haoest

+3

[http://gmarty.github.io/hough-transform-js/](http://gmarty.github.io/hough-transform-js/) – user1311069

15

호프 변환은 선 (또는 원 또는 다른 많은 것들)을 나타내는 가장 가능성있는 값을 찾는 방법입니다.

당신은 허프 (Hough) 변환에 선 그림을 입력으로 제공합니다. 이 그림에는 두 가지 유형의 픽셀이 포함됩니다. 하나는 선의 일부이고 다른 하나는 배경의 일부입니다.

라인의 일부인 각 픽셀에 대해 가능한 모든 매개 변수 조합이 계산됩니다. 예를 들어 좌표 (1, 100)의 픽셀이 라인의 일부인 경우 그래디언트 (m) = 0이고 y- 가로 채기 (c) = 100 인 라인의 일부가 될 수 있습니다. m = 1, c = 99; 또는 m = 2, c = 98이고; 또는 m = 3, c = 97; 등등. 모든 방정식을 찾기 위해 선 방정식 y = mx + c를 풀 수 있습니다.

각 픽셀은 설명 할 수있는 각 매개 변수 (m 및 c)에 하나의 표를 제공합니다. 따라서 라인에 1000 픽셀이 있으면 m과 c의 올바른 조합에 1000 표가 있다고 상상할 수 있습니다.

가장 많은 표를 얻은 m과 c의 조합이 줄의 매개 변수로 반환됩니다.

+0

에서 투표 공간을 볼 수있는 유용한 자바 스크립트 도구가 있습니다. 대단히 감사합니다. – Haoest

102

는 여기에 호우 이미지에 선을 검출 작품을 변환하는 방법의 아주 기본적인 시각 설명입니다 :

여기 enter image description here

+0

멋진 그림 설명 주셔서 감사합니다! 아주 좋아요! –

+1

좋은 예! 조금 필요할 수도 있습니다. 가장자리를 따라 선을 그리는 것을 언급하고 그 가장자리를 가리키는 점으로 나타내었지만 실제로는이 선은 가장자리에 접선입니다. – SIslam

+0

@ mlai,이 이미지를 만들었습니까? 만약 내가 마스터스 테제들을 위해 사용할 수 있다면, 네가 가지고있는 곳을 나에게 보여줄 수 있겠 니? 감사합니다 –

1

는 TV 쇼의 파일럿 에피소드에서 사용되는 또 다른 관점 (하나 숫자) : 분수와 같은 잔디 스프링클러가 잔디밭 앞 어딘가에 있었고, 물방울이 그 주변에 쏟아져 있다고 상상해보십시오. 이제 스프링클러가 없어졌지만 방울이 남아 있습니다. 각 방울을 자신의 스프링클러로 돌리는 것을 상상해보십시오. 그 방울 자체가 어떤 방 향에서 왔는지 알지 못하기 때문에 모든 방 향으로 방울 자체를 주위로 물방울을 내뿜습니다. 이렇게하면 한꺼번에 모든 물방울이 닿는 지점이있는 것을 제외하고는 땅에 많은 물을 얇게 뿌릴 것입니다. 그 지점은 원래 스프링클러가 있었던 곳입니다.

(예) 줄 감지에 대한 적용은 비슷합니다. 이미지의 각 점은 원래의 물방울 중 하나입니다. 스프링클러 역할을 할 때 그 지점을 통과 할 수있는 모든 선을 표시하는 자체 방울을 보냅니다. 전체 2 차 물방울이 쌓이는 곳은 이미지 점 전체를 통과하는 선의 매개 변수를 나타냅니다 - VOILA! 선이 발견되었습니다!