天天看點

hough transform java,opencv:在矩形檢測中使用輪廓和Hough變換

我試圖使用不同的方法檢測灰階圖像中的白色矩形:輪廓檢測和霍夫變換 . 不幸的是,我正在處理的圖像有一些限制,即

圖像中有許多功能,矩形不是唯一的功能

矩形可以合并到其他要素(例如,其中一個矩形邊可以與長直線重疊)

矩形可能包含一些其他功能(例如矩形内的字母,數字或某些徽标)

有些特征看起來像矩形(例如,字元'D'看起來像一個矩形,右上角和右下角有一個小弧形;另一個例子是梯形而不是平行四邊形)

矩形可以順時針和逆時針旋轉0到15度

有可能在不同的光照條件下(例如1個像素間隙)将線分成幾行,是以過濾線的最小線長必須很小(例如在Hough變換中)

當最小行長度設定為較小值時,更常見的是在不同方向上檢視同一行的重複行(即需要組合多行)

對于contonours方法,一些圖像的輪廓被打破 . 此外,圖像可以包含諸如矩形之類的特征(例如字元“D”) . 我不确定這是不是一個好方法 .

我看過許多文章/論壇建議使用Hough變換檢測矩形,如下面的文章 . 不幸的是,我必須設定最小行長度的小值,并看到重複的行 . 我不知道如何處理上面提到的幾點(例如,組合所有重複的行并為每個邊選擇一行,如何區分大多數部分的特征是線但是像'D'那樣的小弧,以及如何隔離正方形,其中一條邊與一條長直線合并,等等 .

歡迎任何建議!

EDIT: Add some pictures

hough transform java,opencv:在矩形檢測中使用輪廓和Hough變換

Character D

hough transform java,opencv:在矩形檢測中使用輪廓和Hough變換

Rectangle with logo and the edges are merged with long straight line

hough transform java,opencv:在矩形檢測中使用輪廓和Hough變換

Trapezoid (with shadow on the top forming trapezoid in the bottom)