美文网首页
三、图像直方图变换和几何变换

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

作者: hyfine | 来源:发表于2017-11-28 15:30 被阅读0次
    • 直方图变换
    • 灰度变换
    • 点运算
    • 几何变换

    直方图变换

    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 图片.png
    变换函数T:图2 图片.png
    • 数字图像的直方图均衡化:设总像素n个,分L个灰度级,第k个灰度级出现的概率P(Rk)=Nk/N,Nk表示第k个灰度级出现的频数。

      变换函数:连续变换函数离散化,概率求和。公式如下,图3 图片.png
    数字图像灰度直方图均衡化步骤(8个灰度级为例),如图4: 图片.png

    Matlab处理

    • i2 = histeq(i1),对i1直方图均衡化
    • imhist(i2) ,绘制i2的直方图
    • i2 = adapthisteq(i1),改进的直方图均衡化效果,针对空间信息做了改进。
    具体情况:若原图各个灰度等级都存在,但分布不均,均衡化后虽然分布很平直,但是可能变换后的灰度等级缩小了,变换到了一个更小的灰度等级空间,此时可能效果并不好,所有具体情况要具体处理。如下图5 图片.png

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

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

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

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

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

    步骤如图6所示:


    图片.png

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

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


    灰度变换

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

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

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

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

    1.线性灰度变换

    变换函数T为线性函数。

    • 加常数:会缩小动态范围,降低对比度,调节整体亮度,可能会损失某一部分灰度等级。如下图所示,图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 图片.png
    • 镜像:水平镜像和垂直镜像

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

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

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

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

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

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

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

      解决办法:插值填充

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

    3.灰度级差值

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

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

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

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

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

    图片.png
    待求像素的灰度值由周围16个点的灰度值加权内插得到,计算量大,效果较好。矩阵表示为图16 图片.png

    实践任务

    Matlab和Python分别实现下列任务

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

    相关文章

      网友评论

          本文标题:三、图像直方图变换和几何变换

          本文链接:https://www.haomeiwen.com/subject/ymqebxtx.html