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

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

    关注

    170

    文章

    5480

    浏览量

    169475
  • 代码
    +关注

    关注

    30

    文章

    4554

    浏览量

    66732
  • 直方图
    +关注

    关注

    0

    文章

    19

    浏览量

    7830
收藏 人收藏

    评论

    相关推荐

    图像直方图的应用场景

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

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

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

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

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

    FPGA直方图处理方法

    图像直方图用作数字图像中色调分布的图形表示。它绘制了每个色调值的像素数。通过查看特定图像的直方图,观看者将能够一目了然地判断整个色调分布。
    的头像 发表于 12-15 09:20 325次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>直方图</b>处理方法

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

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

    嵌入式操作教程:在LCD上显示灰度图像的直方图统计结果

    学习直方图统计的原理,掌握图像的读取方法,并实现在LCD上显示灰度图像的直方图统计结果。
    的头像 发表于 11-30 16:10 546次阅读
    嵌入式操作教程:在LCD上显示<b class='flag-5'>灰度</b>图像的<b class='flag-5'>直方图</b>统计结果

    嵌入式操作教程_DSP教学实验箱:5-6 灰度图像直方图(LCD显示)

    一、实验目的 学习直方图统计的原理,掌握图像的读取方法,并实现在LCD上显示灰度图像的直方图统计结果。 二、实验原理 灰度直方图
    发表于 11-30 10:42

    为什么要进行正弦直方图测试?正弦直方图方法测试模数转换器

    使用正弦直方图测试方法可以确定模拟数字转换器(ADC)的参数,并优于线性斜坡直方图测试方法。
    的头像 发表于 10-22 15:58 1246次阅读
    为什么要进行正弦<b class='flag-5'>直方图</b>测试?正弦<b class='flag-5'>直方图</b>方法测试模数转换器

    图像的几种常见的灰度是什么

    作用: 改善图像的质量,使图像能够显示更多的细节 ,提高图像的对比度(对比度拉伸); 有选择的 突出图像感兴趣的特征或者抑制图像中不需要的特征; 可以 有效的改变图像的直方图分布,使像素的分布更为均匀。 常见的灰度变换
    的头像 发表于 08-07 10:02 1243次阅读
    图像的几种常见的<b class='flag-5'>灰度</b>是什么

    雷达信号处理-线性调频波形产生

    下图为上图线性调频信号对应额的匹配滤波系数,该系数与原始波形的关系为共轭(虚部反相)镜像(时间上翻转)。
    的头像 发表于 07-04 15:21 1028次阅读
    雷达信号处理-<b class='flag-5'>线性</b>调频波形产生

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

    最近一直在用FPGA调图像处理相关的算法,主要是集中在图像增强和增晰方面。
    发表于 06-29 09:23 701次阅读
    基于<b class='flag-5'>FPGA</b>的图像处理之<b class='flag-5'>直方图</b>均衡

    荐读:FPGA设计经验之图像处理

    的面积)。 3.直方图线性拉伸处理 此节暂时略过,不太精通,后续有时间可以研究再分享一下; 4.线性滤波器 首先需要区分线性和非
    发表于 06-08 15:55

    为什么图片识别要将彩色图像灰度化?

        先前在为大家介绍OCR识别技术时,在图像预处理部分提到了灰度化,大家可能会产生疑惑: 为什么做图片识别要将彩色图像灰度化呢?   正式解释这个问题之前,我们需要了解, 什么是灰度
    发表于 05-28 11:36 1684次阅读
    为什么图片识别要将彩色图像<b class='flag-5'>灰度</b>化?

    本次视频教程讲解的是灰度图像直方图实验,图像数据通过LCD显示。

    1、实验目的 本节视频的目的是学习直方图统计的原理,掌握图像的读取方法,并实现在LCD上显示灰度图像的直方图统计结果。 2、实验原理 直方图是用来整理计量值的观测数据,分析其
    发表于 05-25 11:23

    基于FPGA直方图拉伸方案

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