2016-11-18 95 views
1

爲了將旋轉信息分配給從圖像中提取的連接2D點(邊緣片段,請參閱下圖中的數據點以查看示例),我已經實現了PCA。我希望信息在數據輪換的情況下具有強大的可重複性,以便我可以將其用於識別目的(與1相當)。爲此,我希望主要部分(特徵向量)隨着點(+ - 180度)旋轉。主成分分析和旋轉

我的實現包括數據的平均居中。我也測試了OpenCV的實現和Python中的一個實現相同的結果。這就是爲什麼我假設我的實現是正確的,問題是方法本身。對於其他2D發行版我有很好的結果。儘管如此,對於這些特定的數據點,它似乎並不奏效。

我已經完成了所有測試,並且沒有標準化到標準偏差(即,將x和y值的數據除以它們的標準偏差)。

這裏是我的結果的數據的不同的旋轉(從圖像中提取的):

PCA Results

如可以看到的,該方法不允許找到一個可再現的轉動。數據受量化影響(因爲它是從圖像中提取的),這就是爲什麼我認爲這是問題的根源。因此我重複了添加隨機噪聲的實驗(第4列)。可以看出,這似乎不成問題。

我沒有確切的想法如何解釋顯示的效果。我注意到,主軸的總體方向分別在第一行和第二行看起來相似。我認爲這意味着什麼,但究竟是什麼?我能以某種方式解決這個問題,或者可能有更好的方法來解決這個問題嗎?由於一些預處理,可以假設沒有異常值。

感謝您的幫助!

+1

和第二列總是有相同的旋轉。這看起來像一個bug,就像你總是顯示第一個旋轉一樣(即使你計算了兩個)。而且,PCA對建模這種數據形狀也不好。 – Noidea

+0

每列顯示相同的數據/旋轉。這裏分析了四種不同的旋轉。不同之處在於第一行顯示沒有標準化的結果,第二行顯示標準化的結果。這不是一個錯誤,而是用於分析規範化效果的實驗設置。請注意,我收到與PCA的外部實現相同的結果 - 我認爲這表明實施中沒有錯誤。 – Markus

回答

0

對於symmetrycal的形狀像你顯示你可以嘗試對稱探測器這樣的:https://github.com/subokita/Sandbox/tree/master/FSD

中的實例給它的結果是這樣的:

enter image description here

enter image description here

在搜索結果中,第一個
+0

感謝您的提示。不幸的是,我的數據並不總是對稱的。也許這是影響結果的對稱性強。因爲對於我測試過的其他片段,這些片段不是對稱的,PCA的結果在旋轉時非常穩定。 – Markus