图像处理笔记(六):灰度变换与空间滤波

灰度变换与空间滤波

空间域: 指图像平面本身,这类图像处理方法直接以图像中的像素操作为基础。操作分为灰度变换和空间滤波。
灰度变换: 在图像的单个像素上操作,以对比度和阈值处理为主要目的。
空间滤波: 设计性能改善的操作,例如通过图像中每一个像素的邻域处理来锐化图像。
灰度越大颜色越白,0是黑色,255是白色。

截图来源于《数字图像处理》冈萨雷斯

基本的灰度变换函数

  1. 图像反转
    灰度级范围在[0, L-1]的一幅图像的反转图像:s = L - 1 - r,
    特别适用于增强嵌入在一幅图像的按区域中的白色或灰色细节,特别是黑色面积占主导地位时。
read_image(Image, 'frequency')
* 图像反转
invert_image(Image, ImageInvert)
  1. 对数变换
    s = clog(1 + r) c是常数,\(r\geq 0\)
    该变换将输入中范围较窄的低灰度值映射为输出中较宽范围的灰度值,将输入中范围较大的高灰度值映射为输出较窄的灰度值。
    使用这种类型的变换来扩展图像中的暗像素的值,同时压缩更高灰度级的值。
    反对数变换相反。

  2. 幂律(伽马)变换
    \(s = cr^{\gamma}\)

    从图中可以看到,\(\gamma <1\)时,将较窄范围内的较暗的输入值映射为较宽范围的输出值,暗区变小,亮区变大;
    \(\gamma > 1\)时,将较宽范围内较暗的输入值映射到了较窄范围的输出值,暗区变大,亮区变小。

由于用于图像获取,打印和显示的各种设备根据幂律来产生相应,用于校正这些幂律相应的处理称为伽马校正。
例如图像显示设备的响应是一个指数为2.5的幂函数,会导致显示出来的图像比实际的暗,这种情况下,在图像进入到输出设备之前,做一个指数为1/2.5的伽马变换进行纠正。
注意:根据实际情况设置伽马值可以用于各种图像设备。

幂律变换还可以用来进行对比度增强。对于整体比较暗的图像,选择一个小于1的伽马值,来扩展灰度级;对于整体比较亮的图像,选择一个大于1的伽马值,来压缩灰度值。

  1. 对比度拉伸
    不同灰度的数量不会发生改变,但是看上去对比度是增强了的。
    原图:

灰度拉伸之后:

  1. 灰度级分层
    突出图像中特定灰度范围的亮度,用于增强特征。
    两种方法:1. 将感兴趣的区域和不感兴趣的区域分别显示为两种灰度,如一个显示为黑色,一个显示为白色,生成了一张二值图像;(阈值分割已经用过很多次了)
    2. 将感兴趣的区域变亮或变暗,其他区域不变。

  2. 比特分割
    8比特图像考虑为8幅1比特图像构成,其实就是8次阈值分割。
    主要用于图像复原,存储4个高阶比特平面将允许我们以可接受的细节来重建原图像。

  3. 直方图处理
    若一幅图像的像素倾向于占据整个可能的灰度级并且均匀分布,则该图像会有较高的对比对的外观并展示灰色调的较大变化,最终效果将是一幅灰度细节丰富且动态范围较大的图像。
    归一化的直方图
    直方图均衡
    这一节实在是太理论了。。。理论部分全部跳过。
    试了一下小结里面第7个算子,这个算子能够增强对比度,应该就是用来做直方图均衡的。
    这节中剩下部分全部跳过。

空间滤波基础

相关和卷积
相关是滤波器位移的函数;
滤波器w与包含有全部的0和单个的1的函数相关,得到的结果是一个w的拷贝,但旋转了\(180^{\circ}\)
离散冲激: 包含单个1而其余都是0的函数。一个函数与离散单位冲激,在该冲激位置产生这个函数的一个翻转版本。
f w
00010000 12328
f是一个一维函数,w是滤波器,执行相关操作,需要将w的每一位从f上走过去,得出f和w的乘积和,当w的最后一位访问f的第一位时,w的前几位会没有f来覆盖,这时候就给f补0。
相关操作的结果是000823210000,一般喜欢使用与f大小相同的阵列,将结果裁剪一下,得到08232100。

卷积
机理与相关类似,只要将滤波器旋转\(180^{\circ}\)
卷积的基本特性是某个函数与某个单位冲激卷积,得到一个在该冲激处的这个函数的拷贝。

相关还可以用于寻找图像中的匹配。

本节中Halcon算子小结:

  1. invert_image(Image, ImageInvert):图像反转
  2. log_image(Image, LogImage, base):对图像做底数为base的对数变换
  3. pow_image(Image, PowImage, Exponent):对图像做伽马为Exponent的幂律变换
  4. scale_image_max(Image, ImageScaleMax):将图像的灰度值拉伸到0-255
  5. scale_image(Image, ImageScaled, Mult, Add):对图像做线性变换:\(g^{'} = g * Mult + Add\)
  6. overpaint_region(Image, Region, GrayVal, Type):将图像中的指定区域或边界设置成指定的灰度值
  7. equ_histo_image(Image, ImageEquHisto):将图像的直方图线性化

猜你喜欢

转载自www.cnblogs.com/yutou2016/p/11091414.html