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

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

3天内不再提示

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

FPGA之家 来源:记忆面包呀 作者:记忆面包呀 2021-07-02 10:37 次阅读

工程师社群

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

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

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

be11c76a-dadb-11eb-9e57-12bb97331649.png

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

be1d80f0-dadb-11eb-9e57-12bb97331649.png

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

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

be2b8880-dadb-11eb-9e57-12bb97331649.jpg

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

be46fdae-dadb-11eb-9e57-12bb97331649.png

图 2 A,B系数的定义

系统框架

be7b6ecc-dadb-11eb-9e57-12bb97331649.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标志。

beb9b696-dadb-11eb-9e57-12bb97331649.jpg

2. B-A的计算

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

becfaae6-dadb-11eb-9e57-12bb97331649.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。

bef2b4c8-dadb-11eb-9e57-12bb97331649.png

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

bf151e50-dadb-11eb-9e57-12bb97331649.png

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

bf25299e-dadb-11eb-9e57-12bb97331649.png

实验结果

有没有觉得这两幅图并没有什么差别,小编也纳闷了很久。之前有提到过噪声可能对直方图线性拉伸的影响。

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

编辑:jq

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

    关注

    172

    文章

    5908

    浏览量

    172218
  • 代码
    +关注

    关注

    30

    文章

    4786

    浏览量

    68568
  • 直方图
    +关注

    关注

    0

    文章

    21

    浏览量

    7883
收藏 人收藏

    评论

    相关推荐

    基于FPGA实现图像直方图设计

    直方图统计的原理 直方图统计从数学上来说,是对图像中的像素点进行统计。图像直方图统计常用于统计灰度图像,表示图像中各个灰度级出现的次数或者概
    的头像 发表于 12-24 10:24 77次阅读
    基于<b class='flag-5'>FPGA</b>实现图像<b class='flag-5'>直方图</b>设计

    nginx+lua+redis实现灰度发布

    作者:马仁喜 前言: 授人以鱼不如授人以渔 .先学会用,在学原理,在学创造,可能一辈子用不到这种能力,但是不能不具备这种能力。这篇文章主要是沉淀使用nginx+lua+redis实现灰度,当我们具备
    的头像 发表于 12-17 10:01 53次阅读

    ADS7057EVM-PDK直方图测试数据异常怎么解决?

    对ADS7057EVM-PDK进行直方图测试,发现直方图数据异常,具体表现为个别码值的采样点数异常增多,怀疑评估板出现问题。 测试条件具体如下: 使用TI公司的PSIEVM提供正弦输入信号,输入
    发表于 11-22 13:16

    DSP教学实验箱_数字图像处理操作_案例分享:5-13 灰度图像二值化

    方法是使用直方图方法(也叫双峰法)来寻找二值化阈值,直方图是图像的重要特质。直方图方法认为图像由前景和背景组成,在灰度直方图上,前景和背景都
    发表于 07-25 15:03

    DSP国产教学实验箱_嵌入式教程:5-7 直方图均衡化

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

    DSP教学实验箱操作教程_数字图像处理:5-5 灰度图像直方图

    一、实验目的 学习直方图统计的原理,掌握图像的读取方法,并实现灰度图像的直方图统计结果。 二、实验原理 灰度直方图
    发表于 06-25 15:10

    FPGA设计经验之图像处理

    各个像素灰度累加和; 2.乘以均衡系数:(2^DW-1)/IW*IH(像素最大值/图像的面积)。 3.直方图线性拉伸处理 此节暂时略过,不太精通,后续有时间可以研究再分享一下
    发表于 06-12 16:26

    基于FPGA的实时边缘检测系统设计,Sobel图像边缘检测,FPGA图像处理

    RGB565 转化为 RGB888,再将 RGB888 转为 YCbCr 格式,最后提取其中的 Y 分量即可得到灰度图像 。RGB888与 YCbCr 转换公式如下: 由于 FPGA 无法直接运算浮点数
    发表于 05-24 07:45

    一种可实现稳定压力传感的新型可拉伸电子皮肤

    现有的电子皮肤会随材料拉伸而降低传感精度。美国得克萨斯大学奥斯汀分校研究人员开发出一种新型可拉伸电子皮肤,解决了这项新兴技术的一个主要难题。
    的头像 发表于 05-09 09:07 466次阅读

    字符液晶模块灰度显示

    正如STN液晶面板试玩中所解释的,STN液晶显示器的灰度显示是通过逐帧的点ON/OFF比例控制(所谓的PWM)来进行的。由于STN液晶的反应较慢,ON/OFF以平均浓度显示。图形 LCD 控制器在硬件中处理此问题(三维抖动)。
    发表于 02-02 16:54 413次阅读
    字符液晶模块<b class='flag-5'>灰度</b>显示

    LRA线性马达:震撼科技的力量

    LRA线性马达(Linear Resonant Actuator)是一种基于共振原理的线性震动马达,广泛应用于手机、游戏手柄、触觉反馈设备等领域。本文将深入剖析LRA线性马达的原理、工
    的头像 发表于 02-02 09:27 1134次阅读
    LRA<b class='flag-5'>线性</b>马达:震撼科技的力量

    FPGA图像处理之CLAHE算法的线性差值

    对于最后一种情况,也就是位于中间白色区域的点,他需要进行双线性插值。可以看到整个点位于第四个block,所以他需要在第一个,第二个,第四个和第五个block上分别计算直方图均衡化的结果,和相应的权重。
    发表于 01-21 10:51 1859次阅读
    <b class='flag-5'>FPGA</b>图像处理之CLAHE算法的<b class='flag-5'>线性</b>差值

    图像直方图的应用场景

    之前写过很多图像直方图相关的知识跟OpenCV程序演示,这篇算是把之前的都回顾一波。做好自己的知识梳理。
    的头像 发表于 01-17 15:01 449次阅读
    图像<b class='flag-5'>直方图</b>的应用场景

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

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

    为什么不能直接对RGB图做直方图均衡化

    相信好多人在开始学习FPGA图像处理的时候都是接触的RGB转灰度图,Sobel图像检测,直方图均衡化这样的算法。
    的头像 发表于 01-02 09:41 1175次阅读
    为什么不能直接对RGB图做<b class='flag-5'>直方图</b>均衡化