我從書Feature Extraction & Image Processing
得到了一個代碼。 由於我是Matlab的初學者,我不知道如何運行這些代碼來查看結果。 他們完成嗎?Hough變換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變換爲圓
%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
第三個:霍夫變換的省略號
%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到這一點:如果(R 0)在這本書。刪除你提到的if語句後,我得到了acc。但是我希望它只用線條返回圖像。看看這裏:http://g3.s.tbtu.pl/books?id=97QebyNxyaYC&printsec=frontcover#v=onepage&q&f=false Page 200 - 結果g,h,i - 我只需要線條,不需要放棄之前的圖像。順便說一句,我給你的代碼是2頁下面和「如果」聲明在那裏,更奇怪:) –
Fengson
我不能在德國這裏看書頁,但從來不知道。是的,正如我所說的,您需要在累加器數組中找到最大值,然後給出您可以輕鬆繪製的線的參數。所以要麼你自己做最大值搜索,要麼通過使用houghpeaks函數來做到這一點,也請看這裏接受的答案:http://stackoverflow.com/questions/6680302/hough-transform-in-matlab – tim