Python + OpenCV 学习笔记(八)>>> 利用卷积对图像模糊处理
模糊操作基本原理:
- 基于离散卷积
- 定义好每个卷积核
- 不同卷积核得到不同的卷积效果
- 模糊是卷积的一种表象
代码层面知识点
- 均值模糊
- 中值模糊
- 自定义模糊
- 意义与应用场合
----------------------------------------------------------------
卷积
均值模糊
此代码与上文无关…
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)
经试验,在三维矩阵当中,卷积核为((0,-1,0), (-1,5,-1), (0,-1,0)) 的效果最为理想
------------------------------------------------------------------
利用模糊给图片打码:
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)