【图像处理】镜头去污渍(未完全实现):python + OpenCV

接上之前的个人面部数据集制作

个人面部数据集制作,opencv + python + C++_子根的博客-CSDN博客

引言

用笔记本的摄像头拍的面部数据,脸占整个图片的比例太小,如果太靠前摄像头眼镜又难受,所以用家里闲置的摄像头来拍,自己想摆什么POSS都行。

但是那个摄像头有点坏坏的,所以出街买了502胶水将它粘好,然后通电,发现胶水渗进镜头里去了,拍出来的图片带有污渍阴影,所以想呀图像处理的方法改善一下图片质量。

代码的思路是,先将源图每个通道【R、G、B】进行中值滤波一下,然后将污渍图片的每个通道进行高斯滤波(尽可能大),最后将处理过后的源图通道减去处理过后的污渍通道

 代码

import cv2

a = cv2.imread('F:/face/2.png')
(b, g, r) = cv2.split(a)
a_bH = cv2.medianBlur(b,1)
a_gH = cv2.medianBlur(g,1)
a_rH = cv2.medianBlur(r,1)
a = cv2.merge((a_bH, a_gH, a_rH))

b = cv2.imread('F:/face/aaa.png',1)
(b, g, r) = cv2.split(b)
b_bH = cv2.GaussianBlur(b,(35,35),0)
b_gH = cv2.GaussianBlur(g,(35,35),0)
b_rH = cv2.GaussianBlur(g,(35,35),0)
b = cv2.merge((b_bH, b_gH, b_rH))

bh = a_bH - b_bH
gh = a_gH - b_gH
rh = a_rH - b_rH

c = cv2.merge((bh, gh, rh))

# c = cv2.bitwise_and(a,b)
# c = cv2.subtract(a, c)

cv2.imshow('1', a)
cv2.imshow('2', b)
cv2.imshow('3', c)

cv2.waitKey()
cv2.destroyAllWindows()

结果

效果还是有的,只是不太理想,比如说空白背景也被减掉了,显示成红色的了,不过影响不大(希望吧) 

参考博客:

python+opencv均值滤波,高斯滤波,中值滤波,双边滤波_月下花弄影的博客-CSDN博客_opencv python 高斯滤波

python+opencv直方图均衡化_我是小蚂蚁的博客-CSDN博客_opencv 直方图均衡化 

猜你喜欢

转载自blog.csdn.net/qq_42792802/article/details/126253343