图像增强是从像素到像素的操作,是以预定的方式改变图像的灰度直方图。有时又称为对比度增强,灰度变换。点运算不可能改变图像内的空间关系,输出像素的灰度值由输入像素的值决定。其作用:

对比度增强:扩展感兴趣特征的对比度。

光度学标定:去掉图像传感器的非线性影响。所谓光度学,就是在可见光波段内,考虑到人眼的主观因素后的相应计量学科称为光度学。标定即计算内参,在光度学范畴计算内参。

显示标定:克服图像保存和显示过程中的非线性因数。

轮廓线:进行阈值化

裁剪:输出灰度级裁剪到0~255之间。

首先,解释下什么是对比度:

通俗的讲,就是明暗的对比程度,通常表现了图像画质的清晰程度,计算公式:
 
例如:
设图像L = {1 3 9 9
          2 1 3 7
          3 6 0 6
        }
则C = [(1^2 + 2^2) + (2^2 + 6^2 + 2^2) + (。。。。。) +。。。]/ 48 = 16.6818。
 
 
实际上,对比度反映了一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,即指一幅图像灰度反差的大小,差异范围越大代表对比越大,差异范围越小代表对比
 
越小,好的对比率120:1就可容易地显示生动、丰富的色彩,当对比率高达300:1时,便可支持各阶的颜色。但对比率遭受和亮度相同的困境,现今尚无一套有效又公正的标准来
衡量对比率,所以最好的辨识方式还是依靠使用者眼睛。

 

灰度变换(图像增强)的目的是为了改善画质,使图像的显示效果更加清晰。主要包含:

线性对比度展宽

对比度展宽的目的是将人所关心的部分强调出来。其原理是:进行像素级的点对点的灰度级映射。如下:

f(i,j)表示原图,g(i,j)表示处理后的图,要求g,f都在[0,255]区间变化,且g的效果要优于f.则该映射关系的计算公式为:
在 [0,a)区间,g(i, j) = α * f(i,j);
在[a, b)区间,g(i,j) = β * (f(i,j) - a) + ga;
在[b, 255)区间,g(i,j) = γ*(f(i,j) - b) + gb;
以上,α,β,γ都是斜率。这个就叫对比度展宽。
此时,如果我们只显示指定区间的g,即α,γ都设为0.g(i,j) = β1 *(f(i,j) - a) ; 则上面的映射变成:
这个过程叫做灰度窗切片,得到灰级窗。即只显示指定灰级范围内的信息。将灰度值落在一定范围内的目标进行对比增强。
我们将所需要检测的目标与画面中的其他部分分离开,目标部分置为0/255,非目标部分置为255/0,即α,γ置0的过程,这个叫灰度窗切片。
对比度展宽的效果:
动态范围调整
动态范围,是指图像中所记录的场景中从暗到亮的变化范围,由于人眼所可以分辨的灰度的变化范围是有限的,所以当动态范围太大时,很高的亮度值把暗区的信号都掩盖了。
通过动态范围的压缩,可以将所关心部分的灰度级的变化范围扩大。
 
对于动态范围的调整分为:
1.线性动态范围调整。
这个过程就是上面的对比度展宽后,通过灰度窗切片,得到灰级窗的过程。此时,灰级窗内的计算公式为:
g = 255/(b - a) *(f(i,j) - a);
 
线性动态范围调整的效果:
 
 
2.非线性动态范围调整:
因为人眼对信号的处理是有个近似对数算子的环节,因此,通常用取对数的方法。
g(i,j) = c * log10(1 + f(i,j)),其中,c表示你需要抑制的灰度上限。
 
 
 
 
例如,我们需要将暗的部分扩展,而将亮的部分抑制,此时,g(i,j) = 255 * log(f(i,j) + 1);
 
非线性动态范围调整的其他方法:这里根据中间范围的灰度级的运算进行分类。
1.增加中间范围灰度级而只使暗/亮像素做较小改变。公式:f(x) = x + Cx(Dm - x),其中,Dm是灰度级的最大值,C定义了中间灰度范围内的增加(c> 0)或者减小(c < 0),给
个demo:
 
 
2.降低较亮或较暗物体的对比度来增强灰度级处于中间范围的物体对比度,中间斜率大于1,而两端斜率小于1。
α:(0,1);

对应灰度:

3.压低在中间灰度级处的对比度,而在较亮或较暗部分的对比度增强,中间斜率小于1,两端大于1.

 
曲线与2类相反,第2类和第3类一起给个demo:
非线性动态范围调整效果:
直方图均衡化处理
直方图均衡法的思想是,对在图像中像素个数较多的灰度级进行展宽,而对像素个数较少的灰度级进行缩减,从而达到清晰图像的目的。
其数学原理实际就是从一个分布(输入的亮度直方图)被映射到另一个分布(一个更宽,理想统一的亮度值分布),也就是映射函数应该是一个累积分布。可以用累积分布函数对原始分布进行映射作为均衡拉伸分布。
原理:
经过点运算使一输入图像转换成在每一灰度级上都有相同的像素点数的输出图像(输出的直方图是平的),这对于在进行图像分割或分割之前将图像转换为一致的格式将是非常
有用的。经过均衡化后,每一级的像素个数为A0/Dm,Dm是灰度级的最大灰度值,A0是图像的面积。
均衡化方法:
1.求出原图的直方图,h = {x0,...xi}i 在0~255范围内。
2.计算灰度分布概率,图像总体像素N = l * w,每个灰度级的像素个数在整个图像中所占的百分比。hs(i) = h(i) /N (i 在 0~255)。
3.计算灰度级的累计分布hp:
4.计算新图像的灰度值。
直方图均衡化效果:
伪彩色技术
由于人眼识别不同彩色的能力比分辨不同灰度级的能力强,因此,把人眼无法区别的灰度变化,施以不同的彩色来提高识别率,这便是伪彩色增强的基本依据。
鉴于灰度图像要生成一幅彩色图像是一个一到三的映射,显然少信息量获得多信息量必然基于估计原理,也就是说,对未知的部分,通过各种手段进行合理的估计,研究的目的
不同,则估计的方法也不同,有以下几种方法:
1.基于亮度表示的伪彩色方法:
依照对温度的描述方式,当温度较低,我们会想到蓝色,又称冷色调,当温度较高,我们会想到红色,又称为暖色调,根据人感官上的这一特性,将亮度低的映射为蓝色,亮度
高的映射为红色。由此,可以按照如下映射关系进行伪彩色处理:
 
2.基于区域表示的伪彩色方法:
该伪彩色技术是对原图进行了预处理,将识别出属于不同性质的区域给不同的色彩。主要用于医学诊断,目的是突出病灶。

paper 106:图像增强方面的介绍的更多相关文章

  1. 【深度学习Deep Learning】资料大全

    最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books  by Yoshua Bengio, Ian Goodfellow and Aaron C ...

  2. 轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)

    轻量级Java EE企业应用实战(第4版):Struts 2+Spring 4+Hibernate整合开发(含CD光盘1张)(国家级奖项获奖作品升级版,四版累计印刷27次发行量超10万册的轻量级Jav ...

  3. pg 资料大全1

    https://github.com/ty4z2008/Qix/blob/master/pg.md?from=timeline&isappinstalled=0 PostgreSQL(数据库) ...

  4. PostgreSQL相关的软件,库,工具和资源集合

    PostgreSQL相关的软件,库,工具和资源集合. 备份 wal-e - Simple Continuous Archiving for Postgres to S3, Azure, or Swif ...

  5. (转)Android分布式编译学习(一)distcc实现分布式编译 —— Ubuntu12.04上部署distcc分布式编译

    转自:http://blog.csdn.net/eqiang8271/article/details/17144411   版权声明:本文为博主原创文章,未经博主允许不得转载. Android代码庞大 ...

  6. Linux C定时器使用指南

    使用定时器的目的是为了周期性的执行某一任务,或者是到了某个指定时间去执行某一任务.要达到这一目的,一般有两个常见的方法.一个是用linux内部的三个定时器,另一个是用sleep, usleep函数让进 ...

  7. U-Net卷积神经网络

    由于项目需要,用U-NET跑一个程序来对医学影像进行分割(segmentation),因此跑去看了下这篇论文(paper),下面会介绍一下U-Net的框架及要点,如果哪里有写的不对的,或者好的建议,欢 ...

  8. PCL的学习必要性、重要性、意义及最初——持续修改中

    为什么学习PCL:图像描述:各种维度图像的逻辑描述形式  ^-^ 且点云库是机器人学领域的必备基础库,ICRA和IROS的计算机视觉相关一般都使用了PCL库,PCL库也成为ROS的基础部分,与机器人操 ...

  9. 学习NLP:《自然语言处理原理与技术实现(罗刚)》PDF+代码

    自然语言处理技术已经深入我们的日常生活.我们经常用到的搜索引擎就用到了自然语言理解等自然语言处理技术.自然语言处理是一门交叉学科,涉及计算机.数学.语言学等领域的知识. <自然语言处理原理与技术 ...

随机推荐

  1. Invalid escape sequence(valid ones are \b \t \n \f \r \" \' \\)

    Invalid escape sequence(valid ones are \b \t \n \f \r \" \' \\) 在运行eclipse的相关程序代码时遇到了报错信息,查看控制台 ...

  2. 纪念逝去的岁月——C/C++排序二叉树

    1.代码 2.运行结果 3.分析 1.代码 #include <stdio.h> #include <stdlib.h> typedef struct _Node { int ...

  3. js正则验证之不能使用相同字符

    在我们的前端开发中,为了不让用户输入相同的密码字符以提高其安全性,我们会写一个js方法来实现这个功能.接下来,我就来实现这个方法,有其他好的解决办法,敬请留言,博主必定向其学习. function _ ...

  4. nginx基于IP的虚拟主机

    知识点: server的语法: upstream语法: upstream中192.168.100.1不是ip只是个标识,只要和下面的proxy_pass 对应即可. 基于IP的虚拟主机: listen ...

  5. Java读取Execl表格数据

    在前面提到用java代码新建一个Execl 表格并添加数据到表格中, 这次写了一个读取Execl表格数据并添加导数据库中的案列 给定对方一个Execl模板表格,如果导入的Execl表格和预订的表格不相 ...

  6. 对ASM存储管理的一些初步理解记录

    ASM:Automatic Storage Management,是ORACEL10G以后为了简化存储管理的复杂性,也是为了摆脱对其他厂商的依赖而推出的.ASM作为目前ORACLE推荐的首选存储方案, ...

  7. Oracle数据库表复制语句

    Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我 ...

  8. paramter的添加

    public string GetUserIdByName(string UserName, string pwd)    {        string sql = @"select Na ...

  9. 关于static 的研究 与递归调用的输出

    static的作用 :1.保存上次执行的结果 2.static int m; 这里默认m的初始值为0,即默认 值是0 #include "stdio.h" int fun(int ...

  10. Array-基本功能

    <title>Array-基本功能</title></head> <body> <script type="text/javascrip ...