Hough 변환 된 이미지의 De-Houghing을 수행하는 방법은 무엇입니까?


9

Rosetta Code 에서 발견 된 코드 를 사용하여 Hough 변환을 작성하고 있습니다. 이제 이미지의 모든 줄을 찾고 싶습니다. 그렇게하려면 허프 공간에서 각 피크의 ρ 및 θ 값이 필요합니다. 오각형의 샘플 출력은 다음과 같습니다.

허프 스페이스

허프 공간에서 보이는 '핫스팟'각각에 대해 단일 [θ, ρ] 좌표를 어떻게 찾을 수 있습니까?

답변:


9

피크의 좌표를 찾은 다음 축을 사용하여 [θ, ρ] 좌표로 스케일을 조정합니다.

데이터가 얼마나 시끄럽고, 예상되는 허위 피크 수와 시간이 얼마나 많은지에 따라 몇 가지 방법이 있습니다. 가장 쉬운 레벨은 실제 피크 인 레벨을 선택하고 그 아래에있는 모든 데이터를 잘라낸 다음 각 피크에서 무게 중심을 수행하여 중심을 얻는 것입니다.

각 피크가 단일 픽셀이 될 때까지 이미지를 침식 / 교정 할 수도 있습니다.


1
정확한 답변을 위해 +1 어떻게 정의 / 계산 center of gravity합니까?
Dipan Mehta

정확도를 높이려면 최대 값을 찾은 다음 포물면을 해당 점과 주변 점에 맞추고 포물면의 피크를 찾으십시오. 일반적으로 픽셀 사이에 있습니다.
endolith

2
@endolith-일반적으로 Hough 변환을 사용하면 초기 이미지에서 가장자리를 식별하고 Hough 공간에서 결과의 '분산'에 의해 정확도가 제한됩니다. 보다 정확한 결과가 필요한 경우 더 높은 해상도를 얻기 위해 더 제한된 범위의 [θ, ρ] 좌표에 대해 변환을 다시 실행하여 다시 실행하는 것이 일반적입니다. 발견 한 코스 솔루션 주위의 허프 공간
Martin Beckett

@DipanMehta-단순히 ( 각 픽셀의 x 값)과 (y ..)를 합한 다음 검색하고있는 상자의 X, Y 너비로 나눕니다. 그러나 엔도리스에 대한 주석보기
Martin Beckett


2

주어진 반지름에 대한 극댓값을 찾을 수 있습니다. 예를 들어 Hough 이미지를 창 에서 최대 값일 때만 피크를 최대 값으로 스캔합니다 .3×3

두 번째 단계는 피크 위치를 서브 픽셀 정확도로 조정하는 것입니다. 이것은 포물선 피팅으로 수행 할 수 있습니다.

Hough 이미지의 값이 이고 가 2D 위치 라고 가정합니다 . 이제 최대화 하는 수정 벡터 를 찾고 싶습니다.f(x)xpf(x+p). 이것은 Taylor 확장을 사용하여 작성할 수 있습니다.

f(x+p)f(x)+pTf(x)+12pTf(x)+p

보정 벡터는 다음

p=f(x)1f(x)

유한 차분 법에 의해 허프 이미지로부터 도함수를 계산할 수 있습니다 .

참고 인 헤 시안 매트릭스 및 2 벡터 (수평 및 수직 기울기)이고, 따라서 도 얻을 수있는 서브 픽셀 시프트를 지정하는 2 벡터이고 로컬 최대 화기의 정확한 위치.에프(엑스)2×2에프'(엑스)

위의 방정식은 때때로 1 픽셀 이상의 시프트를 생성 할 수 있습니다. 이 경우, 최대 값 근방은 포물선 모양이 아니므로 보정을 원하지 않거나 후보 최대 값을 떨어 뜨려야합니다.


0

Gerig와 Klein이 80 년대 중반에 개발 한 아주 좋은 기술이 있습니다. Hough 공간을 분석하여 각 에지 포인트와 관련된 가장 가능성있는 포인트를 식별 한 다음 에지 포인트를 매개 변수에 매핑하는 것이 일대 다가 아닌 일대일 인 두 번째 Hough 공간을 구성하는 백 맵핑 절차입니다. 일반적인 첫 단계입니다. 손에 대한 언급은 없지만 Illingworth와 Kittler의 허프 리뷰 논문 (1987 년경)을보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.