2011-04-24 140 views
5

我在iPhone上使用OpenCV。我想在照片中找到數獨。 我開始了一些高斯模糊,自適應閾值,反轉圖像和擴張。 然後我做了一些findContour並畫出了曲線來隔離數獨網格。 然後我使用霍夫變換來尋找線條,我現在需要做的是找到網格的角落。數獨照片可能會以一個角度拍攝,所以我需要找到角落,以便我可以正確裁剪和扭曲圖像。OpenCV檢測角落

這是兩張不同照片的外觀。一個是非常簡單,一個在一個角度:

概率Hough

http://img96.imageshack.us/i/skrmavbild20110424kl101.png/

http://img846.imageshack.us/i/skrmavbild20110424kl101.png/

(標準霍夫是在一個評論我不能發佈兩個以上的鏈路。)

那麼,找到這些角落的最佳方法是什麼?這兩種轉換中哪一種最容易使用?

問候 萊納斯

+0

標準霍夫: http://img269.imageshack.us/i/skrmavbild20110424kl101.png/ HTTP://img808.imageshack。 us/i/skrmavbild20110424kl101.png/ – Linus 2011-04-24 08:29:07

回答

2

爲什麼不使用OpenCV的角點檢測?看看cvCornerHarris()。

或者,看看cvGoodFeaturesToTrack()。這是瑞士軍刀功能檢測,可以配置使用哈里斯角檢測器(等)。

+0

拐角探測器也會在單元格內的數字上找到拐角 – user502144 2011-04-25 00:17:14

+0

我用cvGoodFeaturesToTrack()代替。現在我有四個(有時會找到更多)角落的X和Y值。現在我需要弄清楚哪一點是topLeft,topRight等等。任何想法,我可以做到這一點?它似乎只是迭代所有點並檢查值,但當圖像不是直的時候我失敗了......想法? – Linus 2011-04-28 14:01:10

+0

在您的OpenCV發行版中查看/samples/c/squares.c。這個例子提供了一個方形探測器,它應該是一個很好的開始。很可能你必須擴展它來檢測在旋轉下觀察正方形時產生的平行四邊形。 – Throwback1986 2011-04-28 16:59:02

1

我建議以下辦法。首先,找到所有線的交點。將線條按角度劃分爲「水平」和「垂直」是有幫助的(即找到兩條主要的線條方向)。然後找到獲取點的凸包。現在你有邊界和邊界上的一些點。您可以通過分析凸包中相鄰點之間的角度來刪除後者。角落將具有約90度的角度和點的邊界 - 約180度。