2015-02-04 2 views
1

В настоящее время у меня есть некоторые проблемы с моей текущей реализацией преобразования 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 

Я просто нужны некоторые указатели, так что я могу получить эту бег. Я действительно думаю, что остальное преобразование хэпа у меня есть.

+1

С чем именно вы столкнулись? Для меня ваша реализация выглядит отлично. Похоже, вы аккуратно набираете 'rho' и' theta'. – rayryeng

+0

Моя цель - подражать каждому шагу преобразования hough. Когда я запускаю это, я получаю то, что является сплошной фигурой, и оно не освещает никаких реальных точек. –

+0

Например, когда я воспринимаю это на изображении, а затем выполняю все остальное, что я делаю с помощью реальных функций hough, часть houghlines ничего не возвращает. Тем не менее, тот же самый код, который получает хэш-накопитель от функции hough по умолчанию в Matlab, будет следовать всему процессу до завершения, и он сделает это правильно. –

ответ

0

В целом кажется, что могут возникнуть другие проблемы. Я изменил диапазон rho, чтобы он мог включать отрицательный и положительный, и результат был приятным. Я действительно думаю, что моя проблема лежит в другом месте.