2009-10-02 69 views
3

我正在開發Visual Studio平臺上的手寫識別和相關內容,並使用openCV庫。輸入是以二進制掃描.tif圖像的形式。識別出手寫的文字

目前,我進入了一個障礙,試圖找出一種方式來識別被敲出來的單詞,就像用直線/曲線敲出(取消)單詞一樣。我不打算做個人角色識別,這會浪費計算能力。

有什麼方法可以用另一種方式識別這種情況嗎?

以下是我發現的兩個想法,但我不確定 - 1>使用像< 0 0 0,1 1 1,0 0 0>的掩碼,這將有助於查找所有水平線...但這將是一個非常大的假設。線條可以是波浪形的,並且可以是任何方向。

2>鏤空輸入並查找交點。這會給我不少交集 - 包括由於用來排除單詞的線而發生的交集。使用一些近似像最小二乘等我可以得到一個近似線。但是在許多地方都會出現交叉點的問題 - 例如。 'b'中的2個交點等。

有什麼建議嗎?

+0

通過它的線條波浪文本,呃?試圖擊敗CAPTCHA? :) – endolith 2009-10-14 21:23:50

回答

0

爲什麼不加工輪廓?您可以利用Poly(Ten-Chin)近似並僅分析由鏈重建產生的少數向量。如果你想做更多的事情,然後使用混合金字塔/輪廓方案,以獲得具有不同細節水平的向量近似值,從粗分辨率開始到最好。

當您獲得「合理」數量的獨特細分時,停止細化,應用標準化(請參閱Moments-Hu's Moments)對您的樣本進行指紋分析,最後採用強大的分類系統。

我建議你看看OpenCV套件中的ML(機器學習)部分,以便更好地參考後一部分。對於柵格數據,哈爾的小波+隱馬爾可夫模型效果很好,對於矢量而言,也許你可以使用較難設置的東西(SOM,KNN,KMeans)。

0

我會去個別字符識別。這可能會浪費計算能力,但它可以帶來最好的結果。只需找到一種方法,從字符識別中獲取價值,以表明角色被識別的性能如何,然後爲不是角色的事物找到閾值。我認爲取消會以某種方式破壞字符,這種方式會使識別遇到問題,並可能使用這個事實來查找被取消的字符。爲了改善結果,在文本的同一區域查找許多被嚴重識別的字符,通常整個字被取消,因此不良識別結果會聚集在一起。

如果您的表現非常糟糕,最終您可以隨時回來並改進算法。