2017-01-25 12 views
2

參數我想檢測的對象,我嘗試使用Houghcirles功能從OpenCV的,但我不能達到更好的參數的所有圖像和,但這樣做threasholding我可以篩選出圓。我用的代碼是圓檢測:對houghcricles

int main() 
{ 
// Load an image 
src = imread("occupant/cam_000569.png"); 
threshold(src,binary,52,255,0); 
imwrite("binary.png",binary); 
canny(src,canny,50,200,3); 
houghcircles(canny,circles,CV_HOUGH_GRADIENT,1,src.gray.rows/8,7,24,28); 

閾值後,我得到了下面的圖片和即使存在干擾包括在內,但對於52閾值,我可以看到所有其他圖像相同,其中的對象是明確的。

使用cannyhoughcircles函數後,用參數提到的代碼。我可以檢測到所需的物體。

但問題是,當我使用的下一個圖像相同的閾值是適用的,但使用相同的參數爲精明和houghcircles我無法檢測的對象。

所以我的問題是如何選擇的houghcircle的參數或者是它可以檢測不同OpenCV的函數的對象?

回答

1

用於該檢測的更好的解決方案是在MATLAB使用用C斑點檢測++或regionprops的並濾除基於區域和圓形度的計算。

2

我認爲這裏的主要問題是照明。在應用Canny邊緣檢測器之前,嘗試直方圖均衡化,然後進行一些平滑處理。你將不得不拍攝一些圖像,並估計canny和Hough參數,這些參數對於大多數人來說都很好。找到導致100%檢測率的值是不可能的。

另一種選擇是培養的對象檢測器,要認識到,使用哈爾或LBP特徵的對象。如果對象是一個圓圈,這看起來有點矯枉過正。

+0

謝謝你的想法。我確定照明是一個原因。但我的主要問題是如何選擇houghCircle的參數,特別是參數1和參數2的閾值。 – Reddy2810

+0

@ Reddy2810在這種情況下選擇參數的常用方法是「經驗選擇」,其中在來自給定場景的大量圖像上測試軟件並選擇能夠帶來最佳結果的參數組合。 – Totoro