0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于指数对比度增强FPGA实现

FPGA技术江湖 来源:疯狂的FPGA 作者:CrazyFPGA 2022-03-16 11:46 次阅读

1.对比度增强原理

对比度增强是个广泛的话题,前文中关于直方图均衡的方法,其实就是一种对比度增强。而对比度增强,就是提高明暗之间的差异,从而达到提高图像对比度、改善主观视觉效果的目的。

采用直方图均衡的方法,其实是对图像灰度的拉伸,但本文将介绍的,是基于曲线灰度映射变换。典型的比如指数变换,对数变换,Gamma变换等等。

为了直观的说明对比度增强的效果,我们先生成一张灰度对称分布图,以指数对比度增强为例,效果如下所示。可见对比度增强后的图,黑色部分更黑了,白色部分更白了,对比更明显了。

然后我们进一步分析增强前后的直方图,可见增强后图像的直方图,暗的像素值更暗的,亮的像素值也更亮了,敏感之间的对比更大,那么对于对比度较低的图像,增强后确实可以提高可视度。

6170b7d4-907d-11ec-952b-dac502259ad0.png

相关代码如下:

61867e66-907d-11ec-952b-dac502259ad0.png

指数对比度增强有很多方法,但万变不离其宗,即以一定阈值为中心,提高阈值以上的亮度,并降低阈值以下的亮度。典型的以对数对比度增强函数为例,公式如下所示:

619956b2-907d-11ec-952b-dac502259ad0.png

针对阈值=127,E取2/4/6的曲线,使用Matlab绘制,如下所示:

61b5b802-907d-11ec-952b-dac502259ad0.png

61c8f142-907d-11ec-952b-dac502259ad0.png

如上图所示,分别是E=2,E=4,E=6的指数对比度增强曲线,横坐标为原始像素,纵坐标为映射后的像素。从曲线可见,E的值越大,对暗区的压缩及亮区的提升程度就越大,那么明暗之间的对比就越明显,即E可以表示为图像对比度增强的程度。图中三条曲线交汇在阈值127处,那么也可以采用不同程度增强曲线的融合模式,比如阈值以下采用E=2,阈值以上采用原值或E=6方式,区别对待图像明暗区域的对比度。

2.指数对比度增强Matlab实现

这里以阈值=127,E=7为例,我们看一下对比度增强后的图像效果。其中matlab代码如下:

61dee18c-907d-11ec-952b-dac502259ad0.png

对比度增强后的图如下所示,可见原图对比度较低,整体给人灰蒙蒙的效果,而右图则看起来更通透,明暗之间的对比度更加鲜明,整体视觉效果也更好了。

61f247ea-907d-11ec-952b-dac502259ad0.png

结合之前讲过的直方图均衡算法,与现在指数对比度增强效果以及各自的直方图进行对比,如下图所示:

6222d6da-907d-11ec-952b-dac502259ad0.png

我们从以下几个方面去对比效果:

1)对比度:

由灰度图可见,明暗对比不明显。通过对比度增强,压缩了暗区并提高了亮区,明暗对比度提高了;通过直方图拉伸后,将图像灰度拉伸到0-255,自然明暗之间的对比度也提高了。不过对比效果,直方图对比度更高,同时也引入了局部过曝的问题。

2)直方图

由直方图可见,原图像素集中在100左右,对比度增强后,压缩/拉伸到25-150,而直方图均衡后拉伸到了0-255,因此从当前测试图来看,直方图拉伸后的动态范围更宽,不过这也因图而异,比如原图就比较亮的图,对比测试效果如下,对比度增强后效果还差强人意,而直方图拉伸后图像过暗,因为本身偏亮,拉伸后则整体亮度降低了。

62660432-907d-11ec-952b-dac502259ad0.png

3.指数对比度增强FPGA实现

直方图拉伸,本质上是对像素概率的统计,然后进行扩展拉伸。

而对比度增强,无论是指数函数,还是各类曲线映射,其本质上就是一种像素映射操作。由于指数函数、对数函数等,实时的计算比较耗时。并且当选定参数后,其结果是固定的,因此可以根据参数提前计算好函数的映射结果,再以数组的方式进行索引,得到计算后的结果。这种方法,在学术领域通俗的讲就是Mapping操作,可在X-Y坐标上找到各自的映射点。

以E=7,THRESHOLD=127为例,指数对比度产生的结果如下所示(reshape是为了方便在Command Windows中显示,实际上是一个一维数组),在matlab中可以直接根据如下结果进行索引映射。

6279afdc-907d-11ec-952b-dac502259ad0.png

在FPGA中进行Mapping操作时,可以将数组存放在RAM或者以RTL源码的方式进行映射。FPGA的RAM采用的是mif或hex的格式进行存储,并且在生成RAM的时候需要进行文件的指定。由于256Byte的存储不大,同时为了提高移植的灵活度,这里我推荐使用RTL源代码的方式,并且使用matlab直接生成verilog文件。以指数对比度增强为例,生成文件的源码如下所示:

628ce70a-907d-11ec-952b-dac502259ad0.png

在当前文件夹下将会生成Curve_Contrast_Array.v文件,即为Matlab生成的曲线对比度映射verilog文件,由于最终实现只是一个简单的地址译码,电路相对比较简单,因此直接采用组合逻辑实现,生成的代码如下所示:

62ae07c8-907d-11ec-952b-dac502259ad0.png

至此,我们已经生成好了Mapping的数组,那么在FPGA中只需要简单的映射就可以完成指定强度的对比度增强算法,即只需要例化该模块,进行原始数据的映射,输出增强后的数据即可,相关代码如下所示:

62e7ee7a-907d-11ec-952b-dac502259ad0.png

4.RTL仿真结果及实测

原文标题:图像指数对比度增强之Matlab&FPGA实现

文章出处:【微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

审核编辑:彭菁
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593194
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66767
  • 指数函数
    +关注

    关注

    0

    文章

    3

    浏览量

    5786

原文标题:图像指数对比度增强之Matlab&FPGA实现

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    [3.1.1]--对比度增强

    图像处理
    jf_90840116
    发布于 :2022年12月16日 13:14:53

    到底什么叫显示器对比度

    到底什么叫显示器对比度  随着LCD一轮又一轮的降价,随着LCD技术的日益成熟,越来越多的消费者开始考虑选购LCD显示器作为电脑的标准配置。可是在眼花缭乱的LCD产品中,您真的可以完全读懂那些指标
    发表于 02-23 16:13

    关于IMAQdx获取的图像调节亮度对比度

    本人新手,对IMAQdx驱动研究得不够,想问问通过这个模块获取的图像怎样修改一下参数,比如调节亮度对比度什么的,烦请高手解答,不胜感激
    发表于 05-08 12:30

    如何按键实现LCD背光灯对比度控制

    如题:如何按键实现LCD背光灯对比度控制~~?求大神指点。
    发表于 12-26 19:26

    MSP430F4152调节液晶对比度问题

    F4152使用3V的4COM的字段液晶,第40引脚P5.3/R03直接接地,第43、42、41引脚按数据手册接入三个1M电阻,单片机电源是3.3V,这种情况下如何调节LCD的对比度呢?试过使用内部
    发表于 02-10 15:59

    【液晶显示屏试用体验】忙乱中的各种折腾之——折腾显示对比度

    ,唉……不是白脸,是有显示了!只是对比度太差,如下图所示,不仔细看还以为是屏亮度不均匀呢。  下图是换个角度看到的情况,从下面往上30角看上去还是挺清晰啊有没有?  可问题来了,为啥直接插到51开发板
    发表于 04-11 23:38

    为什么DM365 对比度提高的时候,图像亮度也被提上去了,这是什么原因啊?

    本帖最后由 人间烟火123 于 2018-6-15 14:47 编辑 Hi,TI我在使用ipnc4.0调试网络摄像机。在调节图像对比度的时候,软件包里面是通过调用这个函数,实现对比度的控制
    发表于 06-15 01:58

    请问STM32F429怎样调节TFT液晶屏对比度

    采用STM32F429芯片,用片上自带LCD控制器驱动TFT液晶屏,请问怎样实现液晶对比度(contrast)的调节?
    发表于 09-29 10:07

    如何调整hp3784A显示屏的对比度

    早上好。谁能帮助我知道如何调整hp3784A显示屏的对比度?谢谢你们。 以上来自于谷歌翻译 以下为原文Good morning. Can anyone help me to know how
    发表于 10-08 14:38

    LT1183CS LCD对比度正升压转换器的典型应用电路

    LT1183CS LCD对比度正升压转换器LT1183CS的典型应用电路。 LT1183是一款双电流模式开关稳压器,可为冷阴极荧光灯(CCFL)和液晶显示器(LCD)对比提供控制功能
    发表于 04-09 07:20

    具有双极性对比度的浮动CCFL

    DN99- 具有双极性对比度的浮动CCFL
    发表于 08-14 07:56

    FPGA实时视频图像处理系统的原理是什么?

    来说,滤除噪声、扩展对比度、锐化以及色彩增强等处理能显著提升视觉效果。这里设计一个基于FPGA的实时视频图像处理系统,包含增强对比度扩展和色
    发表于 08-22 08:22

    如何设计基于FPGA的彩色图像增强系统?

    在从图像源到终端显示的过程中,电路噪声、传输损耗等会造成图像质量下降,为了改善显示器的视觉效果,常常需要进行图像增强处理。图像增强处理有很强的针对性,没有统一的*价标准,从一般的图片、视频欣赏角度来说,滤除噪声、扩展对比度、锐化
    发表于 10-21 07:52

    Visual Studio Code/PlatformIO为什么无法控制亮度和对比度

    我制作了带有 WROOM-32E 模块的 PCB。PCB 包括一个 16x2 LCD 显示屏,使用 16 针并联连接。我通过使用几个 GPIO 引脚的 PWM 控制来控制显示器的对比度和亮度
    发表于 04-12 08:09

    一种视频数据流对比度增强组合方法

    针对视频图像的特点,提出了一种直方图灰度变换与平台直方图均衡相结合的图像对比度增强方法。以图像序列的时间平稳特征方差为基础,根据直方图灰度变化范围采用不同
    发表于 12-07 11:13 18次下载