在bw圖像上檢測到物體的形狀。該物體呈黑色連續形狀,背景爲白色。 我們使用PCA(http://docs.opencv.org/3.1.0/d1/dee/tutorial_introduction_to_pca.html)獲取對象方向並對齊對象。目前,形狀本身(輪廓上的點)是opencv PCA實現的輸入。這通常工作得很好。但時不時在物體邊緣會有小的污垢,導致形狀在污垢周圍傳播。這會導致更多的點和更多的重量在一邊,略微轉動的對象。OpenCV - BW圖像上的PCA分析 - 區域與形狀 - 是否已有實現?
想法:我們使用物體的區域作爲PCA分析的輸入,而不是輪廓。問題在那裏,檢查所有點是否在輪廓內,然後將它們用於PCA會降低應用程序的速度。這部分將會慢52352倍。
新方法:我們在圖像中隨機抽取點,檢查它們是否在形狀內,如果是,請將它們用於我們的PCA。我們必須看看能否從這種方法中獲得所需的一致質量。
opencv中是否已經有類似的實現使用區域而不是形狀? 另一種方法是將網格放置在對象上,並使用對象內部的網格點作爲PCA。 有沒有類似的東西可以使用,或者是否需要快速實現類似的東西?
尋找物體周圍的直線不是一種選擇。
您可以共享任何示例圖像? –
代碼的相關部分 – Miki
獲取輪廓的傅里葉描述符,將頻率高於選定閾值的頻率分量設置爲零,然後進行傅里葉逆變換。這樣你可以得到一個平滑的輪廓版本,你可以應用PCA。看[這裏](http://demonstrations.wolfram.com/FourierDescriptors/)一個很好的演示。 – dhanushka