图像增强
两类图像增强方法
空域:直接对像素操作
频域:傅里叶变换,小波变换
空域
图像灰度级分布特点
对比度越高,灰度级在空间内分布更加均匀。

直方图均衡化
计算步骤
原始图像直方图 -> 累积概率分布直方图 -> 均值化后的直方图
核心:将累积概率分布的值 以为总灰度级个数对其进行近似划分,然后计算落在每个灰度级的原始灰度级概率分布总和。
计算灰度级概率分布
![]()
参数说明
rk:灰度级k的像素
Pr(rk):灰度级为k的像素出现概率

计算灰度级累积概率分布,并按照灰度级总数切分,近似
计算每个灰度级出现的累积概率,以一定精度将其进行舍去,将累积概率相同的出现概率相加,得到均值后的直方图。
由于灰度级是离散的,故采用离散形式
![]()

按照灰度级累积概率分布进行映射
以灰度级累积概率分布的值为灰度级,将原始灰度映射到该灰度级。
一共有8个灰度级,0,1,2,3,4,5,6,7。
灰度级0=0;灰度级1=s0=0.19;灰度级2=0;灰度级3=s1=0.25;灰度级4=0;灰度级5=s2=0.21;灰度级6=s3+s4=0.24;灰度级7=s5+s6+s7=0.11

作用
可以将灰度级集中在某一个区间的图像,将其灰度级均匀分散在空间上。
简并现象
处理后的灰度级总是要减少的,称为简并现象。因为数字图像的直方图均衡只是近似结果。
解决方法
增加像素的比特数,如原8bit变成12bit
灰度间隔放大理论的直方图修正法也可以避免简并
对应Opencv函数
直方图统计
hist = cv2.calcHist(images, channels, mask, histSize, ranges, accumulate)
-
-
-
- mages : 原始图像
- channels : 指定通道
- 通道编号需要用中括号括起来
- 输入图像是灰度图时,它的值为[0]
- 彩色图像可以使[0],[1],[2]分别对应通道B,G,R。
- mask : 掩码图像
- 统计整幅图像的直方图,设为None。
- 统计图像某一部分的直方图时,需要掩码图像
- 生成掩码图像
- histSize : BINS的数量
- ranges : 像素值返回RANGE
- 像素值范围,例如:[0, 255]
- accumulate : 累计标识
- 默认值为false,如果被设置为true,则直方图在开始分配时不会被清零
- 该参数允许从多个对象中计算单个直方图,或者用户实施更新直方图
- 多个直方图的累计结果,用户对一组图像计算直方图
-
-
直方图均衡
dst = cv2.equalizeHist(src[, dst])
-
-
-
- src 单通道 8-bit 的图像
- dst 与输入图像大小相同的输出图像
-
-
直方图匹配
作用
将直方图转换为任意指定的形状
步骤
1.输入图像均值化。
![]()
2.目标直方图均值化。

3.联系两张直方图。
因为两个中间图像都具有相似的直方图均衡,所有实际上它们是相同的图像,所有y=y'
![]()

点处理
点处理是将单个像素点根据其自身数值会周围像素点进行处理。
s=T(r),r是原始像素数值输入,T是点处理函数,s是经过处理之后的像素点数值。
负片变换:s=1-r
阈值处理:大于阈值设置为1,小于阈值设置为0
对比拉伸变换
表达式


E控制函数的陡峭程度,m是变化的中间点,r是输入像素。
对数变换
数学公式
s= c * log(1+r)
c是常数。

作用
log变换可以将狭窄的低的输入灰度级映射到更加宽广的输出范围。
反对数变换则相反。
幂律变换
数学公式
s = c * rγ
γ决定曲线的弯曲程度,γ以1为边界,越趋向于0,曲线越飘,越趋向于无穷大,越往下弯曲。

幂律变换的应用
伽马矫正
显示设备无法线性地反应不同的强度,通常呈现曲线
可以使用幂律变换对其矫正
分段线性变换
数学公式
对于不同灰度级区间,使用不同的函数

灰度切片
处理方式
只输出某个特定灰度级的像素。
作用
用于突出某些特征。
将某个灰度区间的像素值变高。
比特平面分层
一副灰度图,一个像素点由8bit组成,可考虑分层1到8个比特面。
一般来说高阶,特别是最后两个比特平面,比特包含了视觉上很重要的大多数数据。
图像合并
图像平均


其中fi是第i张图片,fi=g+ni,第i中图片有原图g加上噪声ni得到。
图像相减
可以突出两个图像之间的差异。可以快速找出两个图像的不同之处
空域滤波器
邻域操作
在一个像素点周围的邻域上操作,而不是单个点。一半来说是方形邻域
![]()
g(x,y)是处理后的像素,w(s,t)是周围邻域各个像素点的权重。f(x+s,y+t)是f(x,y)的邻域像素
简单邻域操作
Min:邻域中最小像素值填充像素。
Max:邻域中最大像素值填充像素。
Median:邻域平均像素值填充像素。
常见滤波器
均值滤波器
卷积核都是:1/邻域像素总数。也就是中间像素取邻域像素的平均值。
可以使得图像更加平滑,但是会丢失细节。

均值滤波起到平滑作用,对椒盐噪声非常差。
带权重平滑滤波器
越接近中间像素,权重越高。卷积核随着移动而改变。
中值滤波
中间点像素取邻域像素的中值。
中值滤波对椒盐噪声有较好的效果。
滤波器的边界丢失问题
产生原因

应为滤波器也是一个nxn大小的方格,若与图像边界对齐,则处理的时候,无法处理边界的像素,导致边界像素丢失。
3x3卷积核会丢失1圈边界像素,5x5会丢失2圈边界像素,7x7会丢失3圈边界像素,9x9会丢失4圈边界像素,nxn会丢失 (n/2)向下取整 圈边界像素
解决方法
忽略缺失的像素
填充图像
复制边界像素
裁剪图像
锐化空间滤波器
作用
可以去除图像中的模糊。
突出边界。
衡量像素变化的方法
使用一阶导数


缺陷:当前像素只与前一个像素比较。
使用二阶导数


拉普拉斯算子
优点
各向同性
简单
使用拉普拉斯算子处理的图像 与 原图相加 可以将原图边界突出,实现锐化。
具体公式
![]()
![]()
![]()
![]()

简化图像增强


拉普拉斯算子变体
优点:不仅考虑四上下左右,还考虑了对角线,对边界突出效果更明显。

一阶导数变化滤波器(Sober算子)
衡量x方向和y方向上的变化
梯度

使用梯度作为衡量像素变化标准

在实际应用中,可以简化为
![]()
Gx表示的是上下方向的变化
Gy表示的是左右方向的变化。
Gx=(z7+2z8+z9)-(z1+2z2+z3)
Gy=(z3+2z6+z9)-(z1+2z4+z7)


一阶导数与二阶导数比较
1阶导数产生的边缘更粗,2阶导数算子产生的细节更多。
1阶导数对灰度阶梯反应更强;2阶导数反应的是变化后的起伏,变化幅度不一致才有响应,对灰度变化强烈的地方很敏感。
频域滤波
傅里叶变换
一维
正变换
连续

离散

反变换
连续

离散

![]()
幅度谱
![]()
相位谱

二维
正变换
连续形式
![]()
离散形式

反变换
连续形式
![]()
离散形式

幅度谱

相位谱

能量谱

图像处理使用傅里叶变换过程
转换到频域,在频域进行滤波处理,转换回空域

使用低通滤波器处理得到如下效果,因为低通滤波器只允许低频信息通过,对于边缘这些高频信息都给丢弃了,所以图像变化幅度大的地方丢弃了。


使用高通滤波器处理,因为高通滤波器只允许高频信息通过,所以只保留了边缘

频域滤波
基本表达式
![]()
F(u,v)是图像在频域的表示,H(u,v)是滤波变换函数
理想低通滤波器
低通表达式


频域高于阈值D0的设置为0,频率低于阈值D0的设置为1。允许小于于阈值的频率通过。
高通表达式

大于阈值的设置为1,小于阈值的设置为0,允许大于阈值的频率通过。
低通不同阈值的效果
阈值相当于一个圆,半径越大,允许通过的信息越多,高频信息也就越多。对于不同的半径效果如下图所示。




高通不同阈值效果

缺点
理想低通滤波器有震铃效果,就是图像中类似于水波纹的东西。
巴特沃苏滤波器
低通表达式

高通表达式
![]()
低通不同阈值的效果图



高通不同阈值的效果

优点
没有震铃效果,从图中看出,震铃效果没有了,无法看见类似水波纹的东西。
高斯滤波器
低通表达式
![]()
高通表达式

低通不同阈值效果



高通不同阈值效果

优点
具有平滑性
三种滤波器使用半径15进行低通滤波效果比较



对比可以看出,高斯低通滤波器的过渡很平坦。
低通滤波器的应用
因为低通滤波器可以过滤高频信息,可以用于修图对人脸皮肤进行美化。
高斯低通滤波器因为其平滑特性,可以处理图片中文字断裂的情况。

拉普拉斯频域滤波器
表达式

效果

反锐化掩模
表达式
f'hp(x,y)=f(x,y)-flp(x,y)
通过减去原图像的模糊图像就可以得到,原图像的模糊图像就是使用低通滤波器去除高频细节的图像,减去其即可。
高增溢滤波
表达式
fhb(x,y)=Af(x,y)-flp(x,y)
将原图像增强A倍,再减去原图像的模糊图像。
与其原图的高频图像的关系
等于原图像的A-1倍加上原图经过高通滤波器处理的图像,推导如下:
fhb(x,y)=Af(x,y)-flp(x,y)=(A-1)f(x,y)+f(x,y)-flp(x,y)=(A-1)f(x,y)+fhp(x,y)
高频增强滤波
表达式
Hhfe(u,v)=a+bHhp(u,v)
a>0,且b>a。
频域滤波的优点
计算速度快,尤其是大图片。
彩色图像增强
色彩模式
RGB:红蓝绿三原色。
HSI:H(Hue,色调),S(Saturation,饱和度),I(Intensity,亮度)。
CMYK:C(Cyan,青色),M(Magenta,品红色),Y(Yellow,黄色),K(Black,黑色,用K是为了避免与Blue搞混)。
YUV:本质是RGB空间,只不过对RBG做了约束。亮度信号Y=aR+bG+cB,色差分量信号U=R-Y,色差分量信号V=B-Y。
YCbCr:YCbCr模型来源于YUV。
YCbCr采样
全采样YUV 4:4:4
每个像素的三个分量信息完整。
原始:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
采样:Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
映出:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
YUV 4:2:2采样
每个色差信道只取二分之一。交叉采样
原始:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
采样:Y0 U0 Y1 V1 Y2 U2 Y3 V3
映出:[Y0 U0 V1] [Y1 U0 V1] [Y2 U2 V3] [Y3 U2 V3]
YUV 4:1:1采样
每个色差信道只取四分之一。交叉采样
原始:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
采样:Y0 U0 Y1 Y2 V2 Y3
映出:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]
YUV 4:2:0采样
指的是每行4:2:0与4:0:2交叉采样
原始:
[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]
[Y5 U5 V5] [Y6 U6 V6] [Y7 U7 V7] [Y8 U8 V8]
采样:
第一行(第三个色差信道不取)4:2:0,Y0 U0 Y1 Y2 U2 Y3
第二行(第二个色差信道不取)4:0:2,Y5 V5 Y6 Y7 V7 Y8
映出:
然后分别组合
[Y0 U0 V5] [Y1 U0 V5] [Y2 U0 V7] [Y3 U0 V7]
[Y5 U0 V5] [Y6 U0 V5] [Y7 U2 V7] [Y8 U2 V7]
彩色图像处理
强度切片
表达式

C1,C2分别是两种不同的颜色,将大于强度T的用C1颜色表示,小于强度T的用C2颜色表示


多级强度切片
表达式
![]()
不同强度级别的图像用不同颜色表示


灰度到颜色转换
根据特定映射函数,为每个灰度级赋予指定颜色,不同颜色在灰度级上变化不同。最后组合起来


全彩色图像处理
分别单独处理每个色彩通道,每个彩色通道权重不同。最后合并。
RGB图像


HSI
![]()
CMY

彩色图像平滑
对于RGB,CMY图像,在每个通道上,对每个像素点根据其邻域求均值,最后合并。

对于HSI图像,只对强度I平滑,而不管H和S。
彩色图像锐化
对于RGB,CMY图像,在每个通道上,单个处理每个像素
对于HSI图像,只处理强度I通道上的像素,其余不管。
RGB和HSI:


彩色图像的噪声
噪声可以出现在彩色图像的每个通道上。
相对于灰度图像,彩色图像的噪声并不明显。




色彩白平衡(Color banlancing)
经典算法
Gray-world
Scal-by-max
Shades-of-gray
本文来自博客园,作者:Laplace蒜子,转载请注明原文链接:https://www.cnblogs.com/RedNoseBo/p/17300653.html

浙公网安备 33010602011771号