2012-02-21 184 views
3

我已經構建了一個具有網絡攝像頭和功能匹配的成像系統,因此當我移動相機時;我可以跟蹤相機的動作。除了網絡攝像頭幀作爲輸入外,我正在做類似here的操作。噪聲圖像中的特徵檢測

它對於「好」圖像非常有用,但是在真正低光照下拍攝圖像時會出現很多噪點(相機高增益),並且會因特徵檢測和匹配而混亂。基本上,它沒有檢測到任何好的功能,當它發生時,它不能在幀之間正確匹配它們。

有沒有人知道一個很好的解決方案呢?還有哪些其他方法用於查找和匹配功能?

這裏有兩個例子圖像具有非常低的特點:

Frame 1

Frame 2

+0

你能張貼一張圖片顯示我們在這裏說的「低光」嗎? – mevatron 2012-02-22 16:56:44

+0

添加圖像。非常低的對比度 – Jason 2012-02-23 22:52:47

+0

我不明白,我們應該在圖像中看到什麼? – jlengrand 2012-02-23 22:59:24

回答

3

我認爲phase correlation將是這裏最好的選擇。它旨在告訴您兩幅圖像之間的相移(即平移)。它比特徵檢測更有彈性(但不是免疫),因爲它工作在頻率空間;而特徵檢測器在空間上運行。另一個好處是,與特徵檢測方法相比,它是非常快速的。我在OpenCV trunk中有一個子像素精確的實現,位於here

然而,除了中間的摺痕之外,你的圖像幾乎是「無特徵的」,所以即使是相位相關也可能會有一些麻煩。想想它就像試圖在暴風雪中檢測翻譯一樣。如果你能看到的只是白色的,你根本不知道你有翻譯,因此術語whiteout。在你的情況下,該算法可能遭受「綠燈」:)

你可以調整相機設置,以在低光照條件下更好地工作。你有沒有完全打開虹膜?你能忍受較低的framerate?設置較長的曝光時間將允許相機收集更多光線,從而以增加運動模糊爲代價爲您提供更多功能。或者,如果低照度是您的默認環境,您可能需要像紅外相機那樣爲此設計一些東西,但這些可能會很昂貴。除此之外,一個大鏡頭和長時間曝光是你的朋友:)

Histogram equalization可能是在改善圖像對比度感興趣。但是,有時它可能會增加噪音。 OpenCV具有稱爲equalizeHist的全局直方圖均衡功能。對於更加本地化的實現,您需要查看Contrast Limited Adaptive Histogram Equalization或簡稱爲CLAHEHere是一篇很好的文章。 This頁面有一些很好的例子和一些代碼。

+0

昨天我正在下載最新的OpenCV SVN,只是爲了你寫的功能。 (謝謝!:)) openCV的安裝很好,但是在x64體系結構上運行它有很多障礙 - 其中大部分都是用cMake查找並使用正確的文件。 但是非常感謝!我會盡快嘗試。 – Jason 2012-02-24 21:58:24

+0

我想知道你是否可以幫助我。我正在使用phaseCorrelation代碼在openCV中工作,我試圖找到找回矩陣C的方法 - 我想看看C的外觀。 我已將此代碼添加到您的方法中(_result現在是函數參數): _result.create(C.size(),C.type()); \t Mat result = _result.getMat(); \t uchar * data = result.ptr (); (int i = 0; i Jason 2012-03-05 21:25:31