两类图像增强方法
空域:直接对像素操作
频域:傅里叶变换,小波变换
空域
图像灰度级分布特点
对比度越高,灰度级在空间内分布更加均匀。
直方图均衡化
计算步骤
原始图像直方图 -> 累积概率分布直方图 -> 均值化后的直方图
核心:将累积概率分布的值 以为总灰度级个数对其进行近似划分,然后计算落在每个灰度级的原始灰度级概率分布总和。
计算灰度级概率分布
参数说明
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
强度变换
对数变换
数学公式
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阶导数反应的是变化后的起伏,变化幅度不一致才有响应,对灰度变化强烈的地方很敏感。
标签:边界,灰度级,邻域,像素,直方图,图像,图像增强 From: https://www.cnblogs.com/RedNoseBo/p/17300653.html