2010-05-02 62 views
10

所以我想能夠識別圖像中的模式(例如數字4),我一直在閱讀有關不同的算法,我真的很想使用最近鄰算法,看起來很簡單,我也明白它基於這個教程: http://people.revoledu.com/kardi/tutorial/KNN/KNN_Numerical-example.html 問題是,雖然我理解如何使用它來填充缺失的數據集,但我不明白我怎樣才能將它用作模式識別工具來瞄準圖像形狀識別。請問有人可以告訴我們該算法如何適用於模式識別?我已經看過使用OpenCV的教程,但是我不想使用這個庫,因爲我有能力自己進行預處理,而且我似乎很傻,我只是爲了一個簡單的最近鄰居而實現這個庫算法。使用最近鄰算法進行圖像模式識別

回答

9

你簡單地(簡單地?)必須爲你的數據定義一個「距離」的度量。

假設你已經將小圖像中的大圖像分割出來,每個小圖像對應於你想分類的文本字符。讓我們假設我們正在處理數字單色圖像,因此每個圖像都被表示爲(例如)0-255整數範圍(亮度)中的值(像素)的矩形矩陣。它也被假設(NN是一個「監督分類算法」),你有很多已經很好分類的圖像(你的訓練集)。

給定一個新的小圖像,您必須定義兩幅圖像之間的距離,以便選擇最接近的訓練集,並將其「標籤」選作識別的文本字符。

一種天真的方法是取像素的差異(例如平方和)。但是這個距離度量對翻譯(以及旋轉和縮放)很敏感,我們通常不希望這樣做。另一種方法是計算傅里葉變換的模數,這是平移不變的(但這還不夠)。從這裏開始你就可以開始 - 並且明白這個問題很困難,而且這種分類需要大量的工作來完成可接受的工作。

2

我使用了K-Nearest-Neighbour算法在攝像機的實時姿態識別中進行姿態識別。我會建議你使用Matlab來訓練和測試數據集,因爲它具有PRToolbox用於此目的,並且有很多幫助和示例。 最重要的是你正確地選擇了能夠強有力地表示每個類的功能。 一旦你有了特徵(這將是一組值,如顏色,面積,位置......)和類,你需要樣本來訓練分類器(例如KNN)。與分類器一樣重要的是如何選擇培訓樣本。那麼你將不得不測試分類器。

嘗試使用不同的訓練集,不同的特徵,不同的分類器,因爲KNN不適合您的數據類型。

我希望你覺得這個很有用。