基於Matlab的霍夫直線檢測問題的解決

2021-08-03 02:54:07 字數 1933 閱讀 6627

比如在引數選取上面的一些問題,可能導致難以讓人滿意的結果。比如一些語句的錯誤使用可能導致程式直接無法執行。

就最近在直線檢測問題上遇到的一些問題,我寫下這篇部落格,希望可以給將來入門的萌新一點小小的幫助。

1.霍夫直線檢測的引數選取問題

sigma=5; %%%%%定義高斯引數

f=edge(double(src),'canny',thresh,sigma);

figure(1),imshow(f,);

title('canny 邊緣檢測');

[h,theta,rho]=hough(f,'rhoresolution',0.1);

%imshow(theta,rho,h,,'notruesize'),axis on,axis normal

%xlabel('\theta'),ylabel('rho');

peak=houghpeaks(h,9);

hold on

lines=houghlines(f,theta,rho,peak);

figure,imshow(f,),title('hough transform detect result'),hold on

imshow(src);

hold on

for k=1:length(lines)

xy=[lines(k).point1;lines(k).point2];

plot(xy(:,1),xy(:,2),'linewidth',2,'color',[0 0 1 ]);

end

這段**,是用來檢測十分簡單的的,純粹是我用來檢測霍夫效能的**

待檢測:

就是簡單的矩形圖

剛開始檢測的結果是這樣的

canny邊緣檢測圖毫無問題,但是使用霍夫檢測之後就出現了巨大的問題。當時我在想可能霍夫函式的引數設定,沒設定好,導致的。然後我更改了hough函式

中的rhoresolution和thetaresolution兩個變數。但是顯示效果還是不好。

我在這個卡了好久,一直想不通哪兒出了問題。後來甚至想著是不是hough函式使用不對。最後乾脆一了百了,改了所有引數,包括canny檢測函式的引數。最終真相大白!

原來是canny邊緣檢測函式的引數設定影響了最終的直線檢測效果!

後來思索了一下,hough直線檢測是建立在邊緣檢測的基礎上的,如果你的基礎邊緣檢測不行,直線檢測肯定也不行。

這裡面存在的乙個大坑就是

邊緣檢測的圖線,人眼看上去沒太大問題,但是對hough函式來說可能是致命的。

附上最終的檢測效果圖:

Matlab實現 霍夫變換直線檢測

霍夫變換實現直線檢測 matlab 網上好多不能用,就重新寫了乙個 入口影象為 bw,出口影象為fclc,closebw imread d picture 9 605d53eea243812bb29.jpg bw rgb2gray bw thresh 0.01,0.17 sigma 2 定義高斯引數...

霍夫直線檢測

使用python做霍夫直線檢測,直接詳細 注釋清晰 import cv2 import matplotlib.pyplot as plt import numpy as np if name main pic path c users echo desktop python file hough p...

霍夫直線檢測

霍夫直線檢測的原理 略 直接上 一 首先匯入,並進行高斯濾波降噪 我用的是這幅圖 二 獲取影象的輪廓 獲取邊緣 edges cv.canny src,150,300,aperturesize 3 cv.imshow edges edges 獲取邊緣後如下 接下來有兩種方法可以提取直線 方法一 lin...