2009-09-01 5 views
26

this paper을 기반으로 Hough transform을 사용하여 사각형 감지를 구현하려고합니다.허프 (Hough) 변환을 사용한 사각형 감지

Matlab을 사용하여 프로그램했지만 병렬 쌍선과 직교 쌍을 찾은 후에는이 쌍의 교차점을 감지해야합니다. 제 질문은 허프 (Hough) 공간의 두 선 교차로의 품질에 관한 것입니다.

4 개의 방정식 시스템을 풀어 교차점을 발견했습니다. 이 교차점은 직교 좌표 또는 극좌표 공간에 있습니까?

+0

하면 더 자세한 정보를 제공 할 수 있습니다 사용하여 달성 될 수 있는가? – endolith

+0

DOI가 "10.1.1.59.4239"인 문서가 없습니다. 제공된 문서 식별자가 Google 저장소에있는 모든 문서와 일치하지 않습니다. 요청한 DOI - 10.1.1.59.4239 - 핸들 시스템에서 찾을 수 없습니다. – endolith

+0

인용 된 논문과 OP가 사라졌습니다. 이걸 닫아야할까요? –

답변

0

저는 수학자가 아닙니다. 나는 기꺼이 교정하려고합니다 ...
Hough에서 2) ... xy 평면상의 임의의 선은 p = x cosθ + y sinθ로 나타낼 수 있습니다. 이 표현에서 p는 정상 거리이고 theta는 직선의 법선 각도입니다. 실제 적용에서 각도 theta와 거리 p는 양자화되며 배열 C (p, theta)을 얻습니다.
CRC 표준 수학 표에서 평면도의 극좌표 ... 이러한 의 숫자 쌍 (r, theta)이으로 정렬 된 점을 점 p의 극좌표라고합니다. 직선 : p = O에서 선까지의 거리, w = OX에서 O를 지나는 직각까지의 반 시계 방향 각도. 표준 형식 : r cos (theta - w) = p. 이 점에서 나는 점들이 극좌표 공간에 있다는 결론을 내린다.

1

참조 된 용지에 대한 링크가 작동하지 않지만 표준 허프 변환을 사용한 경우 4 개의 교차점보다 직교 좌표로 표현됩니다.

rho = x cos(theta) + y sin(theta) 

그래서 당신은 당신의 네 줄을 식별 사쌍 (rho_i, theta_i)을해야합니다 : 사실, 무릎의 tranform 검출 네 줄은 "정상적인 매개 변수화"를 사용하여 표현됩니다. (다만 theta_i 각도를 비교하여 예를 들면)의 직교성을 검사 한 후에는 폼의 각 네 수학 식 시스템을 푼다 X 및 Y는 교점의 직교 좌표를 나타내고, 미지수는

rho_j = x cos(theta_j) + y sin(theta_j) 
rho_k = x cos(theta_k) + y sin(theta_k) 

. 종이에 대해 궁금 당신의 사람들을 위해

6

, 그건 : 창있는 호우에 따라

사각형 감지 클라우디오 Rosito 정 로드리고 슈람에 의해 변환.

이제 종이에 따르면, 교점은 극좌표로 표현되며 분명히 구현이 다를 수 있습니다. 말할 수있는 유일한 방법은 코드를 표시하는 것입니다. 그런 다음 (3) 제 4 식으로 주어진 피크 페어링을 수행해야합니다

Peaks

:로

당신이 자신의 표기법과 일치되고있다 가정 할 때, 당신의 피크 표현되어야한다.3 T_thetaenter image description here와 병렬 대응하는 각 임계 값을 나타낸다는

equation 3

비슷한 길이의 라인에 대응하는 정규화 된 임계 값이다.

+0

\ delta \ rho = | \ rho_i + \ rho_j |이어야합니다. DomTomCat

4

호프 공간의 정확도는 두 가지 주요 요소에 따라 달라집니다.

누적 기는 Hough 공간에 매핑됩니다. 어큐뮬레이터 어레이를 반복하려면 어큐뮬레이터가 Hough 공간을 개별 그리드로 나누어야합니다.

선형 호프 공간에서 정확성의 두 번째 요소는 원본 이미지에서 원점의 ​​위치입니다. 주어진 변경 사항에 대해 \ theta를 적용하면 어떤 일이 발생하는지 잠시 살펴보십시오. 원점 근처에서 이러한 스윕 중 하나는 이미지 가장자리 근처의 스윕보다 훨씬 적은 픽셀을 포함합니다. 이미지의 가장자리 근처에서 직교 좌표계로 다시 변환 할 때 정확도를 높이기 위해 누적 기에서 훨씬 높은 \ rho \ theta 해상도가 필요합니다.

물론 해상도를 높이면 문제는 컴퓨터 성능을 높이고 메모리를 늘려야한다는 것입니다. 또한 어큐뮬레이터 해상도를 균일하게 높이면 필요하지 않은 원점 근처에서 해상도가 낭비됩니다.

몇 가지 아이디어가 도움이됩니다.

  1. 이미지의 가운데에 의 오른쪽에 원점을 배치하십시오. 반대로 자연 하단을 사용하여 왼쪽 또는 위 코드 이미지의 왼쪽.
  2. 가장 가까운 이미지를 사용해보세요 네모가 될 수 있습니다. 더 긴 화상 더는
  3. 중심에 각각에게 4/9/16 등의 다른 축전지에 원점을 이미지 분할 시도 가장자리 는해진다 해상도 트랩 발음 소정 영역 인 그 서브 이미지의 각 누적 기의 결과를 에 연결하는 데 약간의 오버 헤드가 필요하지만 은 해상도를보다 균등하게 분산시키는 데 도움이됩니다.
  4. 궁극적 인 해결책은 원점으로부터의 거리에 따라 선형으로 해상도를 높이는 것입니다. 이것은

(x-a)^2 + (y-b)^2 = \rho^2 

circle equation where 
    - x,y are the current pixel 
    - a,b are your chosen origin 
    - \rho is the radius 
once the radius is known adjust your accumulator 
resolution accordingly. You will have to keep 
track of the center of each \rho \theta bin. 
for transforming back to Cartesian 
+0

이미지의 두 부분을 분석 한 후 축전지를 결합하는 방법에 대한 제안이 있습니까? (당신의 요점 3) – Denis