opencv-filter滤波(十八)

                图像滤波
# 计算公式
    N = (W-F+2P)/S+1
    N输出图像大小
    W源图输入;F卷积核大小,P扩充尺寸
    S步长大小
# 低通滤波与高通滤波
    图像滤波分为高通滤波和低通滤波,高通滤波用于求图形的边缘,低通滤波用于图像去噪、
    图像模糊化等。这里的频是指变化(相邻像素值的变化),高通滤波是指使变化大也就是图像的边缘)
    的通过(低通滤波是指使变化小(也就是图像中图形)的通过。高通滤波部分涉及到Sobel、Scharr、Laplacian、canny
    等方法; 低通滤波 部分涉及: 均值滤波,方框滤波、中值滤波、高斯滤波和双边滤波。
    对比度调节是通过修改图像中特定区域的像素值,使图像的对比度发生变化,
    本博文涉及的对比度调节方法有:数值加减运算、线性变化、非线性变化、直方图均衡化等手段。

    低通滤波可以去除噪音和平滑图像
    高通滤波可以帮助查找图像的边缘
# API:
    filter2D(src,ddepth,kernel,anchor,delta,borderType)重点为前三个参数
    src:img
    ddepth:图像位深,一般设置为-1
    kernel:卷积核(低通滤波与高通滤波)
    anchor:锚点(默认-1)可以不设置
    borderType:边界类型,可以采用默认
---------------------------------------------------
                方盒滤波与均值滤波
# 方盒滤波,一般用不到
    normalize = true,a = 1/W x H6
# 均值滤波
    blur(src,ksize,anchor,borderType)后两项一般不设置
--------------------------------------------------
                高斯滤波(又称中型滤波)
# 高斯滤波API:
        GaussianBlur(img,kernel,sigmaX,sigmaY,...)
--------------------------------------------------
# 中值滤波:medianBlur(img,ksize)
# 双边滤波,主要作用是进行美颜,会保留脸型的边缘
    bilateralFilter(img,d,sigmaColor,sigmaSpace,...)
    d可理解为核的大小
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
                常见的高通滤波
# Sobel(索贝尔)(高斯)
    先向x方向求导
    然后在y方向求导
    最终结果:|G| = |Gx|+|Gy|
        Sobel API:
            Sobel(src,ddepth,dx,dy,ksize = 3)
        示例:
            sobelx = cv.Sobel(img, cv.CV_64F,1,0,ksize=5)
            sobely = cv.Sobel(img, cv.CV_64F,0,1,ksize=5)

# Scharr(沙尔)
    API介绍:
        与Sobel类似,只不过使用的kernel值不同。
        Scharr只能求x方向或y方向的边缘
    Scharr(src,ddepth,dx,dy,scale,...)
# Laplacian(拉普拉斯)
    API介绍:
        可以同时求两边方向的边缘
        缺点:对噪音敏感,一般需先进行去噪再调用拉普拉斯
    Laplacian(img,ddepth,ksize=1)

低通滤波:

import cv2 as cv
import numpy as np

img = cv.imread('./img/houmo.png',cv.IMREAD_COLOR)
img = cv.resize(img,(480,640))

# 图像滤波
# kernel = np.ones((5,5),np.float32) / 25
# img_kernel = cv.filter2D(img,-1,kernel)

# 均值滤波
# dst = cv.blur(img,(5,5))

# 高斯滤波
# dst = cv.GaussianBlur(img,(5,5),1)

# 中值滤波
# dst = cv.medianBlur(img,5)

# 双边滤波,主要作用是进行美颜
dst = cv.bilateralFilter(img,7,20,50)

# 高通滤波

cv.imshow('dst',dst)
cv.imshow('img',img)
cv.waitKey(0)

高通滤波:

import cv2 as cv
import numpy as np

img = cv.imread('./img/houmo.png')

# 索贝尔算子
# sobelx = cv.Sobel(img, cv.CV_64F,1,0,ksize=5)
# sobely = cv.Sobel(img, cv.CV_64F,0,1,ksize=5)
#
# # dst = sobelx + sobely
# dst = cv.add(sobelx,sobely)

# ------------------------------------------------------
# 拉普拉斯
ldst = cv.Laplacian(img,cv.CV_64F,ksize=5)


# cv.imshow('Sobelx',sobelx)
# cv.imshow('Sobely',sobely)
# cv.imshow('dst',dst)
cv.imshow('ldst',ldst)
cv.waitKey(0)

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值