python+opencv图像滤波

python+opencv图像滤波

环境:(ubuntu18.04LTS)Anaconda3+python3.7.4+opencv3.4.2

图像卷积滤波

图像滤波等效于对图像的每个像素进行卷积运算,原函数为图像像素,卷积核为滤波器,计算结果为滤波后图像,如下图所示。
img
常用的滤波器包括:

  • 线性滤波器

    均值滤波:滤波结果=原像素邻域内所有像素的平均值

    高斯滤波:滤波结果=原像素邻域内所有像素的加权平均值

  • 非线性滤波器

    中值滤波:滤波结果=原像素邻域内所有像素的中值(可以有效去除椒盐噪声)

Python语言实现过程

"""
Greated on Mon Nov.24 2019
Test - different filters
@author: Lihoon
"""
import cv2 as cv

ksize = (5, 5)
#read source image and check
filename = "/home/lihoon/code/pycharm/lena.jpg"
img = cv.imread(filename)
if img is None:
	print("Image read error!")
else:
	print("Image read successful!")
	
#show source image
cv.imshow('source', img)

#box filter
box = cv.boxFilter(img, -1, ksize)
cv.imshow('box filter', box)

#mean filter
mean = cv.blur(img, ksize)
cv.imshow('mean filter',mean)

#median filter
median = cv.medianBlur(img, 5)
cv.imshow('median filter', median)

#Gaussian filter
gaussian = cv.GaussianBlur(img, ksize, 0, 0)
cv.imshow('Gaussion filter', gaussian)

cv.waitKey()
cv.destroyAllWindows()
  • lena图片可以参考以下地址:
    链接: https://pan.baidu.com/s/1ONFBAFxp5kxXp8zZLhjRSQ 密码: 2w86
  • 执行上述代码,分别得到不同滤波器处理后的图像,对比如下:
    可以发现,盒式滤波结果与均值滤波结果近似,采用5X5的算子滤波后,图片较为模糊;采用同样大小滤波算子的中值滤波与高斯滤波模糊程度较小,且后二者滤波结果近似。
    × Result of box filter
    python+opencv图像滤波_第1张图片× Result of mean filter
    python+opencv图像滤波_第2张图片× Result of median filter
    python+opencv图像滤波_第3张图片× Result of Gaussian filter
    python+opencv图像滤波_第4张图片

你可能感兴趣的:(OpenCV,python,opencv,图像滤波)