锐化
不管是直接锐化,还是去噪后进行锐化,都会使得图像的噪声更加地严重,所以,去噪和锐化就先不做了,直接进行图像增亮和非线性拉伸
增亮
增亮使用加分进行增亮,防止乘法造成了像素值溢出。
-
利用
opencv
进行加法增亮时,有两种操作:-
直接进行加法,该方法若超过255的像素会被取模,导致处理后像素值可能变低
-
使用
cv2.add
进行加法,该方法若超过255,则任然等于255。所以我们的处理使用的是这个方法
-
-
亮度值的选择
分别尝试了30、40、50、60、80、100的增亮,可以发现,当亮度增量值为30时候,可以比原图看到更多的细节,且对比其他图,不会有明显的全局泛亮的效果,更有助于直方图均衡。
自适应直方图均衡
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(16, 16))
img_his = clahe.apply(img_add)
主要有两个超参数,一个是clipLImit
决定均衡的阈值,一个是tileGridSize
决定均衡的图像patch大小
clipLimit
调节
- 当阈值设为太小时,如1,导致对比度不够
- 当阈值设置太大时,如3和4,导致对比度太大
- 所以,选取了
clipLimit=2.0
作为第一个参数值
tileGridSize
调节
- 当该值设置太小时,对比度若一些,且取值4和8时候差别不大
- 当该值设置适当时,可以明显看到局部的对比度不同,通过比较,我认为取32较为合适
最终效果图
代码
def img_enhanced(img, add=30, cliplimit=2.0, tilegridsize=32):
img_add = cv2.add(img, add)
clahe = cv2.createCLAHE(clipLimit=cliplimit, tileGridSize=(tilegridsize, tilegridsize))
img_enhanced = clahe.apply(img_add)
return img_enhanced