双边滤波

OpenCV3入门(六)图像滤波

只谈情不闲聊 提交于 2020-02-13 23:44:41
1 、图像滤波理论 1.1 图像滤波理论 图像滤波即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作。消除图像中的噪声又叫做图像滤波或平滑,滤波的目的有两个,一是突出特征以方便处理,二是抑制噪声。 空间域滤波就是在图像平面上对像素进行操作。空间域滤波大体分为两类:平滑、锐化。 平滑滤波:模糊处理,用于减小噪声,实际上是低通滤波,典型的滤波器是高斯滤波。 锐化滤波:提取边缘突出边缘及细节、弥补平滑滤波造成的边缘模糊。实际上是高通滤波。 空间域处理可由下式表示: g(x,y)=T[f(x,y)] 式中,f(x,y)是输入图像,g(x,y)是处理后的图像,T是在点(x,y)的邻域上定义的关于f的一种算子,算子可应用于单幅图像或图像集合。 1.2 邻域滤波算子 1)空间滤波器由一个邻域(通常是一个较小的矩形)和对该邻域所包围图像像素执行的预定义操作组成。对预定义的点(x,y)为中心的领域内的像素进行计算。 2)滤波产生一个新像素,用计算后的新像素值代替点(x,y)的值。 3)循环步骤1和2,滤波器的中心遍历图像中的每个像素后,就生成了滤波后的图像。 4)如果在图像像素上执行的是线性操作,则该滤波器称为线性空间滤波器,否则,称为非线性空间滤波器。 一般来说,使用大小为 m×n的滤波器对大小为 M×N的图像进行线性空间滤波,可由下式表示: 2 、OpenCV

OpenCv 026---高斯双边滤波

霸气de小男生 提交于 2019-12-04 07:58:03
1 前备知识 此前的图像卷积处理无论是均值还是高斯都是属于模糊卷积,它们都有一个共同的特点就是模糊之后图像的边缘信息不复存在或者受到了破坏。而高斯双边滤波可以通过卷积处理实现图像模糊的同时减少图像边缘破坏,滤波之后的输出完整的保存了图像整体边缘(轮廓)信息,我们称这类滤波算法为边缘保留滤波算法(EPF)。最常见的边缘保留滤波算法有以下几种: - 高斯双边模糊:高斯模糊是考虑图像空间位置对权重的影响,但是它没有考虑图像像素分布对图像卷积输出的影响,双边模糊考虑了像素值分布的影响,对像素值空间分布差异较大的进行保留从而完整的保留了图像的边缘信息。 - Meanshift均值迁移模糊:TODO - 局部均方差模糊:TODO - OpenCV中对边缘保留滤波还有一个专门的API:下文 2 所用到的主要OpenCv API /** @brief Applies the bilateral filter to an image. The function applies bilateral filtering to the input image, as described in http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html bilateralFilter can reduce

双边滤波(磨皮美白)

匿名 (未验证) 提交于 2019-12-02 23:59:01
#双边滤波函数:bilateralFilter(src,d,sigmaColor,sigmaSpace)# src:输入图像# d:过滤时周围每个像素领域的直径# sigmaColor:在color space中过滤sigma。参数越大,临近像素将会在越远的地方mix。# sigmaSpace:在coordinate space中过滤sigma。参数越大,那些颜色足够相近的的颜色的影响越大。import cv2img = cv2.imread('D:/pythonob/imageinpaint/img/freckle.jpg',1)dst = cv2.bilateralFilter(img,15,35,35)cv2.imshow('src',img)cv2.imshow('dst',dst)cv2.waitKey(0)效果图: 来源:博客园 作者: Bambo0 链接:https://www.cnblogs.com/cxxBoo/p/11481592.html

python&opencv 图像的双边滤波

匿名 (未验证) 提交于 2019-12-02 22:51:30
双边滤波的操作主要是ccv2.bilateralFilter()函数来操作,它能够保持边界清晰的情况下有效的去除噪声,但是这种操作比较慢。它拥有着美颜的效果: 下面是代码演示: import cv2 def bi_demo (image) : #高斯双边滤波 dst = cv2.bilateralFilter(src=image, d= 0 , sigmaColor= 100 , sigmaSpace= 15 ) cv2.namedWindow( 'bi_demo' , 0 ) cv2.resizeWindow( 'bi_demo' , 300 , 400 ) cv2.imshow( "bi_demo" , dst) ''' 其中各参数所表达的意义: src:原图像; d:像素的邻域直径,可有sigmaColor和sigmaSpace计算可得; sigmaColor:颜色空间的标准方差,一般尽可能大; sigmaSpace:坐标空间的标准方差(像素单位),一般尽可能小。''' def mean_shift_demo (image) : #均值偏移滤波 dst = cv2.pyrMeanShiftFiltering(src=image, sp= 15 , sr= 20 ) cv2.namedWindow( 'mean_shift image' , 0 ) cv2

cv2.bilateralFilter 双边滤波

笑着哭i 提交于 2019-11-29 06:16:31
双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。之所以能够达到保边去噪的滤波效果是因为滤波器由两个函数构成:一个函数是由几何空间距离决定滤波器系数,另一个是由像素差值决定滤波器系数. 1 Python: cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]]) → dst 参数解释: src:输入图像 d:过滤时周围每个像素领域的直径 sigmaColor:在color space中过滤sigma。参数越大,临近像素将会在越远的地方mix。 sigmaSpace:在coordinate space中过滤sigma。参数越大,那些颜色足够相近的的颜色的影响越大。 使用方法: 1 import cv2 as cv 2 import numpy as np 3 cv.namedWindow("image") 4 cv.createTrackbar("d","image",0,255,nothing) 5 cv.createTrackbar("sigmaColor","image",0,255,nothing) 6 cv.ctrateTrackbar("sigmaSpace",