OpenCV——08边缘保留滤波(EPF)
边缘保留滤波(EPF)
- 高斯双边模糊
- 均值迁移
# -*- coding:utf-8 -*-
import cv2 as cv
import numpy as np
# 高斯双边模糊
def bi_demo(image):
dst = cv.bilateralFilter(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("D:\Python\Projects\OpenCV_toturial\images\example.png")
# 创建opencv的GUI窗口
# cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
# 将图片放入指定名字的窗口中显示出来
cv.imshow("input image", src)
# bi_demo(src)
shift_demo(src)
# fill_color_demo(src)
# fill_binary_demo()
# 设置waitKey中的delay为0,程序会等待用户操作后关闭窗口
cv.waitKey(0)
cv.destroyAllWindows()
高斯双边模糊
cv.bilateralFilter(src, d, sigmaColor, sigmaSpace, dst = None, borderType = None)
说明:
1.一般sigmaColor取大一点,其目的是为了将小的差异模糊掉,就是将那些噪声能够去掉,sigmaSpace空间差异取小一点,这样核的规模就会小一点,如果sigmaSpace太大,计算量就会很大
2.d是distance,如果d不为0,而且sigmaSpace没有输入,就会从d计算sigmaSpace,如果sigmaColor也没输入,那么就会从sigmaSpace计算sigmaColor
3.一般d取为0,输入sigmaColor和sigmaSpace,反算出d
均值迁移
cv.pyrMeanShiftFiltering(src, sp, sr, dst = None, maxLevel = None, termcrit = None)
src:输入的8-比特,3-信道图象.
dst:和源图象相同大小,相同格式的输出图象.
sp:空间窗的半径
sr:色彩窗的半径