2012-04-16 4 views
4

MATLAB의 this paper에 제시된 바와 같이 일반화 된 Hough 변환을 구현하려고합니다. 또한 알고리즘을 이해하기 위해 this document을 사용해 보았습니다. 나는 R-Table에서 Φ를 찾기 위해 그래디언트 각도를 계산하는 방법을 알아 내야합니다.일반화 된 Hough R 테이블

윤곽선 함수는 음수 인덱스에 액세스하려고 시도하지만이 matlab implementation을 실행하려고했습니다. 누락 된 기능은 다음과 같습니다.

distance.m

function [ d ] = distance(x1, y1, x2, y2) 
    d = sqrt((x2-x1)^2 + (y2-y1)^2); 
end 

barycenter.m

function [ xo, yo ] = barycenter(img) 
% gravitational center coordinates of a shape 

    [rows, cols] = size(img); 
    x = ones(rows, 1)*(1:cols); 
    y = (1:rows)'*ones(1,cols); 
    area = sum(sum(img)); 
    xo = sum(sum(double(img) .* x))/area; 
    yo = sum(sum(double(img) .* y))/area; 

end 

modelHough.m

function [H]=ModelHough(imgRGB) 
% Generalized Hough Transform Modeling 

% Image Binarization 
imgBW = rgb2gray(imgRGB); 
imgBI = imgBW < 255; 

% Retrieving information about the contour: points and number (N) 
N = contour(imgBI); 

% Model initialization: 
    % row = beta value * 100 
    % column = number of the couple (alpha, distance) 
    % 3rd dimension: 1 = alpha, 2 = distance 
H=zeros(round(100*2*pi),N,2); 

% Compute of the barycenter coordinates 
[ xo, yo ] = barycenter(imgBI); 

% for each contour point 
for i=1:N 

    % beta compute for ith contour point 
    b = beta(N, imgBI, i); 

    % research of the first column 
    k=1; 
    while H(b+1,k,2)~=0 
     k=k+1; 
    end 

    % compute of the alpha value 
    H(b+1, k, 1) = alpha(N, i, imgBI); 

    % compute of the distance value 
    H(b+1, k, 2) = distance(xo, yo, i, b); 

end 

답변

3

사용 적합한 에지 검출기. Sobel operator으로 시작할 수 있습니다. 그래디언트 각도는 위키 기사에서 설명한 atan (Gy/Gx)입니다. 당신이 가장자리를 검출하는 일반적인 에지 검출기를 사용하는 경우

0

아래처럼 뭔가 행 14 countor.m을 변경해야합니다 :

while (img(i,j)~=1)