如果我想檢測透視失真對象(例如矩形)並計算校正轉換,那麼什麼是一個好的方法?用OpenCv進行透視檢測
例如,我有很多躺在平坦表面上的照片(照片是從一個角度拍攝的),我想糾正透視並裁剪它們。
我正在考慮使用OpenCv Python綁定來鞭打一些東西。我認爲這將是一個有很多例子的「標準問題」,但我沒有找到任何相關信息。線索?
編輯:我要補充一點,我知道它可以通過使用一些Web服務來完成,但我認爲這是在做一些有用的事情的機會,同時學習OpenCV的:)
如果我想檢測透視失真對象(例如矩形)並計算校正轉換,那麼什麼是一個好的方法?用OpenCv進行透視檢測
例如,我有很多躺在平坦表面上的照片(照片是從一個角度拍攝的),我想糾正透視並裁剪它們。
我正在考慮使用OpenCv Python綁定來鞭打一些東西。我認爲這將是一個有很多例子的「標準問題」,但我沒有找到任何相關信息。線索?
編輯:我要補充一點,我知道它可以通過使用一些Web服務來完成,但我認爲這是在做一些有用的事情的機會,同時學習OpenCV的:)
你必須精確地指定你的意思檢測失真。我假設你想檢測這種紙張(或你的桌子/平坦表面)的角落,並使其與顯示器軸線平行。這可以使用cvFindHomography
和cvWarpPerspective
完成。我已經爲python寫了一些示例代碼,請注意,這些仍然是舊的綁定(儘管不應該花很長時間來更新到opencv 2.0):http://ioctl.eu/blog/2009/05/13/opencv_homography
您顯然必須做的另一件事是檢測角落。在我的示例代碼中,用戶需要使用鼠標單擊四個角。在你的情況下,很難說,因爲我需要一個例子。 OpenCV提供了幾種檢測角點的方法(參見Harris),在示例中也應該有關於如何查找矩形的代碼。如果你可以更具體一些,我可能會有更大的幫助。
UPDATE 這可能對你也很有趣:我剛剛聽到的圖像處理透視失真(例如增大該縮短)談話。它們需要大量的用戶交互,但是爲了保持順暢的翹曲而優化某些網格。 這裏是acm鏈接:http://portal.acm.org/citation.cfm?id=1778765.1778864 也許你可以從那篇論文和提到的參考文獻中得出一些想法,但是我自己還沒有讀過(還沒有)。
謝謝你的回答。我不想詳細說明,因爲我不想縮小自己的範圍,但想從別人那裏得到一些信息。檢測拐角是我想到的一種方式,但我擔心它不夠健壯。例如,很多圖片在圖片的邊界外有一個或多個角落。 – Krumelur 2010-07-01 07:42:59
我認爲zerm的答案涵蓋了一個很好的起點,所以我不會提出另一個答案,但要擴大他的方法。 正確的做法(最自然的)是找到角落。要找到角落,您可以使用可用的角落探測器。但是,您也可以找到圖像的消失點。 你的問題在這些紙張的形狀是什麼模糊。或者什麼類型的背景或什麼類型的顏色。這是一個計算機視覺問題,最好是張貼一些圖像。 – 2010-07-07 02:58:46
@Dat Chu:發佈樣本的好處。無論如何,這更像是一個「有趣的」練習,我需要一些初學者。我想我會去尋找消失點。實際上,文本可能比邊緣本身更易察覺。 – Krumelur 2010-07-29 21:09:38