图像增强技术根据增强处理过程所在的空间不同,可分为基于频域的算法和基于空域的算法两大类。基于频域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法,把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。基于空域的算法处理时直接对图像灰度级做运算,空间域法中具有代表性的算法有局部求平均值法和中值滤波(取局部邻域中的中间像素值)法等,它们可用于去除或减弱噪声。

图像增强的方法是通过一定手段,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征。在图像增强过程中,不分析图像降质的原因,处理后的图像不一定逼近原始图像。

基于空域的算法分为点运算算法和邻域去噪算法。点运算算法即灰度级校正、灰度变换和直方图修正等,目的或使图像成像均匀,或扩大图像动态范围,扩展对比度。邻域增强算法分为图像平滑和锐化两种。平滑一般用于消除图像噪声,但是也容易引起边缘的模糊。常用算法有均值滤波、中值滤波。锐化的目的在于突出物体的边缘轮廓,便于目标识别。常用算法有梯度法、算子、高通滤波、掩模匹配法、统计差值法等。

图像增强处理以下情况:
(1)图像太暗;
(2)图像太亮;
(3)有噪声点;
(4)对比度不明显。

空间域图像增强的方法:
 1)针对每一个像素处理
 ① 简单变换(取反,线性变换,指数变换,对数变换,幂次变换);
 ② 使用滤波器(算子)。参见:图像常用滤波方法(方框、均值、高斯、中值、双边)
 2)针对一组像素处理(直方图)
 ① 直方图均衡
 ② 直方图匹配
2.常用函数:
⑴ 取反(底片效果):imcomplement()
⑵ 二值化:~im2bw
⑶ 线性变换
⑷ 指数变换: exp()
⑸ 对数变换: log()
⑹ 幂次变换: power()
⑺ 查看直方图: imhist()
⑻ 使用直方图均衡:Histeq()
⑼ 使用平滑滤波器:(imfilter实现函数滤波)
⑽ 使用锐化滤波器
⑾ 旋转、缩放、剪切等: imrotate imresize imcrop
⑿ 对比度增强:imadjust()

图像反转:

就是把黑变白,白变黑,图像反转适用于增强嵌入于图像暗色区域的白色或灰色细节,物别是当黑色面积占主导地位时。

表达式:

r:原图像;s是变换后的图像

对数变换:

此变换使一窄带低灰度输入图像值映射为一宽带输出值。相对的是输入灰度的高调整值。可以利用这种变换来扩展被压缩的高值图像中的暗像素。相对的是反对数变换的调整值。

图像的对数变换作用: 
     由于对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率较小,所以图像经过对数变换后,较暗区域的对比度将有所提升,所以就可以增强图像的暗部细节

表达式:

底数v越大,对低灰度部分的强调就越强,对高灰度部分的压缩也就越强。相反的,如果想强调高灰度部分,则用反对数函数就可以了。看下面的实验就可以很直观的理解,下图是某图像的二维傅里叶变换图像,其为了使其灰度部分较为明显,一般都会使用灰度变换处理一下。

幂次变换:

又叫伽玛校正,幂次变换的基本表达式为:

其中cr均为正数。与对数变换相同,幂次变换将部分灰度区域映射到更宽的区域中。当r=1时,幂次变换转变为线性变换。

(1)  当0<r<1时,变换函数曲线在正比函数上方。此时扩展低灰度级,压缩高灰度级,使图像变亮。与对数变换十分相似。

(2)  当r>1时,变换函数曲线在正比函数下方。此时扩展高灰度级,压缩低灰度级,使图像变暗。

一个拉伸高像素值的范围,一个拉伸低像素值的范围。哪部分的斜率越大,哪部分的拉伸比例就越大。

这里选择的参数为c = 1,γ=3,来扩展图像的高灰度区域,其结果如下:

当选择参数为c = 1,γ=0.4,来扩展图像的低灰度区域,其效果如下:

  • γ>1时,会将低于某个灰度值K的灰度区域压缩到较小的灰度区间,而将高于K的灰度区域扩展到较大灰度区间。令L为灰度的最大值,k = 3/4L . 那么就有[0,3/4L][0,3/4L]的灰度区域映射到为[0,1/8L][0,1/8L]的输出;而将[3/4L,L][3/4L,L]这部分高灰度区域映射到[1/8L,L][1/8L,L]区间。这样变换的结果就是,低于K的灰度区域被压缩到更低灰度区间,而较亮的高灰度区域的灰度值被扩展到较大的灰度区间变的不那么亮,整体的效果就是图像的对比度增加了,但是由于亮度区域被扩展,也就不那么亮了。
  • γ<1时,会将灰度值较小的低灰度区域扩展到较宽的灰度区间,而将较宽的高灰度区域压缩到较小的灰度区间。这样变换的效果就是,低灰度区域扩展开来,变亮;而宽的高灰度区域,被压缩的较窄的区间,也变亮了,故变换后的整体效果是变亮了。

指数变换

指数变换的基本表达式为:

其中参数bc控制曲线形状,参数a控制曲线的左右位置。

从数学角度来想,指数随着横坐标变大曲线变得越来越陡峭,指数变换拉大了不同点的灰度值距离,所以指数变换提高了图像的对比度,当然它主要目的是进一步提高灰度值高的像素点。

指数变换的作用是扩展图像的高灰度级、压缩低灰度级。虽然幂次变换也有这个功能,但是图像经过指数变换后对比度更高,高灰度级也被扩展到了更宽的范围。

灰度拉伸

灰度拉伸也用于强调图像的某个部分,与伽马变换与对数变换不同的是,灰度拉升可以改善图像的动态范围。可以将原来低对比度的图像拉伸为高对比度图像。实现灰度拉升的方法很多,其中最简单的一种就是线性拉伸。

这里介绍稍微复杂一些的方法。灰度拉伸所用数学式如下所示。

注意:输入为0时候,式子无意义了。所以,在计算的时候,将其变为如下形式。

灰度拉伸的输入输出曲线如下图所示。

有两个参数,一个是m(相对于巴特沃斯高通滤波器而言,这个是截止频率),一个是E(相对于巴特沃斯高通滤波器而言,这个是滤波器次数)。m可以控制变换曲线的重心,E则可以控制曲线的斜率,如下图所示。

m值的可取图像灰度分布的中央值


       灰度拉升的目的就是扩展图片的动态范围,我们想将原本灰度范围是的图像变换到【0,1】内。那么,就直接取最大值与最小值,带入式子,解出E就可以了。但是,如之前所说的,我们所用的式子的的输出范围达不到,而且,直接取的范围,会造成E非常大,从而变换曲线的斜率非常大,灰度扩展的结果并不是很好。所以,这里退一步,取的输出范围是。E的取值,如下所示。

位图切割

位图切割,就是按照图像的位,将图像分层处理。若图像的某个像素,其bit7为1,则在位面7这个像素值为1,反之则为0。由位图切割的结果可以看出,图像的主要信息包含在了高4位。仅仅靠高4位,还原的图像更原图基本差不多。由此可见,位图切割主要用于图像压缩

直方图均衡化

直方图均衡化(Histogram Equalization) 又称直方图平坦化,实质上是对图像进行非线性拉伸,重新分配图像象元值,使一定灰度范围内象元值的数量大致相等。这样,原来直方图中间的峰顶部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较平的分段直方图:如果输出数据分段值较小的话,会产生粗略分类的视觉效果。

直方图是表示数字图像中每一灰度出现频率的统计关系。直方图能给出图像灰度范围、每个灰度的频度和灰度的分布、整幅图像的平均明暗和对比度等概貌性描述。灰度直方图是灰度级的函数, 反映的是图像中具有该灰度级像素的个数, 整个坐标系描述的是图像灰度级的分布情况, 由此可以看出图像的灰度分布特性, 即若大部分像素集中在低灰度区域, 图像呈现暗的特性; 若像素集中在高灰度区域, 图像呈现亮的特性。

下图就是直方图均衡化, 即将随机分布的图像直方图修改成均匀分布的直方图。基本思想是对原始图像的像素灰度做某种映射变换, 使变换后图像灰度的概率密度呈均匀分布。这就意味着图像灰度的动态范围得到了增加, 提高了图像的对比度。

直方图均衡化的作用是图像增强。这种方法对于背景和前景都太亮或者太暗的图像非常有用,采用选用累积分布函数对灰度值进行映射。对其进行直方图均衡化步骤如下:

1、 统计直方图,

2、 求出对应的概率密度

3、求累积分布函数

4、求出每个灰度级对应的输出灰度级

5、映射到新的图像

为什么要选用累积分布函数,使用累积分布函数处理后像素值会均匀分布?

均衡化过程中,必须要保证两个条件:
①像素无论怎么映射,一定要保证原来的大小关系不变,亮暗关系不变,只是对比度增大,绝对不能明暗颠倒;
②如果是八位图像,那么像素映射函数的值域应在0和255之间的,不能越界。

综合以上两个条件,累积分布函数是个好的选择,因为累积分布函数是单调增函数(控制大小关系),并且值域是0到1(控制越界问题),所以直方图均衡化中使用的是累积分布函数。

此外,累积分布函数具有一些好的性质,比较概率分布函数和累积分布函数,前者的二维图像是参差不齐的,后者是单调递增的。直方图均衡化过程中,映射方法是

其中,n是图像中像素的总和,n_k是当前灰度级的像素个数,L是图像中可能的灰度级总数。

来看看通过上述公式怎样实现的拉伸。假设有如下图像:

得图像的统计信息如下图所示,并根据统计信息完成灰度值映射:

映射后的图像如下所示:

根据上表:0→1;1→2;2→2;3→3;4→3;5→4;6→4;7→7;

from:https://wenku.baidu.com/view/691609fe690203d8ce2f0066f5335a8103d26639.html

直方图匹配

与直方图均衡不同的一点是,直方图匹配要得到的是具有特定形状的直方图的图像。当图像中接近0的像素过多,进行直方图均衡的时候,会导致统计概率变大,直接映射到高灰度,直接导致图像整体变量,达不到原来想要的结果,此时就需要使用直方图匹配,让变化后的图像具有特定的直方图。有时候,我们为了使两幅图像的色调保持一致,也可以采用该方法。

 直方图匹配的计算过程:

1. 计算输入图像的每个灰度级的累积分布函数 T(r)

2. 计算模板直方图的每个灰度级的累积分布函数G(z)。

3. 令G(z) = T(r),求出r→z,当不止一个z满足时,通常选择最小的值。

r→z的求解:r→z表示对于一个r(对于L = 256的灰度直方图,r取0,1,2,...,254,255),找出满足T(r) = G(z)的z,若不存在,则找出最接近的z(即找出min(abs( T(r) - G(z) ) 对应的z)。当z有多个时,通常取最小的。

4、最后和直方图均衡化的最后一步一样,逐个像素进行映射

运行结果:

from:学习笔记(二)——直方图均衡化和匹配

from:直方图均衡化

from:空间域图像增强

from:https://blog.csdn.net/u012856866/article/details/22064751

图像处理基本算法之空间域图像增强相关推荐

  1. 数字图像处理——第三章 空间域图像增强(灰度变换和直方图处理)

    文章目录 空间域图像增强 1. 背景知识 2. 基本灰度变换 2.1 图像反转 2.2 对数变换 2.3 幂次变换 2.4 分段线性变换函数 2.4.1 对比拉伸 2.4.2 灰度切割 2.4.3 位 ...

  2. 数字图像处理——第三章 空间域图像增强(空间滤波)

    文章目录 1. 空间滤波基础 2. 线性滤波器 2.1 平滑空间滤波器 2.2 锐化空间滤波器 2.2.1 基于一阶微分的图像增强--梯度法 2.2.2 基于二阶微分的图像增强--拉普拉斯算子 3. ...

  3. 数字图像处理系列(二)---空间域图像增强-点运算

    chapter2 空间域图像增强(点增强) 1.图像增强的基本概念 在不考虑图像降质的情况下,通过经验和试探的方法,把图像感兴趣的部分进行选择性突出,而把不在意的部分进行压制,从而得到我们想要的信息. ...

  4. 循序渐进之(五)空间域图像增强之自适应直方图均衡化(AHE)

    循序渐进之(五)空间域图像增强之自适应直方图均衡化(AHE) 文字摘自:对比度受限的自适应直方图均衡化(CLAHE) 直方图均衡化(HE)是一种很常用的直方图类方法,基本思想是通过图像的灰度分布直方图 ...

  5. 【OpenCV 例程200篇】67. 空间域图像增强的综合应用

    [OpenCV 例程200篇]67. 空间域图像增强的综合应用 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 5. ...

  6. 数字图像处理-空间域图像增强(一)(图像反转,对数变换,幂次变换、分段线性变换)

    空间域增强的第一部分:图像反转,对数变换,幂次变换.分段线性变换 (s:现点值,r: 原点值) 图像反转: 这个无需多说,就是把黑变白,白变黑,拿八位灰度图像来说 表达式:s=255-r 作用:看清暗 ...

  7. 数字图像处理——第四章 频率域图像增强

    文章目录 频率域图像增强 1. 傅里叶变换 1.1 一维傅里叶变换 1.2 二维傅里叶变换 2. 频率域滤波 2.1 陷波滤波器及其性质 2.2 空间域滤波与频率域滤波之间的对应关系 2.2.1 空间 ...

  8. 空间域图像增强:卷积和空间域滤波

    1.什么是卷积? 卷积:数学中关于两个函数的一种无穷积分运算,是通过两个函数f 和g 生成第三个函数的一种数学算子,表征函数f 经过翻转和平移与g 的重叠部分的累积. 2.什么是空间卷积? 线性空间滤 ...

  9. 【五】空间域图像增强

    1 空间域增强基础 空间域增强是对图像的一个邻域,用滤波.平滑.锐化等方法,从而增强图像. 2 空间域滤波 滤波就是将信号中特定波段频率滤除,常用傅里叶变换及其逆变换等实现. 具体过程就是取一个方形模 ...

最新文章

  1. ubuntu 命令整合1
  2. centos7和centos6的区别
  3. 用[bx+idata]的方式进行数组的处理
  4. 手把手教创建你的第一个以太智能合约:ETHEREUM PET SHOP(译)
  5. Sqlserver系统数据库和用户数据库日志文件全部丢失的恢复
  6. 浏览器要是能这么做就好了
  7. activemq优先级_ActiveMQ消息优先级:工作原理
  8. linux一台机器如何安装两个mysql,在一台linux机器上启动两个mysql实例
  9. 可以储存照片的字段类型是_sql server 中 哪个字段类型可以储存图象?
  10. java word在线预览_java 生成word文档并且在线预览的问题
  11. 腾讯股价创新高:总裁刘炽平减持40万股 套现2.5亿港元
  12. Java-虚拟机-启动参数及调优
  13. 怎么用python画风车_小清新风车短教程:10步教你绘制一副插画
  14. 基建管控系统_基建项目管理系统
  15. 如何完全彻底的卸载Oracle
  16. QT基于Npcap设计的网络抓包小程序
  17. linux查看文件夹大小命令
  18. IPtable 工作原理
  19. ::ffff:192.168.31.101 是一个什么地址?
  20. 引擎之旅 前传:C++代码规范

热门文章

  1. android 字符串转浮点,Android String类型转换为float、double和int的工具类方法
  2. Linux下超大硬盘分构(GPT分区)
  3. 小汤学编程之JDBC(一)——JDBC概述和快速入门
  4. HYSBZ 1734 二分
  5. linux部署Oracle数据库--安装篇
  6. 制作 macOS High Sierra U盘USB启动安装盘方法教程 (全新安装 Mac 系统)
  7. LoadRunner error -27728
  8. flutter Toast消息提示框
  9. spring事务在web环境中失效的问题
  10. china-pub近7日计算机图书排行榜