三、图像直方图变换和几何变换

  • 直方图变换
  • 灰度变换
  • 点运算
  • 几何变换

直方图变换

1.灰度直方图

灰度直方图:数字图像中每一灰度级像素出现的频次(该灰度级的像素数目)(也可以标准化到概率的表示)

灰度直方图性质

  • 无空间信息。(一种值的统计,丢弃位置信息)
  • 直方图与图像一对多的关系
  • 可叠加性(全图=子图叠加)

直方图反映图像的清晰程度,直方图均匀分布时,图像最清晰。

判定一幅图像是否清晰,查看是否合理的利用了全部允许的灰度级。

一幅图像应该尽可能利用全部的灰度级

2.直方图均衡化

直方图修正:通过灰度映射函数$G_{new} = T(G_{old})$,将原灰度直方图改造成所希望的直方图。

直方图均衡化是一种最常用的直方图修正,把直方图分布改造成均匀直方图分布,均衡化后,图像直方图是平直的,即各灰度级出现频数相同,图像看起来更清晰了。

直方图均衡化灰度映射函数

  • 连续灰度级情况:概率密度函数为P(r),0<= r <= 1,代表灰度级。

    变换函数s=T(r),使直方图变平直。

    要求:

    • [0,1]范围内,T(r)是单增函数,且T的值域为[0,1]
    • 反变换函数为单减函数,值域也为[0,1]。

    变换示意图:图1
    三、图像直方图变换和几何变换_第1张图片
    图片.png

变换函数T:图2
三、图像直方图变换和几何变换_第2张图片
图片.png
  • 数字图像的直方图均衡化:设总像素n个,分L个灰度级,第k个灰度级出现的概率P(Rk)=Nk/N,Nk表示第k个灰度级出现的频数。

    变换函数:连续变换函数离散化,概率求和。公式如下,图3
    三、图像直方图变换和几何变换_第3张图片
    图片.png

数字图像灰度直方图均衡化步骤(8个灰度级为例),如图4:
三、图像直方图变换和几何变换_第4张图片
图片.png

Matlab处理

  • i2 = histeq(i1),对i1直方图均衡化
  • imhist(i2) ,绘制i2的直方图
  • i2 = adapthisteq(i1),改进的直方图均衡化效果,针对空间信息做了改进。

具体情况:若原图各个灰度等级都存在,但分布不均,均衡化后虽然分布很平直,但是可能变换后的灰度等级缩小了,变换到了一个更小的灰度等级空间,此时可能效果并不好,所有具体情况要具体处理。如下图5
三、图像直方图变换和几何变换_第5张图片
图片.png

3.直方图规定化(直方图匹配)

修改一幅图像的直方图,使得它与另一幅图像的直方图匹配或具有一种预先规定的函数情况。

目标:突出感兴趣的灰度范围,改善图像质量。

场景:上一小节,我们将灰度分布不均的图像通过均衡化转换为灰度理论均匀(分布概率密度曲线平直)的图像,增强了图像效果,但是实际场景,我们可能要突出某一些部分,又或是我们发现灰度在靠近0和1的部分太暗或太亮会导致细节模糊甚至丢失,自然的我们想到类似于均衡变换,将不均的概率分布曲线转换成我们特定的预设的一种灰度分布上(如高斯分布),以实现我们需要的增强效果。

方法:1)直接通过f到g的映射,f为原函数,g为变换后的函数,但过程可能很复杂。2)通过均衡变换为中介,将原图灰度分布f1和预设的直方图分布f2都做一个变换到均衡分布,分布使用映射函数s和t,那么对原图做s变换,再做t的反变换就得到了f2的分布。过程简单。

步骤如图6所示:


三、图像直方图变换和几何变换_第6张图片
图片.png

预设分布:规定化的效果较好,但是前提是需要知道图像的变换的较好的预设分布,这里需要根据具体情况分析,比如根据图中的场景,能分析该图主要应该呈现两种色调,那么对预设的分布,我们可以给出一种“双峰”的灰度分布,那么处理后的图像就会趋于呈现两种色调。

特例:二值图,双峰分布图中间添加阈值。


灰度变换

场景:曝光不足或过度等原因,产生对比度不足,使图像细节分辨不清。

方法:使用灰度变换方法解决这些问题。

对比度:简单讲就是最白与最黑的亮度单位的相除值,体现的是灰度级的max和min的极差。

灰度级变换:空间域点运算,通过某个变换函数有:g(x,y)=T(f(x,y)),T即为变换函数。也可以写作R = T(r)

1.线性灰度变换

变换函数T为线性函数。

  • 加常数:会缩小动态范围,降低对比度,调节整体亮度,可能会损失某一部分灰度等级。如下图所示,图7
    三、图像直方图变换和几何变换_第7张图片
    图片.png

(特例)图像反转:g(x,y)=255-f(x,y),简单理解为"黑白颠倒".

  • 乘常数:g(x,y)=Cf(x,y).改变动态范围。

  • 分段线性变换:变换函数采用分段的线性函数,突出感兴趣的部分。

    (特例)削波,cliping。

    (特例)阈值化,thresholding。二值图。

    (特例)灰度窗口变换,将某一区间的灰度级和其他部分(背景)分开。

非线性灰度变换

  • 对数变化,低灰度区扩展,高灰度区压缩
  • 之所变化,高灰度区扩展,低灰度区抑制。
  • 幂函数。
  • LUT变换,Look Up Table,查找表。一种映射表。

Matlab处理

  • bc = imcomplement(b),图像反转
  • th = imadjust(t,[],[],0.5),用于进行图像的灰度变换

图像运算

1.算术运算:加减乘除

  • 加法:C(x,y)=A(x,y)+B(x,y)。去除“叠加性”噪音;生成图像叠加效果。
  • 减法:与加法类似。
  • 乘法:C(x,y)=A(x,y)*B(x,y)。局部显示;二值蒙版图像与原图像做乘法。
  • 除法:不常用

2.逻辑运算:与或非

3.比较运算:如,取平均,最大,最小


图像几何变换

几何失真分为系统失真和非系统失真,系统失真是有规律的、能预测的,非系统失真则是随机的。

  • 镜头畸变
  • 遥感图像矫正:飞行器和地球相对运动造成呈现扫描不规整。
  • 图像配准:工业生产、医院中装置定位。

几何变换是图像中物体的空间变换,可以看成是图像内各物体在图像内移动的过程,如转动、扭曲、倾斜、拉伸。

1.基本几何变换的定义

原图为f(x,y),变换为,x'=T1(x,y),y'=T2(x,y),几何变换仅对x,y坐标做变换,灰度值不变。(注意:这里的变换不简单为单个变量的变换,如x'的变换实际上同时涉及变量x和y)

目标图像为g(x,y)=f(T1(x,y),T2(x,y))

2.常用的几何变换

  • 平移变换。g(x,y)=f(x+tx,y+ty),原图平移向量为(tx,ty)。(这里需要注意计算机呈像中的坐标选取,是左上角为坐标原点的,理论研究中采用常用的数学坐标)。写做矩阵形式为,图8
    三、图像直方图变换和几何变换_第8张图片
    图片.png
  • 镜像:水平镜像和垂直镜像

    • 水平镜像:沿Y轴翻转。g(x,y)=f(width-x,y),矩阵形式为图9
      三、图像直方图变换和几何变换_第9张图片
      图片.png
    • 垂直镜像:沿x轴翻转。g(x,y)=f(x,heigh-y),矩阵形式为图10
      三、图像直方图变换和几何变换_第10张图片
      图片.png
  • 转置:x,y坐标对换。与旋转是不同的,事实上,转置后的图与旋转90度后的图是水平镜像关系。矩阵表示如图11
    三、图像直方图变换和几何变换_第11张图片
    图片.png
  • 旋转变换:绕原点旋转a度,(注:逆时针为正向角度)。旋转后画布变大,图像增大。数学关系用极坐标表示较为方便。如图12
    三、图像直方图变换和几何变换_第12张图片
    图片.png

    通常的做法,是以图像中心做旋转,方法:

    • 图像中心平移到原点
    • 顺时针以原点做旋转
    • 图像中心平移回原坐标

    以上三个变换可以写成三种变换的矩阵相乘的形式,就可以一步到位。

    问题:旋转中会出现锯齿、网纹、断裂。

    • 像素的方向是固定的,纵横。旋转的时候并不会按某一个旋转角度分布像素,这样旋转后像素点就会有交错,不规整,错位。像素排列不完全按照原有的相邻关系。
    • 计算过程中,xy的映射涉及到三角函数,会进行浮点数取整,最终造成某些点空洞(没有取值),漏点

    问题的本质都是应为像素值填充不是连续的

    解决办法:插值填充

  • 缩放变换:缩小的时候要满足采样定理,否则会发生信息丢失;放大的时候需要对空位填入适当的新值,是信息的估计。矩阵表示如下图13.
    三、图像直方图变换和几何变换_第13张图片
    图片.png
  • 拉伸变换:混合的几何变换,或者说是几何变换的一般形式。如下图14
    三、图像直方图变换和几何变换_第14张图片
    图片.png

3.灰度级差值

解决的问题:旋转中出现的漏点、放大中新增的空点、拉伸中的空点,都存在未知像素值的点。

解决方法:插值法,利用邻域的像素来估计新的像素值。

a)最邻近插值:重复最临近点,取最近点的像素值。简单,但效果一般,放大倍数太大时会出现马赛克现象。

b)双线性插值:根据该空点上下左右4个点进行两次插值。f(x,y)=ax+by+cxy+d。(xy两个方向上都取线性变换值)

c)三次立方插值(立方卷积插值):差值函数为S(x)(是一个拟合的正弦差值函数,sinx/x,这是信息论中已知的优秀的差值算法,认为图像中的任何两个连续点的灰度值不是线性变换,而是一种sinx/x的函数,故采用拟合该函数的一个立方差值函数来代替计算),如下图15

三、图像直方图变换和几何变换_第15张图片
图片.png

待求像素的灰度值由周围16个点的灰度值加权内插得到,计算量大,效果较好。矩阵表示为图16
三、图像直方图变换和几何变换_第16张图片
图片.png


实践任务

Matlab和Python分别实现下列任务

  • 加载图像
  • 预备任务:彩色图像到灰度图像的变换(因为之后的学习大多处理灰度图,所有需要将彩色图变换到灰度图)
  • 实践1:灰度图及其灰度直方图,和均衡化后的图及其直方图,4个subplot做对比呈现
  • 实践2:灰度图按高斯分布和双峰分布做直方图匹配,给出4个subplot对比呈现
  • 实践3:图像旋转,及插值处理。
  • 实践4:图像高倍放大,及插值算法处理比较。

你可能感兴趣的:(三、图像直方图变换和几何变换)