python 图片去噪的方法示例

图像可能在生成、传输或者采集过程中夹带了噪声,去噪声是图像处理中常用的手法。通常去噪声用滤波的方法,比如中值滤波、均值滤波。但是那样的算法不适合用在处理字符这样目标狭长的图像中,因为在滤波的过程中很有可能会去掉字符本身的像素。

一个采用的是去除杂点的方法来进行去噪声处理的。具体算法如下:扫描整个图像,当发现一个黑色点的时候,就考察和该黑色点间接或者直接相连接的黑色点的个数有多少,如果大于一定的值,那就说明该点不是离散点,否则就是离散点,把它去掉。在考察相连的黑色点的时候用的是递归的方法。此处,我简单的用python实现了,大家可以参考以下。

#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] #中央像素点像素值
    if mid_pixel == 0: #找出上下左右四个方向像素点像素值
      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)]

      #判断上下左右的黑色像素点总个数
      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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)

    在matlab中,存在执行直接得函数来添加高斯噪声和椒盐噪声.Python-OpenCV中虽然不存在直接得函数,但是很容易使用相关的函数来实现. 代码: import numpy as np import random import cv2 def sp_noise(image,prob): ''' 添加椒盐噪声 prob:噪声比例 ''' output = np.zeros(image.shape,np.uint8) thres = 1 - prob for i in range(image.

  • python 图片去噪的方法示例

    图像可能在生成.传输或者采集过程中夹带了噪声,去噪声是图像处理中常用的手法.通常去噪声用滤波的方法,比如中值滤波.均值滤波.但是那样的算法不适合用在处理字符这样目标狭长的图像中,因为在滤波的过程中很有可能会去掉字符本身的像素. 一个采用的是去除杂点的方法来进行去噪声处理的.具体算法如下:扫描整个图像,当发现一个黑色点的时候,就考察和该黑色点间接或者直接相连接的黑色点的个数有多少,如果大于一定的值,那就说明该点不是离散点,否则就是离散点,把它去掉.在考察相连的黑色点的时候用的是递归的方法.此处,我

  • Python面向对象编程repr方法示例详解

    目录 为什么要讲 __repr__ 重写 __repr__ 方法 str() 和 repr() 的区别 为什么要讲 __repr__ 在 Python 中,直接 print 一个实例对象,默认是输出这个对象由哪个类创建的对象,以及在内存中的地址(十六进制表示) 假设在开发调试过程中,希望使用 print 实例对象时,输出自定义内容,就可以用 __repr__ 方法了 或者通过 repr() 调用对象也会返回 __repr__ 方法返回的值 是不是似曾相识....没错..和 __str__ 一样的

  • Python实现获取本地及远程图片大小的方法示例

    本文实例讲述了Python实现获取本地及远程图片大小的方法.分享给大家供大家参考,具体如下: 了解过Pillow的都知道,Pillow是一个非常强大的图片处理器,这篇文章主要记录一下Pillow对图片信息的获取: 安装Pillow pip install pillow 本地图片 # -*- coding:utf-8 -*- #! python2 import os from PIL import Image path = os.path.join(os.getcwd(),"23.png"

  • Python中list初始化方法示例

    本文实例讲述了Python中list初始化方法.分享给大家供大家参考,具体如下: 1.基本方法. lst = [1, 2, 3, 4, 5] 2.初始化连续数字. >>> lst = [n for n in range(5, 10)] >>> print(lst) [5, 6, 7, 8, 9] 3.初始化n个相同值.(两种方式) >>> lst = ['x' for n in range(5)] >>> print(lst) ['x

  • Python2比较当前图片跟图库哪个图片相似的方法示例

    本文实例讲述了Python2比较当前图片跟图库哪个图片相似的方法.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- ''' Created on 2019年7月22日 ''' from selenium import webdriver from time import sleep from PIL import Image import random import os import cv2 import numpy as np url ="URL"

  • Python创建对称矩阵的方法示例【基于numpy模块】

    本文实例讲述了Python创建对称矩阵的方法.分享给大家供大家参考,具体如下: 对称(实对称)矩阵也即: step 1:创建一个方阵 >>> import numpy as np >>> X = np.random.rand(5**2).reshape(5, 5) >>> X array([[ 0.26984148, 0.25408384, 0.12428487, 0.0194565 , 0.91287708], [ 0.31837673, 0.354

  • Python连接phoenix的方法示例

    本文实例讲述了Python连接phoenix的方法.分享给大家供大家参考,具体如下: phoenix是由saleforce.com开源的一个项目,后又捐给了Apache.它相当于一个Java中间件,帮助开发者,像使用jdbc访问关系型数据库一些,访问NoSql数据库HBase.可以把Phoenix只看成一种代替HBase的语法的一个工具.虽然可以用java可以用jdbc来连接phoenix,然后操作HBase,但是在生产环境中,不可以用在OLTP中. Phoenix官网:http://phoen

  • Python延时操作实现方法示例

    本文实例讲述了Python延时操作实现方法.分享给大家供大家参考,具体如下: 在日常的开发中,往往会遇到这样的需求,需要某一个函数在一段时间之后才执行以达到某种特定的效果.此时,我们就需要某种机制,使一个函数延后执行.接下来简单介绍一下两种实现此类效果的方法: sched import sched,time def func(a): print time.time(),"Hello Sched!",a print time.time() s = sched.scheduler(time

  • Python操作word常见方法示例【win32com与docx模块】

    本文实例讲述了Python操作word常见方法.分享给大家供大家参考,具体如下: 这里介绍两种方式: 使用win32com 使用docx 1. 使用win32com扩展包 只对windows平台有效 代码: # coding=utf-8 import win32com from win32com.client import Dispatch, DispatchEx word = Dispatch('Word.Application') # 打开word应用程序 # word = Dispatch

  • Python走楼梯问题解决方法示例

    本文实例讲述了Python走楼梯问题解决方法.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #!python3 ''' 下楼问题.从楼上走到楼下共有h个台阶,每一步有两种走法: 走1个台阶,走2个台阶,问有多少可走的方案.用递归思想和迭代思想编程 ''' ''' 分析:问题可以从最后一次是走1步还是两步,反向考虑 ''' def take_stairs_recursive(n): if n == 1: return 1 elif n == 2: return 2

随机推荐