数字图像处理2——图像增强
目的:突出某些信息,削弱不需要的信息
可以利用颜色,形状,形态学
直接灰度映射:对点的灰度值通过某种函数规则映射到新的灰度值
比如g(i,j)=a⋅f(i,j)+bg(i,j)=a⋅f(i,j)+b
或者扩展感兴趣的,牺牲其他的/压缩其他的
用cv2.lut()完成映射
dst = cv2.LUT(src, lut[, dst])
src输入图像,通常是一个灰度图像或者彩色图像。
lut查找表,应该是一个大小为 [256,1]
或 [256,3]
的数组(对于灰度图像和彩色图像分别适用),其中包含了从旧像素值到新像素值的映射关系。每个元素的取值范围在 [0,255]
之间。
dst可选参数,输出图像,其大小和深度与输入图像相同。
非线性变换:指数变换(伽马变换)
如果光照较暗,可尝试(但是首选物理手段)
im_for_read="D:\AAAproject\PYproject\EXPERuse\jhk-1754814023931.jpg"
imgg=cv2.imread(im_for_read,-1)
def gamma_transform(image,gamma):inv_Gamma = 1.0 / gammatable=np.array([(i / 255.0)**inv_Gamma * 255 for i in range (256)]).astype("uint8")return cv2.LUT(image,table)
gamma=2.0
after_imgg=gamma_transform(imgg,gamma)
cv2.imshow("after_imgg",after_imgg)
cv2.imshow("imgg",imgg)
cv2.waitKey(0)
这是用1/gamma变换,所以当γ大于1会变亮
直方图变换(少用)
统计每个灰度级出现的频数
直方图均衡
把过于集中的直方图部分铺散
卷积
掩膜在这里也叫:滤波器,模板,滤波模板,核,窗口,卷积滤波,卷积模板,卷积核
- 将卷积核中心对准图像某像素(如 (1,1))
- 对应位置相乘(除中心点外周围一圈)
- 所有乘积求和
- 结果作为输出图像该位置的像素值
- 滑动到下一个位置,重复
kernel = np.array([[0, -1, 0], [-1, 5,-1],[0, -1, 0]]) # 锐化滤波器的例子
sharpened = cv2.filter2D(img, -1, kernel)