2011-07-04 55 views
3

如何比較白色背景上的兩條黑色曲線?如何做到這一點速度?例如 此如何檢查曲線是否相似

http://i.stack.imgur.com/xUcwc.jpg

enter image description here

是相似的,但這種

enter image description here

enter image description here

第一條曲線,我會在JPanel的借鑑,二是圖像。

+0

我不明白前兩條曲線是如何相同的。也許你的意思是相同的斜率 – BlackJack

+0

對,它是相似的,我編輯 – aba

+0

神經網絡在這類任務是goos。 – Lynch

回答

4

我有個主意。不確定它是否是最好的,但不知何故,它可以評估兩個cruves的相似係數。

讓我們製作一個矩陣爲每個巡航放1爲黑色像素和0爲白色的。現在,如果我們要設置兩個cruves與矩陣ab在第一次比較,我們要建設第三矩陣c其中:

if(a[i][j] == 0 && b[i][j] == 0) 
    c[i][j] = 0; 
else if(a[i][j] == 0 || b[i][j] == 0) 
    c[i][j] = 1; 
else 
    c[i][j] = 2; 

我們將用細胞其中c[i][j] != 0S數表示,並通過細胞T計數,其中c[i][j] == 2 。最後兩個關卡如果T/S > 1 - eps相似,其中eps你應該根據你想得到的準確度選擇你自己。

+0

這正是我的想法,並打算輸出它,直到我滾動到您的文章。 Upvote給你 –

0
  1. 去除厚度。
  2. 用長筆劃替換原來的「模擬」線。
  3. 定義一組可能的「形狀」。我可以建議下一組:4條線(水平,垂直和2個dianals),4條曲線 - 在上,左,右或下側以及橢圓形中斷。
  4. 迭代每行的筆畫並對其形狀做出決定。

這個算法不是很準確。您可能需要進行如下附加分析:

  1. 如果曲線中斷太小,則形狀爲橢圓形。
  2. 如果第一個/最後一個筆畫很短並且與其餘筆畫不同,您應該忽略它。
1

對於curve1的每個點找到curve2上的最近點,計算最大或平均距離。然後交換曲線,重複並取得最大的結果。

如果您想要考慮方向 - 使用包括方向比較的修改後的距離函數。