Python实现中值滤波与椒盐噪声去除的图片增强方法

Leo
Leo
发布时间:2026-10-13 | 6人浏览过
原创

本文介绍利用Python进行图像预处理的技术,重点讲解中值滤波器在去除椒盐噪声中的应用。通过具体代码示例,展示如何对灰度图像进行中值滤波处理,包括不同核尺寸下的效果对比,旨在提升图像清晰度以辅助后续的文字识别任务。

图像预处理与中值滤波原理

受光照、气候及成像设备等多种因素影响,灰度化后的图像往往伴随噪声与模糊干扰,这直接影响了后续文字识别的准确性。因此,对图像进行增强处理是必要的步骤。在图片预处理流程中,椒盐噪声去除是关键环节,通常采用中值滤波器来实现,其处理效果显著。中值滤波器属于非线性滤波器,其核心原理是将数字图像中某点的值替换为其邻域内各点值的中位数。

以计算点[i,j]的灰度值为例,具体步骤如下:

首先,将[i,j]邻域内的像素点按灰度值大小进行排序;

其次,取排序后像素集合的中间值作为点[i,j]的新灰度值。中值滤波技术能够有效抑制噪声干扰。

以下是具体的实现代码,供参考:

Python中值滤波代码实现


import numpy as np
import cv2
import tensorflow as tf
from PIL import Image
import os
import scipy.signal as signal

input_images = np.zeros((300, 300))
filename = "D:\字母图库\F\P80627-112853.jpg"
print(filename)
img = Image.open(filename).resize((300, 300)).convert('L')
width = img.size[0]
height = img.size[1]

for h in range(0, height):
  for w in range(0, width):
    if img.getpixel((h, w)) < 128:
      input_images[w, h] = 0
    else:
      input_images[w, h] = 1
cv2.imshow("test1111", input_images)

data = signal.medfilt2d(np.array(img), kernel_size=3) # 二维中值滤波
for h in range(0, height):
  for w in range(0, width):
    if data[h][w] < 128:
      input_images[w, h] = 0
    else:
      input_images[w, h] = 1
cv2.imshow("test2222", input_images)

data = signal.medfilt2d(np.array(img), kernel_size=5) # 二维中值滤波
for h in range(0, height):
  for w in range(0, width):
    if data[h][w] < 128:
      input_images[w, h] = 0
    else:
      input_images[w, h] = 1
cv2.imshow("test3333", input_images)
cv2.waitKey(0)

以上关于Python中值滤波、椒盐去噪及图片增强的实例分享完毕,希望能为读者提供帮助。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表