圖像可能在生成、傳輸或者采集過程中夾帶了噪聲,去噪聲是圖像處理中常用的手法。通常去噪聲用濾波的方法,比如中值濾波、均值濾波。但是那樣的算法不適合用在處理字符這樣目標(biāo)狹長的圖像中,因?yàn)樵跒V波的過程中很有可能會去掉字符本身的像素。
一個(gè)采用的是去除雜點(diǎn)的方法來進(jìn)行去噪聲處理的。具體算法如下:掃描整個(gè)圖像,當(dāng)發(fā)現(xiàn)一個(gè)黑色點(diǎn)的時(shí)候,就考察和該黑色點(diǎn)間接或者直接相連接的黑色點(diǎn)的個(gè)數(shù)有多少,如果大于一定的值,那就說明該點(diǎn)不是離散點(diǎn),否則就是離散點(diǎn),把它去掉。在考察相連的黑色點(diǎn)的時(shí)候用的是遞歸的方法。此處,我簡單的用python實(shí)現(xiàn)了,大家可以參考以下。
#coding=utf-8 """ 造物奇跡QQ2737499951 """ import cv2 import numpy as np from matplotlib import pyplot as plt from PIL import Image,ImageEnhance,ImageFilter img_name = 'test.jpg' #去除干擾線 im = Image.open(img_name) #圖像二值化 enhancer = ImageEnhance.Contrast(im) im = enhancer.enhance(2) im = im.convert('1') data = im.getdata() w,h = im.size #im.show() black_point = 0 for x in xrange(1,w-1): for y in xrange(1,h-1): mid_pixel = data[w*y+x] #中央像素點(diǎn)像素值 if mid_pixel == 0: #找出上下左右四個(gè)方向像素點(diǎn)像素值 top_pixel = data[w*(y-1)+x] left_pixel = data[w*y+(x-1)] down_pixel = data[w*(y+1)+x] right_pixel = data[w*y+(x+1)] #判斷上下左右的黑色像素點(diǎn)總個(gè)數(shù) if top_pixel == 0: black_point += 1 if left_pixel == 0: black_point += 1 if down_pixel == 0: black_point += 1 if right_pixel == 0: black_point += 1 if black_point >= 3: im.putpixel((x,y),0) #print black_point black_point = 0 im.show()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
