В настоящее время у меня есть некоторые проблемы с моей текущей реализацией преобразования hough. Прямо сейчас я в основном сосредоточен на получении аккумулятора hough, rhos и Thetas. Я чувствую, что это сложнее, поскольку я чувствую, что все остальное работает. Я также понимаю, что могу просто использовать функцию, но это не то, что я пытаюсь сделать. Я чувствую, что не хватает нескольких мелких деталей, которые будут иметь значение.Реализация Hough Transform для строк без функции hough по умолчанию-Matlab
Первый шаг заключается в получении края изображения с использованием
img_edges=edge(img,'canny')
После этого часть, где я получаю другие вещи, я упоминал
function [H, theta, rho] = hough_lines_acc(BW, varargin)
p = inputParser();
addParameter(p, 'RhoResolution', 1);
addParameter(p, 'Theta', linspace(-90, 90, 180));
parse(p, varargin{:});
rhoStep = p.Results.RhoResolution;
D = sqrt((255 - 1)^2 + (255 - 1)^2);
nrho = round(2*(ceil(D/rhoStep)) + 1);
rho=linspace(0,nrho,nrho+1);
theta=p.Results.Theta;
ntheta = length(theta);
%initialize H to all zeros
H=zeros(nrho+1,ntheta);
[y,x]=size(BW);
for u= 1:y
for v= 1:x
if BW(u,v)==1
for i=1:ntheta
the=theta(i);
rhov=abs(ceil(v*cosd(the)+u*sind(the)));
H(rhov+1,i)=H(rhov+1,i)+1;
end
end
end
end
end
Я просто нужны некоторые указатели, так что я могу получить эту бег. Я действительно думаю, что остальное преобразование хэпа у меня есть.
С чем именно вы столкнулись? Для меня ваша реализация выглядит отлично. Похоже, вы аккуратно набираете 'rho' и' theta'. – rayryeng
Моя цель - подражать каждому шагу преобразования hough. Когда я запускаю это, я получаю то, что является сплошной фигурой, и оно не освещает никаких реальных точек. –
Например, когда я воспринимаю это на изображении, а затем выполняю все остальное, что я делаю с помощью реальных функций hough, часть houghlines ничего не возвращает. Тем не менее, тот же самый код, который получает хэш-накопитель от функции hough по умолчанию в Matlab, будет следовать всему процессу до завершения, и он сделает это правильно. –