美文网首页
Opencv第二课---图像滤波

Opencv第二课---图像滤波

作者: 计算机视觉__掉队选手 | 来源:发表于2019-01-18 09:03 被阅读0次
image.png

图像滤波

图像滤波可以更改或者增强图像。滤波的目的有两个:一是抽出对象的特征作为图像识别的特征模式; 另一个是为适应图像处理的要求,消除图像数字化时所混入的噪声。
噪声一般主要分为以下几类:
椒盐噪声
加性噪声
乘性噪声
高斯噪声
图像滤波可以通过公式表达:
O(i,j)=∑m,nI(i+m,j+n)∗K(m,n)
K就是核,核可以应用在图像滤波、边缘检测等等图像处理方面。
图像滤波算法主要包括均值滤波、中值滤波、高斯滤波、双边滤波,上述滤波操作都是基于图像卷积得到最后的结果。

均值滤波

均值滤波属于线性滤波器,通过固定的模板(权值相同均为1),和原始图像进行卷积操作,用其像素点周围的像素点均值作为最终的像素值。


image.png

假设窗口大小ksize=3,图像中“5”对应的像素值在3*3的邻域窗口进行计算,最后的值为:(1+2+3+4+5+6+7+8+9)/9=4.4

import cv2
import matplotlib.pyplot as plt
img=cv2.imread("car.jpg")
mean_img=cv2.blur(img,(3,3))
plt.subplot(1,2,1)
plt.imshow(img)
plt.title("scr_img")
plt.subplot(1,2,2)
plt.imshow(mean_img)
plt.title("mean_img")
plt.show()
image.png

高斯滤波

均值滤波把所有像素点同等考虑,但实际上,图像的像素之间,距离越近,关系越密切。反之,关系越疏远。因此,考虑使用加权处理图像像素,才更加合理。距离越近,权重越高,反之,权重越低。这种关系非常符合高斯函数的分布特征。


image.png

高斯滤波本质上是低通滤波器,输出图像的每个像素点是原图像上对应像素点与周围像素点的加权和,原理并不复杂,用高斯分布权值矩阵与原始图像矩阵做卷积运算。

import cv2
import matplotlib.pyplot as plt
img=cv2.imread("car.jpg")
#gauss filter
gauss_img=cv2.GaussianBlur(img,(3,3),0)
plt.subplot(1,2,1)
plt.imshow(img)
plt.title("scr_img")
plt.subplot(1,2,2)
plt.imshow(gauss_img)
plt.title("gauss_img")
plt.show()
image.png

中值滤波

中值滤波算法以某像素的邻域图像区域中的像素值的排序为基础,是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。中值滤波对椒盐噪声处理效果比较好。

import cv2
import matplotlib.pyplot as plt
import numpy as np
def salt(img,n):
    for k in range(n):
        i = int(np.random.random()*int(img.shape[0]))
        j = int(np.random.random()*int(img.shape[1]))
        img[i][j][0] = 255
        img[i][j][1] = 255
        img[i][j][2] = 255
    return img
img = cv2.imread("car.jpg")
img = salt(img,300)
med_img = cv2.medianBlur(img,(3,3))
plt.subplot(1,2,1)
plt.imshow(img)
plt.title("scr_img")
plt.subplot(1,2,2)
plt.imshow(med_img)
plt.title("median_img")
plt.show()
image.png

双边滤波

双边滤波先根据像素值对要用来进行滤波的邻域做一个分割或分类,再给该点所属的类别相对较高的权重,然后进行邻域加权求和,得到最终结果。
双边滤波与高斯滤波相比,对于图像的边缘信息能够更好的保留,其原理为一个与空间距离相关的高斯核函数与一个灰度距离相关的高斯函数相乘。

import cv2
import matplotlib.pyplot as plt
img = cv2.imread("car.jpg")
double_img = cv2.bilateralFilter(img,9,50,50)
plt.subplot(1,2,1)
plt.imshow(img)
plt.title("scr_img")
plt.subplot(1,2,2)
plt.imshow(double_img)
plt.title("double_img")
plt.show()
image.png
参考博客:
https://blog.csdn.net/qq_27261889/article/details/80822270
https://blog.csdn.net/jiang_ming_/article/details/82594261
https://blog.csdn.net/zongza/article/details/83000443

相关文章

  • 7.6 2D卷积

    OpencV提供了多种滤波方式,来实现平滑图像的效果,例如均值滤波、方框滤波、高斯滤波、中值滤波等,大多数滤波方式...

  • OpenCV 之ios 图像平滑处理

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

  • Opencv第二课---图像滤波

    图像滤波 图像滤波可以更改或者增强图像。滤波的目的有两个:一是抽出对象的特征作为图像识别的特征模式; 另一个是为...

  • 2019个人学习计划

    2019年努力... 1.OpenCV图像处理人脸识别滤波处理,基底层C++代码实现;微像素OpenCV图片处理-...

  • Opencv之图像滤波

    图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏...

  • OpenCV 图像滤波:双边滤波算法

    最近在看浅墨前辈的OpenCV教程来做一次复习,其中发现了一个挺有趣的之前没见过的算法,叫双边滤波算法。这个算法可...

  • 图像梯度

    图像梯度 梯度简单来说就是求导。OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Schar...

  • 1.12 openCV-python 图像梯度

    图像梯度 梯度简单来说就是求导,openCV提供了三种不同的梯度滤波器;Sobel/Scharr/Laplacian

  • Learning OpenCV with iOS: 图像模糊--

    一、前言 上一篇我们讲解了OpenCV图像模糊中的线性滤波。本篇主要向大家介绍下非线性滤波。按惯例,先来看下效果图...

  • OpenCV 线性滤波

    线性滤波 图像滤波与滤波器 图像滤波,指的是在尽量保留图像特征的条件下对目标图像得噪声进行抑制,是图像处理当中不可...

网友评论

      本文标题:Opencv第二课---图像滤波

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