消除噪声的工作称为图像平滑。图像平滑分为空间域平滑和频率域平滑。在空间域,平滑滤波有很多种算法,其中最常见的有线性平滑,非线性平滑,自适应平滑。如果是对各像素灰度值进行简单处理最后求和就是线性滤波;如果对像素灰度值的运算比较复杂,而不是最后求和的简单运算,则是非线性滤波。
线性滤波相当于一个包含加权系数的窗口。下面介绍线性滤波器里的归一化方框滤波器和高斯滤波器。
import cv2 as cv
import numpy as np
import math
import copy
from matplotlib import pyplot as plt
srcimage=cv.imread("C:/Users/wangyiyuan/Desktop/20200201172603_hocyy.jpg")
dstimage=cv.imread("C:/Users/wangyiyuan/Desktop/20200201172603_hocyy.jpg")
g_nTracebarMaxValue=9;
g_nTracebarValue=0;
g_nKernelValue=0;
windowName='mean filtering'
def on_kernelTrackbar(x):
global g_nKernelValue
g_nTracebarValue=cv.getTrackbarPos('res',windowName)
g_nKernelValue=g_nTracebarValue*2+1
ksize=(g_nKernelValue,g_nKernelValue)
cv.blur(srcimage,ksize,dstimage)
cv.namedWindow(windowName)
cv.createTrackbar('res',windowName,0,9,on_kernelTrackbar)
while (True):
cv.imshow(windowName,dstimage)
if cv.waitKey(1)==ord('q'):
break
cv.destroyAllWindows()