日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二值图像的噪点去除算法

發布時間:2023/12/29 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二值图像的噪点去除算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TOC

二值圖像的噪點去除算法

眾所周知,二值圖(前景黑色,背景白色) 由于低熵特性,能玩的花樣很少, 很多圖像處理算法難以實施在二值圖上, 同時由于大部分二值圖(傳真,商業掃描文檔),存在很多噪音, 噪音去除算法是大家比較感興趣的, 尤其是涉及到OCR識別。

噪音樣例

以下是兩個樣例, 一個噪音較多,一個噪音較少, 注意噪音并不是單點,也包括halftone算法造成的灰度轉二值噪音。

--------------------------------------------------------------------

如何處理

大家第一感覺是通過形態學開閉運算解決, 但并沒有什么卵用, 哦, 不,有用,但會將有效內容去掉,所以當然是不行的, 而且開閉運算需要兩次filter,性能較差。

下面是解決方案, 直接上代碼, 多快好省,效果好, 由于太簡單, 直接看代碼就好了, 算法邏輯就不多說了。
稍微說下, 此算法核心目的是去除噪點同時盡量不丟失有效信息,切記。

//去除二值圖噪音, data:圖像數據(單通道二值黑白,0黑,0xff白), byteLine:每行字節數, width:寬度,height:高度 int _removeNoise(unsigned char* data, int byteLine, int width, int height) {using namespace cv;cv::Size sz(width, height);Mat img(sz, CV_8UC1, data, byteLine);Mat1b imgTmp = img.clone();cv::morphologyEx(imgTmp, imgTmp, cv::MORPH_OPEN, cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)));imgTmp = 0xff - imgTmp ;Mat kernel = Mat::ones(5, 5, CV_32F) / (float)(25);filter2D(imgTmp , imgTmp , -1, kernel);imgTmp = 0xff - imgTmp ;threshold(imgTmp , imgTmp , 220, 255, THRESH_BINARY);img = img | imgTmp ;return 0; }

上述代碼去除了噪音,同時很好的保留了有效文字信息。

處理結果

--------------------------------------------------------------------

其他說明

上述代碼大家應該都能看懂,注意如果噪音過于密集, 請自行調整代碼中參數。 最后一個圖包含用于OCR的分塊處理, 下次有時間另外開貼寫。

總結

以上是生活随笔為你收集整理的二值图像的噪点去除算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。