Java基于opencv實(shí)現(xiàn)圖像數(shù)字識(shí)別(二)—基本流程
做一個(gè)項(xiàng)目之前呢狱杰,我們應(yīng)該有一個(gè)總體把握瘦材,或者是進(jìn)度條;來(lái)一步步的督促著我們來(lái)完成這個(gè)項(xiàng)目仿畸,在我們正式開(kāi)始前呢食棕,我們先討論下流程。
我做的主要是表格中數(shù)字的識(shí)別错沽,但這個(gè)不是重點(diǎn)簿晓。重點(diǎn)是通過(guò)這個(gè)我們可以舉一反三,來(lái)實(shí)現(xiàn)我們自己的業(yè)務(wù)甥捺。
圖像的識(shí)別主要分為兩步:圖片預(yù)處理和圖像識(shí)別抢蚀;這兩步都很重要
圖像預(yù)處理:
1、 圖像灰度化镰禾;二值化
2、 圖像降噪吴侦,去除干擾線
3屋休、 圖像腐蝕、膨脹處理
4备韧、 字符分割
5劫樟、 字符歸一化
圖像識(shí)別:
1、 特征值提取
2、 訓(xùn)練
3叠艳、 測(cè)試
灰度化:
在RGB模型中奶陈,如果R=G=B時(shí),則彩色表示灰度顏色附较,其中R=G=B的值叫灰度值吃粒;因此,灰度圖像每個(gè)像素點(diǎn)只需一個(gè)字節(jié)存放灰度值(又稱強(qiáng)度值拒课、亮度值)徐勃,灰度范圍為0-255。一般常用的是加權(quán)平均法來(lái)求像素點(diǎn)的灰度值
常見(jiàn)的加權(quán)方法如下:
1:)Gray = B ; Gray = G ; Gray = R
2:)Gray = max({B , G , R})
3:)Gray = (B + G + R) / 3
4:)Gray = 0.072169 * B + 0.715160 * G + 0.212671 * R
5:)Gray = 0.11 * B + 0.59 * G + 0.3 * R
這幾種方法中早像,第一為分量法僻肖,即用RGB三個(gè)分量的某一個(gè)分量作為該點(diǎn)的灰度值;第二種方法為最大值法卢鹦,將彩色圖像中的三個(gè)分量亮度的最大值作為灰度圖的灰度值臀脏;第三種方法是將彩色圖像中的三分量求平均得到一個(gè)灰度圖;后兩種都屬于加權(quán)平均法法挨,其中第四種是opencv開(kāi)發(fā)庫(kù)所采用的一種求灰度值算法谁榜;第五種為從人體生理學(xué)角度所提出的一種求灰度值算法(人眼對(duì)綠色的敏感最高,對(duì)藍(lán)色敏感最低)
二值化:
圖像的二值化凡纳,就是將圖像上的像素點(diǎn)的灰度值設(shè)置位0或255這兩個(gè)極點(diǎn)窃植,也就是將整個(gè)圖像呈現(xiàn)出明顯的只有黑和白的視覺(jué)效果
圖像降噪:
就是處理掉一些干擾因素;
主要的降噪算法
濾波類:通過(guò)設(shè)計(jì)濾波器對(duì)圖像進(jìn)行處理荐糜。特點(diǎn)是速度往往比較快巷怜,很多卷積濾波可以借助快速傅里葉變化來(lái)加速
稀疏表達(dá)類:自然圖片之所以看起來(lái)不同于隨機(jī)噪音/人造結(jié)構(gòu),是因?yàn)榇蠹野l(fā)現(xiàn)他們總會(huì)在某一個(gè)橫型下存在稀疏表達(dá)暴氏。而我們想排除的噪音往往無(wú)法被稀疏化延塑。基于這個(gè)判別式模型答渔,用稀疏性來(lái)約束自然圖像关带,在很多逆問(wèn)題里取得了拔群的效果
外部先驗(yàn):如果從有噪音的圖片本身無(wú)法找到規(guī)律,我們也可以借助其他類似但又沒(méi)有噪音的圖片沼撕,來(lái)總結(jié)圖片具有的固有屬性宋雏。這一類方法利用的外部圖片來(lái)創(chuàng)造先驗(yàn)條件,然后用于約束需要預(yù)測(cè)的圖片务豺。最有代表性就是混合高斯模型
聚類低秩:除了可稀疏性磨总,低秩性也是自然圖片常見(jiàn)的一個(gè)特性。數(shù)學(xué)上笼沥,可稀疏表達(dá)的數(shù)據(jù)可以被認(rèn)為是在Union of low-dimensional subspaces蚪燕;而低秩數(shù)據(jù)則是直接存在于一個(gè)Low-dimensional subspace娶牌。這個(gè)更嚴(yán)格的限制往往也可以取得很好的降噪效果。
深度學(xué)習(xí)(Deep Learning):這類可以歸于外部先驗(yàn)的子類馆纳,如果說(shuō)解決逆問(wèn)題的關(guān)鍵诗良,是尋找一個(gè)好的圖像約束器,那么我們?yōu)槭裁床挥靡粋€(gè)最好的約束器厕诡?深度學(xué)習(xí)方法的精髓累榜,就在于通過(guò)大量的數(shù)據(jù),學(xué)習(xí)得到一個(gè)高復(fù)雜度(多層網(wǎng)絡(luò)結(jié)構(gòu))的圖片約束器灵嫌,從而將學(xué)習(xí)外部先驗(yàn)條件這一途徑推到極限。近期的很多這類工作葛作,都是沿著這一思路寿羞,取得了非常逆天的效果。
字符分割:就是把圖片有用的部分一個(gè)個(gè)分割下來(lái);字符分割有很多方法赂蠢,但并不是每一種方法都是萬(wàn)能的绪穆,我們需要根據(jù)自己的業(yè)務(wù)來(lái)調(diào)整;常見(jiàn)的就是投影法和連通域法
投影法:就是分析每一維上黑色像素點(diǎn)的個(gè)數(shù)(假設(shè)是二值化的圖像)虱岂,然后設(shè)置一個(gè)闕值玖院,根據(jù)這個(gè)闕值來(lái)分割圖片
圖像腐蝕、膨脹處理
腐蝕:圖像的一部分區(qū)域與指定的核進(jìn)行卷積第岖,求核的最小值并賦值給指定區(qū)域难菌。 腐蝕可以理解為圖像中高亮區(qū)域的領(lǐng)域縮小。
膨脹:圖像的一部分區(qū)域與指定的核進(jìn)行卷積蔑滓,求核的最大值并賦值給指定區(qū)域郊酒。 膨脹可以理解為圖像中高亮區(qū)域的領(lǐng)域擴(kuò)大。
字符的歸一化:
就是將分割好的圖像內(nèi)的字符歸一化到一個(gè)標(biāo)準(zhǔn)模板大屑ぁ燎窘;歸一化的理想結(jié)果就是:歸一化到標(biāo)準(zhǔn)模板大小蹄咖;傾斜校正褐健;筆畫(huà)寬度歸一化;字形歸一化澜汤。
注:
本文章參考了很多博客蚜迅,感謝;主要是跟著一個(gè)博客來(lái)實(shí)現(xiàn)的https://blog.csdn.net/ysc6688/article/category/2913009(也是基于opencv來(lái)做的银亲,只不過(guò)他是用c++實(shí)現(xiàn)的)感謝