摳字調(diào)研報告

摳字調(diào)研報告

1.需求分析

摳字的需求:把紙上的文字摳出來以透明背景的png的格式保存下來。這個png的圖片有兩個用處:1川无、保存到本地相冊蚜厉;2届良、作為水印添加到另一張圖片上,這個水印png可以拉伸亚脆、拖動改變位置

需求分解

  1. 把紙上的文字保存為黑白圖片
  2. 把該圖片背景色改為透明

2.實現(xiàn)文字轉(zhuǎn)墨跡圖片

  1. iOS平臺處理圖片文字相關庫OpenCVTesseract的了解

  2. OpenCV有一個imgproc模塊,是用來圖像處理相關,包括線性和非線性圖像濾波如输、幾何圖像轉(zhuǎn)換、顏色空間轉(zhuǎn)換央勒、直方圖等等不见。確認使用OpenCV來處理該功能

  3. 利用opencv對圖片進行處理,步驟大致如下

    1. 圖像彩色轉(zhuǎn)灰度
    2. 灰度圖像設置閾值后二值化即變成完全黑白
    3. 去除多余的噪點
    

    3.1 將UIImage對象轉(zhuǎn)成轉(zhuǎn)成cv::Mat
    3.2 把圖片放大
    3.3 轉(zhuǎn)化成灰度圖

    CV_EXPORTS_W void cvtColor( InputArray src,
                                OutputArray dst,
                                int code,
                                int dstCn = 0 );
    
    在opencv中崔步,其默認的顏色制式排列是BGR而非RGB稳吮。所以對于24位顏色圖像來說,前8-bit是藍色井濒,中間8-bit是綠色灶似,最后8-bit是紅色列林。
    code=COLOR_BGR2GRAY
    

    3.4 二值化轉(zhuǎn)為完全黑白
    OpenCV提供了兩個函數(shù),第一個是普通的Threshold函數(shù):

    CV_EXPORTS_W double threshold(  InputArray src, 
                                        OutputArray dst,
                                        double thresh, 
                                        double maxval, 
                                        int type );
    

    傳入圖像酪惭,傳出圖像希痴,閾值,填充的最深顏色撞蚕,填充方法(達到閾值就填充最深顏色或相反)润梯,就可以根據(jù)每個像素的灰度值與閾值進行比較來決定填充的值為0或是最深。

    定閾值的方法雖然可以對一張圖像通過調(diào)整達到最優(yōu)的效果甥厦,但是對于不同光照條件下拍攝出來的照片纺铭,因為整體亮度的不同,定閾值顯然無法適應所有的情況刀疙。

    所以就有了第二種函數(shù)舶赔,adaptiveThreshold,除了傳入上面的這些參數(shù)外谦秧,增加了三個重要的參數(shù)

    CV_EXPORTS_W void adaptiveThreshold(InputArray src, 
                                            OutputArray dst,
                                            double maxValue,
                                            int adaptiveMethod,
                                            int thresholdType,
                                            int blockSize, double C );
    

    blockSize:對某個像素周圍進行采樣的范圍竟纳。
    adaptiveMethod:根據(jù)上面的范圍求閾值的方法,有兩種:

    mean平均疚鲤,簡單地取采樣范圍內(nèi)的平均值作為閾值锥累。
    gaussian高斯,以高斯函數(shù)為基礎集歇,簡單地說就是近的地方權重更高桶略、遠的地方權重低,來求閾值诲宇。
    

    C:求出來的閾值減去的常量际歼。

    3.5 去噪點

    去噪的目的是把圖像中的獨立的點去掉。去噪的方法是腐蝕姑蓝,跟字面意思一樣鹅心,就是縮小圖案的范圍,當圖像的范圍本身就很小時(噪點就是一個個這樣的獨立點)纺荧,縮小后自然就不見了旭愧。

    可以想到,在去噪后宙暇,部分筆畫也隨之縮小甚至細的地方會直接消失输枯,所以腐蝕之后要再進行一步膨脹,即把圖案的邊緣擴大客给。

    因為噪點已經(jīng)消失,所以也不會因擴大而回來肢簿,但筆畫依然存在靶剑,就會膨脹而得到彌補蜻拨,也順便可以補一下殘缺的地方。

    原理大概就是這樣桩引,但是由于OpenCV的這兩個操作針對的是圖像中的亮點(白色的地方被認為是亮點)缎讼,而我們的表格又是白底黑字的,實際上黑色的部分是我們想要處理的部分坑匠,所以我將這兩步交換了血崭,相當于是對黑色的地方先腐蝕后膨脹。

    代碼如下

    //膨脹一次
    cv::Mat dilateelement = cv::getStructuringElement(cv::MORPH_CROSS, cv::Size(8,8));
    cv::Mat dilate1;
    dilate(binary, dilate1, dilateelement);
    
     //輕度腐蝕一次,去除噪點
     cv::Mat element3 = cv::getStructuringElement(cv::MORPH_CROSS, cv::Size(8,8));
     cv::Mat erode11;
     erode(dilate1, erode11, element3);
    

參考網(wǎng)站

http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html
http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/erosion_dilatation/erosion_dilatation.html#morphology-1
https://www.viseator.com/2016/11/15/OpenCV%E5%A4%84%E7%90%86%E6%8B%8D%E7%85%A7%E8%A1%A8%E6%A0%BC%EF%BC%88%E4%B8%80%EF%BC%89/

3.把圖片修改為透明顏色

    遍歷圖片的所有像素,把是白色或者接近白色的像素改成透明色。

    將像素點轉(zhuǎn)成子節(jié)數(shù)組來表示---第一個表示透明度即`ARGB`這種表示方式楞黄。

4.總結(jié)

摳字功能主要用到了OpenCV Core Image谷市,我對這兩個庫都是基礎了解,很多功能都在網(wǎng)上查找的躬审。實現(xiàn)該功能最困難的地方就是在照片腐蝕膨脹那,參數(shù)配置做了大量的測試,有些圖片處理后噪點還是很多月匣,有些又處理過了,需要在這中間找到一些平衡奋姿。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锄开,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子称诗,更是在濱河造成了極大的恐慌萍悴,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粪狼,死亡現(xiàn)場離奇詭異退腥,居然都是意外死亡,警方通過查閱死者的電腦和手機再榄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門狡刘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人困鸥,你說我怎么就攤上這事嗅蔬。” “怎么了疾就?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵澜术,是天一觀的道長。 經(jīng)常有香客問我猬腰,道長鸟废,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任姑荷,我火速辦了婚禮盒延,結(jié)果婚禮上缩擂,老公的妹妹穿的比我還像新娘。我一直安慰自己添寺,他們只是感情好胯盯,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著计露,像睡著了一般博脑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上票罐,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天叉趣,我揣著相機與錄音,去河邊找鬼胶坠。 笑死君账,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的沈善。 我是一名探鬼主播乡数,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼闻牡!你這毒婦竟也來了净赴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤罩润,失蹤者是張志新(化名)和其女友劉穎玖翅,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體割以,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡金度,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了严沥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猜极。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖消玄,靈堂內(nèi)的尸體忽然破棺而出跟伏,到底是詐尸還是另有隱情,我是刑警寧澤翩瓜,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布受扳,位于F島的核電站,受9級特大地震影響兔跌,放射性物質(zhì)發(fā)生泄漏勘高。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望华望。 院中可真熱鬧层亿,春花似錦、人聲如沸立美。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽建蹄。三九已至,卻和暖如春裕偿,著一層夾襖步出監(jiān)牢的瞬間洞慎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工嘿棘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留劲腿,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓鸟妙,卻偏偏與公主長得像焦人,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子重父,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容