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