版权声明:如需转载请标注 https://blog.csdn.net/weixin_40973138/article/details/84671443
模糊操作基本原理:
- 基于离散卷积
- 定义好每个卷积核
- 不同卷积核得到不同的卷积效果
- 模糊是卷积的一种表象
代码层面知识点
- 均值模糊
- 中值模糊
- 自定义模糊
- 意义与应用场合
----------------------------------------------------------------
卷积
均值模糊
此代码与上文无关…
def blur_image(image): #均值模糊
cv.imshow('fruit', image)
dst = cv.blur(image, (20,15)) #选取一个20×15 卷积核
cv.imshow('blurred', dst)
中值模糊
中值模糊就是用与卷积框对应像素的中值来替代中心像素的值。中值模糊常用于去除椒盐噪声。
均值模糊是用计算得到的一个新值来取代中心像素的值,而中值模糊是用中心像素周围(或其自身)的值来取代它。
def median_blur(image):
cv.imshow('fruit', image)
dst = cv.medianBlur(image, 5)
cv.imshow('median_blur', dst)
自定义模糊/锐化
自定义模糊:
def custom_blur(image):
cv.imshow('image', image)
kernel1 = np.ones((5,5), np.float)/25
dst = cv.filter2D(image, -1, kernel1)
cv.imshow('blurred', dst)
自定义锐化:
def custom_blur(image):
cv.imshow('image', image)
kernel1 = np.array(((0,-1,0), (-1,5,-1), (0,-1,0)), np.float)
dst = cv.filter2D(image, -1, kernel1)
cv.imshow('blurred', dst)
filter2D(src,ddepth,kernel)
:
参数 | 说明 |
---|---|
src | 目标图像 |
ddepth | 深度,输入值为-1时,目标图像和原图像深度保持一致 |
kernel | 卷积核(或者是相关核),一个单通道浮点型矩阵 |
经试验,在三维矩阵当中,卷积核为((0,-1,0), (-1,5,-1), (0,-1,0)) 的效果最为理想
高斯模糊
将卷积核换成高斯核(方框不变,将原来每个方框的相等的值替换成符合高斯分布的新值,其方框中心的值最大,其余值根据其距离中心的距离递减)
其与均值模糊最大不同在于,虽然图片模糊化,但其基本轮廓可见
src = cv.imread('/home/pi/Desktop/apple.jpg')
dst = cv.GaussianBlur(src, (0,0), 15)
cv.imshow('GaussianBlur', dst)
------------------------------------------------------------------
利用模糊给图片打码:
def cut(image):
cut = image[300:384, 250:340]
return cut
def blur(image):
blur = cv.blur(image, (50,50))
return blur
def connect(image):
image[300:384, 250:340] = blur(cut(image))
cv.imshow('result', image)
src = cv.imread('/home/pi/Desktop/woman.jpg')
cv.imshow('image', src)
connect(src)