社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
图像增强可以分为两种:
cv2.normalize(src, dst, alpha, beta, norm_type, dtype, mask) → dst
src: 原图像对象
dst: 经过转化后的图像对象
alpha: 归一化后灰度像素最小值,一般为0
beta: 归一化后灰度像素最大值,一般为255
norm_type: 归一化的类型,可以取以下值
(1) cv2.NORM_MINMAX: 数组的数值缩放到一个指定的范围,线性归一化,一般较常用
(2) cv2.NORM_INF:归一化数组的C-范数(绝对值的最大值)
(3) cv2.NORM_L1 : 归一化数组的L1-范数(绝对值的和)
(4) cv2.NORM_L2: 归一化数组的(欧几里德)L2-范数
dst = cv2.convertScaleAbs(src)
将图像数据类型转化为uint8
图像增强线性变换主要对图像的对比度和亮度进行调整,线性变换公式如下:
y
=
a
∗
x
+
b
y = a*x+b
y=a∗x+b
参数 a 影响图像的对比度,参数 b 影响图像的亮度,具体分为可分为以下几种情况:
a>1: 增强图像的对比度,图像看起来更加清晰
a<1: 减小了图像的对比度, 图像看起来变模糊
a<0 and b=0:图像的亮区域变暗,暗区域变亮
a=1 and b≠0:图像整体的灰度值上移或者下移,也就是图像整体变亮或者变暗,不会改变图像的对比度,b>0时图像变亮,b<0时图像变暗
a=-1 and b=255:图像翻转
公式
{
y
=
a
1
∗
x
+
b
x
<
x
1
y
=
a
2
∗
x
+
b
x
1
<
x
<
x
2
y
=
a
1
∗
x
+
b
x
2
<
x
begin{cases} y = a_1*x+b & x<x_1 \ y = a_2*x+b & x_1<x<x_2 \ y = a_1*x+b & x_2<x end{cases}
⎩⎪⎨⎪⎧y=a1∗x+by=a2∗x+by=a1∗x+bx<x1x1<x<x2x2<x
即对处于某个感兴趣的区域的x,将其对比度系数a增大或减小,从而增大或减小这个区域的对比度。
对数变换将图像的低灰度值部分扩展,将其高灰度值部分压缩,以达到强调图像低灰度部分的目的;同时可以很好的压缩像素值变化较大的图像的动态范围,目的是突出我们需要的细节。
公式
y
=
c
∗
l
o
g
(
1
+
x
)
y =c* log(1+x)
y=c∗log(1+x)
幂律变换主要用于图像的校正,对漂白的图片或者是过黑的图片进行修正,幂律变换的公式如下:
y
=
c
∗
x
γ
y = c*x^γ
y=c∗xγ
根据 γ的大小,主要可分为以下两种情况:
γ > 1: 处理漂白的图片,进行灰度级压缩
γ < 1: 处理过黑的图片,对比度增强,使得细节看的更加清楚
图像直方图:反应图像强度分布的总体概念,宽泛的来说直方图给出了图像对比度、亮度和强度分布信息。
观察不同图像的直方图:
从上图中我们注意到: 在暗图像中,直方图的分布都集中在灰度级的低(暗)端; 亮图像直方图的分布集中在灰度级的高端;低对比度图像具有较窄的直方图,且都集中在灰度级的中部;而高对比度的图像直方图的分量覆盖了很宽的灰度范围,且像素分布也相对均匀,此时图片的效果也相对很不错。于是我们可以得出结论:若一幅图像的像素倾向于占据整个可能的灰度级并且分布均匀,则该图像有较高的对比度并且图像展示效果会相对好,于是便引出图像直方图均衡化,对图像会有很强的增强效果。
计算新的像素映射过程:
图像滤波包括空间域滤波和频率域滤波。
而空间域滤波包括:
1.平滑滤波
2.锐化滤波
平滑滤波包括均值滤波,加权均值滤波,中值滤波,最值滤波,高斯滤波等。
#均值滤波
blur_img = cv2.blur(img, 5)
#中值滤波
blur_img = cv2.medianBlur(img, 5)
#高斯滤波
blur_img = cv2.gaussianBlur(img,5)
锐化滤波比较常用的是拉普拉斯滤波。
点击查看原理
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!