比如在引數選取上面的一些問題,可能導致難以讓人滿意的結果。比如一些語句的錯誤使用可能導致程式直接無法執行。
就最近在直線檢測問題上遇到的一些問題,我寫下這篇部落格,希望可以給將來入門的萌新一點小小的幫助。
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...