2009-02-22 76 views
1

我設法將每個字符存儲在位圖中,並且正在尋找一種方法來快速確定它是哪個字符。OCR:如何比較圖像,排序不匹配並快速執行此操作?

因此,我將把每個可能的字符存儲到1和0的數組中,並將它們與我剛抓住的位圖數組進行比較。

我可以做簡單的檢查,比較我得到了多少黑色像素,比較尺寸等,但所有這些檢查都很慢(只是猜測..)。

所以我在尋找的是一種方法,它從底部到頂部或者隨機地將每個像素進行谷底處理,將數組與一組數組進行比較,並將其排列成不匹配,直到只剩下一個數組。但我怎麼能實現呢?

感謝您的幫助。

斯文

+0

您是否正在嘗試僅使用計算機生成的帶別名文本的OCR位圖? 如果你是,只需將每個位圖散列爲一個blob並使用一個blob字典。 否則,你試圖做的沒有任何意義,因爲掃描引入了許多文物...... – 2009-02-22 13:46:05

+0

它是計算機生成的別名文本。背景不同,但文字總是具有相同的顏色。 – Sven 2009-02-22 14:01:08

回答

2

在OCR世界這是非常難得,你碰上targetresource和你原來的比較資源之間的「絕配」。

其實它是科學的一個巨大的領域,但在這裏,對這個問題的一個很好的論文應該給你一些基本知識: http://www.discover.uottawa.ca/~qchen/my_papers/master_thesis.pdf

注意,像這樣的算法是非常數學沉重,在現在這樣的優化標準x86 CPU。

如果你正在尋找一個完美的匹配(我的意思是,真正完美,逐字節),並且你想實現這個快速和容易,我建議做一個「快速跳過明顯的不匹配」 -kinda算法 - 是這樣的:

1)比較數組的大小,如果不同,它不是你找什麼

2)比較每個位圖

3的散列值)比較每個位/字節一個接一個,只要你看到一個區別,這不是你要找的

4)贏了,你找到了一場比賽:)

這是非常緩慢的,取決於你想達到什麼,但容易實現,它會工作。所以適用於類似原型的應用程序。正如我所說,OCR(和所有其他形式的數字信號處理)是研究一個巨大的領域,所以它不是你能指望別人來教你快速forumpost,可悲的是:(

好運

[編輯]看看你的OQ中的評論,我會說散列表/字典數據結構是最快的,或者是二叉搜索樹。兩者都非常依賴你的散列鍵生成器:)

[編輯2(xD)]「它是由計算機生成的別名文本。背景不同,但文本總是具有相同的顏色。」非常重要的信息:P文本/位圖的大小是否總是相同?我建議要麼在你丟棄預設背景顏色的地方實現你自己的散列算法,以便散列值只取決於文本的顏色(以及它的形狀)或者簡單地重寫你的目標中的所有背景像素與原始圖像顏色相同(或者只是將原始背景設置爲目標圖像的背景?請再次確定您在這裏與哪些數據進行對比 - 需要更多信息:))。