Python-OpenCV图像处理-08-边沿保留过滤(EPF)
进行边缘保留滤波通常用到两个方法:高斯双边滤波和均值迁移滤波
应用比如比较low的应用就应该是使用这个相当于做了个磨皮滤镜
贴出代码吧:
import cv2 as cv
#边缘保留滤波(EPF )
#高斯双边 高斯模糊原理
def bi_demo(image):
dst =cv.pyrMeanShiftFiltering(image, 0,100,15)
cv.imshow("bi_demo",dst)
# 均值迁移
def shift_demo(image):
dst =cv.pyrMeanShiftFiltering(image,10,50)
cv.imshow("shift_demo",dst)
src =cv.imread("C:\\Users\\william\\Pictures\\go.jpg")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)
bi_demo(src)
shift_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
部分原理见网友大佬博文:https://www.cnblogs.com/FHC1994/p/9097231.html
这里的函数原型也是贴的这个大佬的。。比较无耻
1.双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。双边滤波器顾名思义比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波
2.双边滤波函数原型:bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]]) -> dst
src参数表示待处理的输入图像。
d参数表示在过滤期间使用的每个像素邻域的直径。如果输入d非0,则sigmaSpace由d计算得出,如果sigmaColor没输入,则sigmaColor由sigmaSpace计算得出。
sigmaColor参数表示色彩空间的标准方差,一般尽可能大。较大的参数值意味着像素邻域内较远的颜色会混合在一起,从而产生更大面积的半相等颜色。
sigmaSpace参数表示坐标空间的标准方差(像素单位),一般尽可能小。参数值越大意味着只要它们的颜色足够接近,越远的像素都会相互影响。当d > 0时,它指定邻域大小而不考虑sigmaSpace。 否则,d与sigmaSpace成正比。
3.均值漂移pyrMeanShiftFiltering函数原型:pyrMeanShiftFiltering(src, sp, sr[, dst[, maxLevel[, termcrit]]]) -> dst
src参数表示输入图像,8位,三通道图像。
sp参数表示漂移物理空间半径大小。
sr参数表示漂移色彩空间半径大小。
dst参数表示和源图象相同大小、相同格式的输出图象。
maxLevel参数表示金字塔的最大层数。
termcrit参数表示漂移迭代终止条件。
相关文章
- Python之——python-nmap的安装与常用方法说明
- Python+OpenCV实现AI人脸识别身份认证系统(1)—人脸识别原理
- 【Python】python 日期操作
- Python 日期和时间_python 当前日期时间_python日期格式化
- Python 图像处理 OpenCV (16):图像直方图
- Python 图像处理 OpenCV (12): Roberts 算子、 Prewitt 算子、 Sobel 算子和 Laplacian 算子边缘检测技术
- Python 图像处理 OpenCV (10):图像处理形态学之顶帽运算与黑帽运算
- Opencv学习笔记 - 关于OpenCV的UMat 类
- 【OpenCV-Python】教程:3-10 直方图(2)直方图均衡
- Python语言学习:在python中,如何获取变量的本身字符串名字而非其值/内容及其应用(在代码中如何查找同值的所有变量名)
- Python:利用python代码编程实现将视频的avi格式转换为MP4格式
- Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu的Command)
- 成功解决sub_div.insert(points)cv2.error: OpenCV(3.4.1) C:projectsopencv-pythonopencvmodulesimgproc
- 成功解决cv2.error: OpenCV(4.1.2) C:projectsopencv-pythonopencvmodulesimgprocsrccolor.cpp:182: err
- opencv-python实现马赛克油画漫画风格的图片
- opencv-python图像处理之素描
- 完美解决opencv-python中文路径解析问题
- C++版本的OpenCV 5.x编译生成opencv-python==5.x(GPU版本)接口并进行调用
- Python-OpenCV图像处理-12-模板匹配
- Python-OpenCV图像处理-04-像素运算
- Python-OpenCV图像处理-03-色彩空间
- 【异常】前端ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- OpenCV-Python学习(13)—— OpenCV 多边形填充与绘制(cv.fillPoly、cv.polylines)
- OpenCV-Python学习(8)—— OpenCV 颜色表操作(cv.LUT、cv.applyColorMap)