Matlab實現Hough直線檢測

2021-07-06 06:06:56 字數 2274 閱讀 4538

hough變換是實現數字影象處理中幾何形狀識別的基本方法,基本原理是xy軸的直線到極座標的變換。將直線轉換為極座標的點。原理未動,**先行:

rgb2gray函式功能:將

真彩色影象轉換為

灰度影象。

im2double

把影象資料型別轉換為雙精度浮點型別。如果輸入影象是雙精度浮點型別(double)的,返回的影象和

源影象相同。如果源影象不是雙精度浮點型別的,該函式將返回和源影象相同但資料型別為double型別的影象。

log邊緣檢測

運算元首先對影象做高斯濾波,然後再求其拉普拉斯(laplacian)二階導數。本文高斯濾波的模板為:

figure();subplot(2,2,1);imshow(o);title('原圖');

[m,n]=size(f);

for i=3:m-2

for j=3:n-2

i(i,j)=-f(i-2,j)-f(i-1,j-1)-2*f(i-1,j)-f(i-1,j+1)-f(i,j-2)-2*f(i,j-1)+16*f(i,j)-2*f(i,j+1)-f(i,j+2)...

-f(i+1,j-1)-2*f(i+1,j)-f(i+1,j+1)-f(i+2,j);  %log運算元

endend

subplot(2,2,2);imshow(i);title('log運算元提取影象邊緣');

%均值濾波

[m,n]=size(i);

for i=2:m-1 

for j=2:n-1 

y(i,j)=i(i-1,j-1)+i(i-1,j)+i(i-1,j+1)+i(i,j-1)+i(i,j)+i(i,j+1)+i(i+1,j-1)+i(i+1,j)+i(i+1,j+1);

y(i,j)=y(i,j)/9;

%log運算元提取邊緣後,對結果進行均值濾波以去除雜訊,為下一步hough變換提取直線作準備   

end 

endsubplot(2,2,3);imshow(y);title('均值濾波器處理後');

%二值化

q=im2uint8(y);    %把影象資料型別轉換為無符號八位整型

[m,n]=size(q);

for i=1:m 

for j=1:n 

if q(i,j)>80;%設定二值化的閾值為80          

q(i,j)=255;%對影象進行二值化處理,使影象邊緣更加突出清晰     

else 

q(i,j)=0;

endend

endsubplot(2,2,4);imshow(q);title('二值化處理後');

%hough變換檢測直線,使用(theta,p)引數空間,theta∈[0,180],p∈[0,2dis]

theta=180; %角度的值為0到180度

dis=round(sqrt(m^2+n^2)); %影象對角線長度為p的最大值 round為四捨五入

s=zeros(theta,2*dis);   %儲存每個(theta,p)個數

z=cell(theta,2*dis);

for i=1:m

for j=1:n        %遍歷影象的所有點

if (q(i,j)==255)    %只檢測邊緣的白點

for k=1:theta

p=round(i*cos(pi*k/180)+j*sin(pi*k/180));  

%對每個點從1到180度遍歷

if(p>0)

s(k,dis+p)=s(k,dis+p)+1;   %累加

z=[z,[i,j]'];

else

ap=abs(p)+1;

s(k,ap)=s(k,ap)+1;   %累加

z=[z,[i,j]'];

endend

endend

end

%顯示效果

for i=1:theta

for j=1:dis*2

if(s(i,j)>70)

lp=z;

for k=1:s(i,j)

o(lp(1,k),lp(2,k),1)=255;

o(lp(1,k),lp(2,k),2)=0;

o(lp(1,k),lp(2,k),3)=0;

endend

endend

figure,imshow(o),title('hough');

Hough變換提取直線 Matlab實現

用hough變換提取直線 在對圖形進行直線檢測之前,需要對圖形進行邊緣檢測 二值化處理,用拉普拉斯演算法或canny提取邊緣 hough變換思想 1 在 的極值範圍內對其分別進行 m,n 等分,設乙個二維陣列的下標與 i j 的取值 對應 2 對影象上的所有邊緣點作 hough 變換,求每個點在 j...

Hough變換直線檢測的MATLAB實現

1.hough變換是乙個非常重要的 檢測間斷點邊界形狀的方法,它通過將影象座標空間變換到引數空間,來實現直線和曲線的擬合。2.通過hough變換,在二值影象中檢測直線需要三個步驟 a 利用hough 函式執行hough變換,得到hough矩陣 b 利用houghpeaks 函式在hough矩陣中,尋...

C實現hough變換擬合直線

原理 對於平面上的乙個點 x1,y1 滿足方程 y1 mx1 b,經過點 x1,y1 的直線有無數條,只要其滿足剛才的直線方程。然而,可以把直線方程變形一下,b x1 m y1,在考慮由點 m,b 組成的面,這裡叫為引數空間,由 x1,y1 確定一條直線。同樣,由另外乙個點 x2,y2 可以確定引數...