美文网首页
图像平滑处理

图像平滑处理

作者: Tsukinousag | 来源:发表于2021-10-13 08:57 被阅读0次

图像平滑处理(Smoothing Images)
图像模糊处理(Blurring Images)
图像滤波(Image Filtering)

图像平滑处理指:在尽量保留原有信息的情况下,过滤掉图像内部的噪声

  • 均值滤波
  • 方框滤波
  • 高斯滤波
  • 中值滤波
  • 双边滤波
  • 2D卷积

均值滤波

指当前像素点周围的N*N个像素的均值来替代当前像素值
缺点:图像的边界处理时,由于图像外部是没有像素点和像素值的,显然是无法计算该点的5 * 5的邻域的均值的

dst=cv2.blur(src,ksize)
import cv2

img=cv2.imread("D:/hjb.jpg")

r=cv2.blur(img,(5,5))

cv2.imshow("img",img)
cv2.imshow("r",r)

cv2.waitKey(0)
cv2.destroyAllWindows()

不同大小卷积核,对比均值滤波的结果

import cv2

img=cv2.imread("D:/hjb.jpg")

r=cv2.blur(img,(5,5))
r30=cv2.blur(img,(30,30))

cv2.imshow("img",img)
cv2.imshow("r",r)
cv2.imshow("r30",r30)

cv2.waitKey(0)
cv2.destroyAllWindows()

方框滤波

可以自由选择是否对均值滤波的结果进行归一化,即可以自由选择滤波结果是邻域像素值和的平均值还是邻域像素值之和

dst=cv2.boxFilter(src,ddepth.ksize,normalize)

ddepth=-1表示与原始图像使用相同的图像深度
normalize=1表示进行归一化处理
normalize=0表示不需要归一化处理

import cv2

img=cv2.imread("D:/hjb.jpg")

rst1=cv2.boxFilter(img,-1,(5,5),normalize=1)
rst2=cv2.boxFilter(img,-1,(5,5),normalize=0)
rst3=cv2.boxFilter(img,-1,(2,2),normalize=0)

cv2.imshow("img",img)
cv2.imshow("rst1",rst1)
cv2.imshow("rst2",rst2)
cv2.imshow("rst3",rst3)

cv2.waitKey(0)
cv2.destroyAllWindows()

下面三句话是等价的

r=cv2.boxFilter(img,-1,(5,5))
r=cv2.boxFilter(img,-1,(5,5),normailize=1)
r=cv2.blur(img,(5,5))

高斯滤波

  • 在高斯滤波中,会将中心点的权重加大,远离中心点的权重减小

  • 在高斯滤波中,核的宽度核高度可以不相同,但是他们必须是奇数

在实际处理中,可以显式指定sigmaX 和sigmaY为默认值0

dst=cv2.GaussianBlur(src,ksize,0,0)
import cv2

img=cv2.imread("D:/hjb.jpg")

rst=cv2.GaussianBlur(img,(5,5),0,0)

cv2.imshow("img",img)
cv2.imshow("rst",rst)

cv2.waitKey(0)
cv2.destroyAllWindows()

中值滤波

用邻域内所有像素值的中间值来代替当前像素点的像素值

import cv2

img=cv2.imread("D:/hjb.jpg")

rst=cv2.medianBlur(img,3)

cv2.imshow("img",img)
cv2.imshow("rst",rst)

cv2.waitKey(0)
cv2.destroyAllWindows()

双边滤波

在滤波过程中可以有效地保留图像内的边缘信息

边界模糊是滤波处理过程中对邻域像素取平均值所造成的结果,上述滤波处理过程单纯地考虑空间信息,造成了边界模糊和部分信息的丢失

双边滤波在计算某一个像素点的新值时,不仅考虑距离信息(距离越远,权重越小),还考虑色彩信息(色彩差别越大,权重越小)

dst=cv2.bilateralFilter(src,d,sigmaColor,sigmaSpace)

后面两个sigma参数取相同,可取适中100

import cv2

img=cv2.imread("D:/hjb.jpg")

rst=cv2.bilateralFilter(img,25,100,100)

cv2.imshow("img",img)
cv2.imshow("rst",rst)

cv2.waitKey(0)

cv2.destroyAllWindows()

采用高斯滤波和双边滤波的比较

import cv2

img=cv2.imread("D:/hebai.jpg")

rst1=cv2.GaussianBlur(img,(5,5),0,0)
rst2=cv2.bilateralFilter(img,55,100,100)

cv2.imshow("img",img)
cv2.imshow("rst1",rst1)
cv2.imshow("rst2",rst2)

cv2.waitKey(0)
cv2.destroyAllWindows()

2D卷积

允许用户自定义卷积核实现卷积操作

dst=cv2.filter2D(src,ddepth,kernel)

ddepth一般使用-1表示与原始图像使用相同的图像深度
kernel自定义卷积核

例如设计一个9 * 9大小的卷积核,让卷积核内所有权重值相等

kernel=np.ones((9,9),np.float32)/81
import cv2
import numpy as np

img=cv2.imread("D:/hjb.jpg")

kernel=np.ones((9,9),np.float32)/81

rst=cv2.filter2D(img,-1,kernel)

cv2.imshow("img",img)
cv2.imshow("rst",rst)

cv2.waitKey(0)
cv2.destroyAllWindows()

相关文章

  • Opencv-Python学习笔记八——图像平滑(滤波)smoo

    图像平滑、模糊处理 消除图像中的噪声成分叫作图像的平滑化或滤波操作 “平滑处理“(smoothing)也称“模糊处...

  • 图像平滑处理

    图像平滑处理(Smoothing Images)图像模糊处理(Blurring Images)图像滤波(Image...

  • 图像平滑处理

    在为尽量保留原有图像信息的情况下,过滤掉图像内部的噪声,这就是图像的平滑处理。图像平滑处理会对图像中与周围像素点的...

  • 图像平滑处理

    图像平滑的用途很多,现在学习降噪功能。平滑处理需要滤波器,最常用的是线性滤波器, h(k,l)是一个加权系数, 归...

  • 图像平滑处理

    对于受噪声干扰严重的图象,由于噪声点多在频域中映射为高频分量,因此可以在通过低也可以直接在空域中用求邻域平均值的方...

  • 图像平滑处理

    《OpenCV轻松入门:面向Python》读书笔记作者:李立宗出版社:电子工业出版社出版时间:2019-05 第7...

  • opencv-android-图像平滑处理

    基本概念图像的平滑也就是图像的模糊处理,简单但是使用频率很高,在执行许多高级处理之前都需要先进性图像的平滑处理,以...

  • OpenCV 之ios 图像平滑处理

    OpenCV 之ios 图像平滑处理 目标 本教程教您怎样使用各种线性滤波器对图像进行平滑处理,相关OpenCV函...

  • 图像平滑处理---OpenCV-Python开发指南(17)

    什么是图像平滑处理 在尽量保留图像原有信息的情况下,过滤掉图像内部的噪声,这一过程我们称之为图像的平滑处理,所得到...

  • opencv在android平台下的开发【4】-图像滤波详解

    前言 在上一篇opencv-android-图像平滑处理文章中,简单介绍了几种图像平滑,也就是图像模糊的方法,使用...

网友评论

      本文标题:图像平滑处理

      本文链接:https://www.haomeiwen.com/subject/ibxjoltx.html