- 空域平滑
(1)高斯滤波
import cv2 as cv
import numpy as np
img = cv.imread("lena512color.jpg",1)
cv.imshow("img",img)
cv.waitKey(0)
kernel = cv.getGaussianKernel(3,0)
print((kernel))
# """【函数描述】用于计算一维高斯函数的模板系数
# 【参数描述】n — 模板尺寸,n必须为大于0的正整数,一般取n为奇数,但是通
# 过源代码分析可以知道,取n为偶数,同样可以计算得到对
# 应结果。
# sigma — 高斯标准差(公式中的σ),如果sigma取小于等于0的数,则
# 函数根据当前n值计算对应的sigma值,
# sigma = ((n-1)*0.5 – 1)*0.3 + 0.8。
# ktype — 数据类型,CV_32F或者CV_64F
# 【返回值】 返回n行1列归一化的一维高斯系数
# """
Gaussfilter_img = cv.filter2D(img,-1,kernel)
cv.imshow("GaussFilter",Gaussfilter_img)
cv.waitKey(0)
(2)均值滤波Blur
(3)中值滤波
- 空域锐化
1.Laplace先使用Laplacian函数获得梯度图,然后使用convertScaleAbs函数取绝对值
2.SobelSobel
- 频域平滑
1.低通滤波
1)初始化全0掩模mask=np.zeros(img.shape,np.uint8)
2)将掩模中心置1r=int(rows/2)c=int(cols/2)mask[r-radius:r+radius,c-radius:c+radius]=1
3)将图像从空域转换到频域
f1=np.fft.fft2(img)
f1shift=np.fft.ffshift(f1)
4)乘上掩模,即滤去高频分量,保留低频分
f1shift=f1shift*mask
5)进行逆变换
f2shift = np.fft.ifftshift(f1shift)
img_new = np.fft.ifft2(f2shift)
6)进行处理,调整大小,获得最终结果
- 频域锐化