У меня есть код из книги Feature Extraction & Image Processing
. Как я новичок в Matlab, я не знаю, как запустить эти коды, чтобы увидеть результаты. Готовы ли они?Hough Transform Matlab - как отобразить?
Первый один: Хаф преобразования для линий
%Polar Hough Transform for Lines
function HTPLine(inputimage)
%image size
[rows,columns]=size(inputimage);
%accumulator
rmax=round(sqrt(rows^2+columns^2));
acc=zeros(rmax,180);
%image
for x=1:columns
for y=1:rows
if(inputimage(y,x)==0)
for m=1:180
r=round(x*cos((m*pi)/180)+y*sin(m*pi)/180);
if(r0) acc(r,m)=acc(r,m)+1; end
end
end
end
end
Второй один: Хаф преобразования для кругов
%Hough Transform for Circles
function HTCircle(inputimage,r)
%image size
[rows,columns]=size(inputimage);
%accumulator
acc=zeros(rows,columns);
%image
for x=1:columns
for y=1:rows
if(inputimage(y,x)==0)
for ang=0:360
t=(ang*pi)/180;
x0=round(x-r*cos(t));
y0=round(y-r*sin(t));
if(x00 & y00)
acc(y0,x0)=acc(y0,x0)+1;
end
end
end
end
end
Третий один: Хаф преобразования для Elipses
%Hough Transform for Ellipses
function HTEllipse(inputimage,a,b)
%image size
[rows,columns]=size(inputimage);
%accumulator
acc=zeros(rows,columns);
%image
for x=1:columns
for y=1:rows
if(inputimage(y,x)==0)
for ang=0:360
t=(ang*pi)/180;
x0=round(x-a*cos(t));
y0=round(y-b*sin(t));
if(x00 & y0< rows & y0>0)
acc(y0,x0)=acc(y0,x0)+1;
end
end
end
end
end
У меня есть изображения (png), что мне нужно запустить эти программы. Но я не могу запустить его. Я создаю новый скрипт, вставляю код, сохраняю его и в главном окне запускаю путь имени имени функции к изображению в качестве параметра. Он ничего не делает, никакого сообщения или так.
я изменил r0 на это: если (г 0), как и в книге. После удаления заявления if вы упомянули, я получил acc. Но я хочу, чтобы он возвращал изображение только с линиями. Посмотрите здесь: http://books.google.pl/books?id=97QebyNxyaYC&printsec=frontcover#v=onepage&q&f=false Page 200 - результаты g, h, i - Мне нужны только строки, без необходимости предыдущего изображения. Btw, коды, которые я вам дал, указаны на 2 страницах ниже, и здесь есть инструкции «если», wierd :) –
Fengson
Я не могу видеть страницы книг здесь из Германии, но неважно. Да, как я уже сказал, вам нужно найти максимумы в массиве аккумуляторов, которые затем дают вам параметры линии, которые вы можете легко построить. Таким образом, либо вы выполняете максима-поиск самостоятельно, либо выполняете его с помощью функции houghpeaks, также смотрите на принятый ответ здесь: http://stackoverflow.com/questions/6680302/hough-transform-in-matlab – tim