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

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

3天内不再提示

基于FPGA灰度直方图线性拉伸

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-06-08 10:15 次阅读

直方图线性拉伸相对于直方图均衡化来说就更好理解一些了,即用线性变化将灰度直方图较窄的部分拉伸至整个区间,增强整幅图像的对比度。

线性拉伸的效果如下图所示,可以看出图像对比度有所改善,保留了直方图基本的轮廓,同时将直方图范围拉伸至0~255。

25399d48-e6be-11ec-ba43-dac502259ad0.png

25629914-e6be-11ec-ba43-dac502259ad0.png

图 1 直方图拉伸效果图

算法也比较容易理解,f(x,y)为输入图像,得到输出图像g(x,y)

25722e56-e6be-11ec-ba43-dac502259ad0.png

其中A和B可以分别定义为图像的最小灰度值与最大灰度值,即

25945954-e6be-11ec-ba43-dac502259ad0.png

但是实际应用中并不会直接采用上述的A和B,这是由于图像中可能存在噪声的原因。想象如果图像中存在几个纯白点(255)和纯黑点(0),那么拉伸后的效果就无法达到预期。

因此我们人为的设定两个阈值Thr_Min和Thr_Max,拉伸系数A,B定义如下:

25c7cea6-e6be-11ec-ba43-dac502259ad0.jpg

其中∑H(k)为灰度直方图累计和。下图更直观的表示了A和B的取值,Thr_ Min和Thr_Max是蓝色部分的面积。

25f34a18-e6be-11ec-ba43-dac502259ad0.png

图 2 A,B系数的定义

系统框架

26ae6b22-e6be-11ec-ba43-dac502259ad0.jpg

图 3 直方图线性拉伸系统框架

上图可以看出,前半部分的直方图统计电路和上篇均衡化完全一样,只是对后半部分的电路做了些修改。计算直方图线性拉伸后的像素值的步骤如下:

1. 统计第一帧图像的灰度直方图

2. 计算直方图累计和

3. 由阈值Thr_Min和Thr_Max算出拉伸系数A,B

4. 第二帧图像灰度值带入公式计算后输出

和直方图均衡化一样,这里我们不考虑帧缓存的问题,也就是前一帧的A,B作为当前帧A,B来使用。

代码分析

A,B系数的计算

hist_cnt为计算出的累计和(与直方图均衡化中的求法一样),当累计和大于阈值的时候,记录下此时累计和对应的地址out_pixel[8:1](即灰度值),作为我们的拉伸系数A,B,同时设置取得系数标志get_max或get_min为1。最后要在第二帧累计和到来时,清零A,B及get标志。

279244be-e6be-11ec-ba43-dac502259ad0.jpg

2. B-A的计算

取得系数B后(get_max=1),即可计算出B-A 。

27c76586-e6be-11ec-ba43-dac502259ad0.png

3. f(x,y)-A (第一级流水)

当f(x,y)小于系数A时,直接令f(x,y)-A=0;当f(x,y)大于系数B时,直接令f(x,y)-A=B-A。

27ed46ca-e6be-11ec-ba43-dac502259ad0.png

4. [f(x,y)-A ]*255 (第二级流水)

28182ec6-e6be-11ec-ba43-dac502259ad0.png

5.[f(x,y)-A ]*255/(B-A) (第三级流水)

28428c0c-e6be-11ec-ba43-dac502259ad0.png

实验结果

28c47960-e6be-11ec-ba43-dac502259ad0.png

290b03bc-e6be-11ec-ba43-dac502259ad0.png

图 4 原图 图 5 阈值为100时处理后的图像

有没有觉得这两幅图并没有什么差别,小编也纳闷了很久。之前有提到过噪声可能对直方图线性拉伸的影响,下面是将阈值Thr_Min调高至1000后得到的结果。

2966416e-e6be-11ec-ba43-dac502259ad0.png

图 6 阈值为1000时处理后的图像

可以看出直方图线性拉伸需要人为的调整阈值的大小,才能达到理想效果。而直方图均衡化则不需要。

审核编辑 :李倩

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

    关注

    1625

    文章

    21664

    浏览量

    601723
  • 图像
    +关注

    关注

    2

    文章

    1083

    浏览量

    40410
  • 线性
    +关注

    关注

    0

    文章

    196

    浏览量

    25128

原文标题:基于FPGA灰度直方图线性拉伸

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于直方图算法进行FPGA架构设计

    加速。安排如下: 首先基于直方图算法进行FPGA架构设计,这里主要考虑了如何加速以及FPGA资源的利用两个因素;最后基于system Verilog搭建一个验证系统。 FPGA设计架构
    的头像 发表于 12-10 16:37 2749次阅读

    一文带你了解FPGA直方图操作

    灰度变换等处理过程。 而FPGA对于直方图处理主要分为以下三种: 我们常见或者听说的直方图概念主要指直方图均衡,这也是最简单的一种方式,常
    发表于 01-10 15:07

    图像自适应分段线性拉伸算法的FPGA设计

    。1 自适应线性分段线性灰度拉伸算法首先对红外图像做灰度直方图统计,低信噪比条件下,选取压缩因
    发表于 04-27 14:37

    基于FPGA的HDTV视频图像灰度直方图统计算法设计

    亮度分布特性有力的工具,根据它的结果可以进行诸如灰度拉伸、自动对比度、动态伽马调整等操作。图1 Lena 图像的灰度直方图统计FPGA算法统
    发表于 05-14 12:37

    FPGA图像处理 直方图统计并灰度拉伸 然后VGA显示的问题

    本人目前用FPGA做一个图像处理并VGA显示的东西,中间用到直方图统计并灰度拉伸,使图像对比度提高。现在遇到一个问题,取统计的5%和95%的灰度
    发表于 06-28 09:35

    基于FPGA的图像直方图均衡处理

    `基于FPGA的图像直方图均衡处理 AT7_Xilinx开发板(USB3.0+LVDS)资料共享 腾讯链接:https://share.weiyun.com/5GQyKKc 百度网盘链接:https
    发表于 07-14 17:26

    如何实现HDTV视频增强算法中灰度直方图统计?

    本文介绍了如何在FPGA中利用Block RAM的特殊结构实现HDTV视频增强算法中灰度直方图统计。
    发表于 04-30 07:34

    TI C6000教学实验箱操作教程:5-8 直方图均衡化(LCD显示)

    是间接对比度增强方法。直方图拉伸直方图均衡化是两种最常见的间接对比度增强方法。直方图拉伸是通过对比度拉伸直方图进行调整,从而“扩大”前景
    发表于 12-07 14:20

    MATLAB如何实现图像增强灰度变换直方图均衡匹配

    在MATLAB数字图像处理领域,如何实现空间域图像增强的灰度变换,以及图像直方图的均衡和匹配(配准)?本文通过大量的图片增强案例,从图像的显示效果和灰度直方图分析入手,通过自编程,详细
    发表于 01-13 21:56 1.1w次阅读
    MATLAB如何实现图像增强<b class='flag-5'>灰度</b>变换<b class='flag-5'>直方图</b>均衡匹配

    如何用FPGA的Block RAM性能实现HDTV视频增强算法中灰度直方图统计

    本文介绍了如何在FPGA 中利用Block RAM 的特殊结构实现HDTV视频增强算法中灰度直方图统计。
    的头像 发表于 07-10 08:10 2839次阅读

    如何使用FPGA实现图像灰度拉伸算法

    为了调整图像数据灰度,介绍了一种图像灰度拉伸算法的FPGA实现方法,并针对FPGA的特点对算法的实现方法进行了研究,从而解决了其在导引系统
    发表于 04-01 14:14 10次下载
    如何使用<b class='flag-5'>FPGA</b>实现图像<b class='flag-5'>灰度</b>级<b class='flag-5'>拉伸</b>算法

    如何使用FPGA实现图像灰度拉伸算法

    为了调整图像数据灰度,介绍了一种图像灰度拉伸算法的FPGA实现方法,并针对FPGA的特点对算法的实现方法进行了研究,从而解决了其在导引系统
    发表于 04-01 14:14 1次下载
    如何使用<b class='flag-5'>FPGA</b>实现图像<b class='flag-5'>灰度</b>级<b class='flag-5'>拉伸</b>算法

    剖析FPGA灰度直方图线性拉伸

    纯工程师社群 直方图线性拉伸相对于直方图均衡化来说就更好理解一些了,即用线性变化将灰度直方图较窄
    的头像 发表于 07-02 10:37 3071次阅读
    剖析<b class='flag-5'>FPGA</b><b class='flag-5'>灰度</b><b class='flag-5'>直方图线性</b><b class='flag-5'>拉伸</b>

    基于FPGA直方图线性拉伸的解决方案与对比分析

    但是实际应用中并不会直接采用上述的A和B,这是由于图像中可能存在噪声的原因。想象如果图像中存在几个纯白点(255)和纯黑点(0),那么拉伸后的效果就无法达到预期。
    的头像 发表于 07-02 10:38 2183次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>直方图线性</b><b class='flag-5'>拉伸</b>的解决方案与对比分析

    基于FPGA直方图拉伸方案

    在视频处理中,为了能够实时调节图像的对比对,通常需要对直方图进行拉伸处理。
    的头像 发表于 05-04 09:38 1144次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>直方图拉伸</b>方案