模糊,即离散卷积
所以卷积通俗话语是:模糊操作
1.基于离散卷积
2.定义好每个卷积核
3.不同卷积核得到不同的卷积效果
4.模糊是卷积的一种表象
1.模糊:均值模糊、中值模糊、自定义模糊
均值模糊:用于去除随机噪声 :dst = cv.blur(img, (15,5)) # 15是垂直方向 5 是水平方向的模糊
中值模糊:用于去除椒盐噪声,即一粒粒的噪音 : dst = cv.medianBlur(img, 5) #对去掉 椒盐特征值 是比较好的
自定义模糊:可以进行模糊和锐化 :
kernel = np.ones([5,5], np.float32)/25 #除25是卷积的原理
或者 kernel = np.array([0,-1,0], [-1,5,-1], [0,-1,0], np.float32)/9
dst = cv.filter2D(img, -1, kernel=kernel)
#锐化
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
#总和 = 0:表示做边缘梯度
#总和 = 1:表示做增强的工作
dst = cv.filter2D(image, -1, kernel=kernel)
cv.imshow("custom_blur", dst)
#边缘梯度
kernel = np.array([[0, -1, 0], [-1, 5, -1], [-1, -1, 0]], np.float32)
#总和 = 0:表示做边缘梯度
dst = cv.filter2D(image, -1, kernel=kernel)
cv.imshow("custom_blur", dst)
def mo_image(src1):
src2 = cv.blur(src1, (5, 5))
cv.imshow("均值模糊", src2)
src2 = cv.medianBlur(src1, 5)
cv.imshow("中值模糊", src2)
src2 = cv.GaussianBlur(src1, (5, 5), 2)
cv.imshow("高斯模糊", src2)
src2 = cv.bilateralFilter(src1, 5, 5, 2)
cv.imshow("双边滤波", src2)
# 自定义模糊函数
def zi_image(src1):
kernel1 = np.ones((5, 5), np.float)/25 # 自定义矩阵,并防止数值溢出
src2 = cv.filter2D(src1, -1, kernel1)
cv.imshow("自定义均值模糊", src2)
kernel2 = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
src2 = cv.filter2D(src1, -1, kernel2)
cv.imshow("自定义锐化", src2)