利用opencv实现图像处理之几种滤波方法

1.均值滤波器

        均值滤波是在空域中进行相应的操作,在滤波的过程中选定一个模板,图像中每一点的像素值都由这个模板中所有点的像素值的均值代替。均值滤波公式为:

                                               

         其中,f′(x,y)是含有噪声的原始图像,g(x,y)是经过均值滤波之后得到的图像,s是以点(i,j)为中心的模板中像素的集合,模板尺寸为m×n。

        均值滤波器也称为低通滤波器,可以把每个像素都当成滤波核的核心,然后计算出核内所有像素的平均值,最后让核心像素等于这个平均值。

         均值滤波计算速度比较快,但是随着模板尺寸的增加会在去噪的同时损坏图像的细节信息。

            

opencv将均值滤波封装成了blur()方法。

dst = cv2.blur(src, ksize, anchor, borderType)

 代码如下:

import cv2

img = cv2.imread('1.jpg')
dst1 = cv2.blur(img,(3,3))
dst2 = cv2.blur(img,(5,5))
dst3 = cv2.blur(img,(9,9))

cv2.imshow('img',img)
cv2.imshow('3*3',dst1)
cv2.imshow("5*5",dst2)
cv2.imshow('9*9',dst3)

cv2.waitKey()
cv2.destroyAllWindows()

2.中值滤波器

        中值滤波也是一种在空域中进行处理的去噪方法,滤波方式是选定一个模板,在这个模板中进行相应的操作,首先将模板中的像素值进行排序,选择序列中的像素中值作为模板中心的像素值,这样能够去除图像中与周边像素差异较大的噪声点,从而达到去噪的目的。滤波模板的选择是多样的,可以是正方形或长方形的矩阵,也可以是圆形或者十字形的。

        中值滤波公式为:

                                 

opencv将均值滤波封装成了medianBlur()方法。

dst = cv2.midanBlur(src, ksize)

 代码如下:

import cv2

img = cv2.imread('1.jpg')

dst1 = cv2.medianBlur(img,3)


cv2.imshow('img',img)
cv2.imshow('3*3',dst1)

cv2.waitKey()
cv2.destroyAllWindows()

3.高斯滤波器

        高斯滤波过程中,滤波核中像素会与卷积核进行卷积计算,最后将结果赋值给滤波核的核心像素。

opencv将均值滤波封装成了GaussianBlur()方法。

dst = cv2.GaussianBlur(src, ksize, sigmaX,sigmaY,borderType)

 代码如下:

import cv2

img = cv2.imread('1.jpg')

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

cv2.imshow('img',img)
cv2.imshow('5*5',dst1)

cv2.waitKey()
cv2.destroyAllWindows()

4.双边滤波器

        双边滤波也是一种在空域中进行处理的去噪方法,通过考虑距离因素和像素值差异的影响,使它在去噪的同时,能够很好地保留图像的特征信息,具体模板权值公式如下:

                         

 最终的滤波公式为:  
       
                            

opencv将均值滤波封装成了bilateralFilter()方法。

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

 

 代码如下:

import cv2

img = cv2.imread('1.jpg')

dst1 = cv2.bilateralFilter(img,15,200,100)


cv2.imshow('img',img)
cv2.imshow('3*3',dst1)


cv2.waitKey()
cv2.destroyAllWindows()

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
opencv for unity3d是一个将OpenCV库集成到Unity3D游戏引擎中的插件。OpenCV是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉算法。 滤波在计算机视觉中是一种常用的图像处理技术,用于去除图像中的噪声、平滑图像或者增强图像细节。Opencv导向滤波是一种基于图像中的像素之间的关系来进行滤波的技术。 Opencv导向滤波的c代码主要包括以下几个步骤: 1. 首先,需要对输入图像进行预处理,包括转换为灰度图像、将图像转换为浮点数表示等。 2. 接下来,需要定义导向滤波器的窗口大小和滤波器参数。窗口大小决定了滤波器的像素邻域大小,参数决定了滤波器的平滑程度。 3. 然后,需要对每个像素点进行滤波处理。对于每个像素,需要计算其导向滤波后的像素值。 4. 最后,将滤波后的图像进行后处理,包括将滤波后的像素值转换为合适的像素范围,并将浮点数表示的图像转换为灰度图像或其他形式的图像表示。 Opencv导向滤波的c代码可以通过使用Unity3D中的插件进行调用和执行。在Unity3D中,可以将Opencv导向滤波的c代码封装为一个函数,然后通过调用该函数来对图像进行导向滤波。 通过使用opencv for unity3d和Opencv导向滤波的c代码,可以在Unity3D中实现图像的导向滤波,并且为游戏开发者提供了丰富的图像处理功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值