圖像可能在生成、傳輸或者采集過程中夾帶了噪聲,去噪聲是圖像處理中常用的手法。通常去噪聲用濾波的方法,比如中值濾波、均值濾波。但是那樣的算法不適合用在處理字符這樣目標(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)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

