1. 程式人生 > >opencv如何精準定位十字?

opencv如何精準定位十字?

我想要做一個精準識別十字線中心的程式,可以實時的給出影象中十字交點的在影象中的座標。

我現在的實現方案是先用形態學梯度(膨脹減去腐蝕)找出直線的大致輪廓,

然後用霍夫線檢測出直線

然後用角點檢測,可以找出四個交點,然後求平均值就能找到中點座標。

但現在問題是檢測圖片沒有問題,但是放到視訊裡,就會出現檢測不穩,

主要是形態學變換的時候後,就算鏡頭不抖,光源穩定,但腐蝕膨脹的結果圖也一直在跳動。就導致檢測出的邊緣一直在跳。

想請問知乎的大神們,有沒有更好的解決方案可以穩定的檢測到交線的正中心。多謝!!!!

/---------------------canny補充---------------------------------------/

我寫 了函式,過濾了一部分

這是最終處理結果,但是這是檢測的圖片,如果寫進視訊處理裡,那就回一直抖啊抖的不停。一會少線,一會多線,根本沒法做角點檢測

/*********************************11.07**************************************/

Detech函式就是處理影象的函式。

裡面很簡單,先換成hsv,然後通道分離,把s通道先開運算,然後分別把開運算結果賦給dilateImage和erodeImage,然後dilateImage膨脹,erodeImge腐蝕。然後相減得輪廓。

lilateImage膨脹後的影象一直在變化,腐蝕的也是。但是原影象沒有任何變化。

碼農

1 人贊同了該回答

使用灰度圖,直接裁個十字心作子圖,在圖上做卷積,在卷積圖中找局域極值,就能定位。

​贊同 1​​6 條評論

​分享

​收藏​感謝

犀利哥的大實話

科研工作者

1 人贊同了該回答

你可以試試canny檢測出邊緣,然後做直線檢測,那樣就不用腐蝕和膨脹了。

​贊同 1​​11 條評論

​分享

​收藏​感謝

coroner4817

少跟我逼逼

一些回答沒有考慮影象中有多餘的東西或者十字旋轉,我提供另一種思路,首先得到binary image,然後用BFS greedy search掃描整張圖一遍,得到所有的white area的blob,然後對於每個blob分別得到X方向和Y方向最大和最小的四個點,這樣我們就可以估計出這四個點生成的十字,然後跟blob中所有的其他座標進行擬合,如果匹配就是檢測到,這樣做的好處還有就是可以很容易得到中心座標,而且只掃整張圖每一個畫素一遍,計算量應該是所有答案中最小的

​贊同​​新增評論

​分享

​收藏​感謝

團爸

團爸

三維數字影象處理

個人的方法:

直接二值化,提取十字影象,

然後水平方向求和,取極大值。

然後豎直方向求和,取極大值。

兩個極大值就是十字中心

遇到平頂直接以平頂中間為極值。

​贊同​​1 條評論

​分享

​收藏​感謝

呂震

呂震

派大星粉

投影求直方圖然後thresholding是比較好的做法,如果影象略有旋轉,可以先求出四個邊上條帶中心的影象座標,然後求出兩條直線方程和交點,如果抖動比較厲害建議用五到十幀的moving average。

​贊同​​新增評論

​分享

​收藏​感謝

張翔

張翔

朋友

怎麼定位手機號碼

​贊同​​新增評論

​分享

​收藏​感謝

RmCh

RmCh

computer vision

簡單,dl迴歸4個關鍵點