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

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

3天内不再提示

FPGA为什么要做直方图均衡化

454398 来源:FPGA干货架 作者:romme 2020-11-19 17:03 次阅读

作者:romme

1、图像直方图概念

图像直方图用来反映一副图像的像素分布。其中,横坐标表示图像像素的灰度级,纵坐标表示每个灰度级对应的像素总数或占所有像素个数的百分比。


例如:灰度级为[0~255]的数字图像直方图,定义:

h(rk)= nk

其中,rk是第k个灰度级(k = 0~255),nk是该灰度级的个数。

若以每个灰度级的个数nk去除以图像像素总数n,则得到归一化的直方图,定义:

P(rk)= nk/n

即,P(rk)表示灰度级为rk发生的概率估计值。所以:一个归一化直方图,其所有部分之和应等于1。

2、为什么要做直方图均衡化

在图像处理应用中,若得到这样一副图片,其图像的灰度分布集中在较窄的范围内,那么视觉上就给人感觉,对比度较差,细节不够清晰。为了使图像变得清晰,就需要提升对比度。

如何提升对比度呢?即,对图像进行非线性拉伸,使得图像的灰度分布变宽,灰度值分布变得均匀。这样,在灰度级范围内,像素的个数分布大致相同,就会使得图像的对比度增强,细节更清晰。

那么,又如何使得灰度值分布均匀呢?即,直方图均衡化。

3、直方图均衡化原理

直方图均衡化,即将随机分布的图像直方图修改成均匀分布的直方图。

基本思想:对原始图像的像素灰度做某种映射变换,使变换后图像灰度的概率密度呈均匀分布。这就意味着图像灰度的动态范围得到了增加, 提高了图像的对比度。

作用:图像增强。

那么,我们使用哪种映射变换呢?答案是:累积分布函数。

说明:

①为什么要选用累积分布函数?

②为什么使用累积分布函数处理后,像素值会均匀分布?

直方图均衡化,必须保证:

①像素值经过映射变换后,原本的大小关系不能发生改变。即较亮的区域,依旧较亮;较暗的区域,依旧较暗。只是增大了对比度,绝对不能明暗颠倒,否则就不是原本的图像了。

②像素值经过映射变换后,不能越界。例如:8bit图像,像素值范围0~255;12bit图像,像素值0~4095。

由于累积分布函数是单调递增函数,可以满足条件①;又因为累积分布函数的值域为0~1,可以控制越界,满足条件②。

实则,有严谨的数学推导过程,在此直接给出公式,具体可以参考《数字图像处理---冈萨雷斯》一书。


其中,H(i)表示图像直方图,nk/n表示归一化。

所以,直方图均衡化实现过程:

(1)求图像直方图;(统计直方图每个灰度级出现的次数)

(2)做归一化处理;

(3)计算新的像素值。

4、FPGA实现

FPGA实现的核心在于算法,弄清楚原理,写代码只是一个机械的过程。假设一副图像:2464x2056, 8bit,即共有5065984个像素点,256个灰度级。参照上述直方图均衡化的步骤,用FPGA实现,效果展示如下:

编辑:hfy


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

    关注

    1600

    文章

    21286

    浏览量

    592895
  • 图像处理
    +关注

    关注

    26

    文章

    1220

    浏览量

    55780
收藏 人收藏

    评论

    相关推荐

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

    引言 直方图统计在图像增强和目标检测领域有重要应用,比如直方图均衡,梯度直方图直方图的不同种类和统计方法请见之前的文章。本章就是用
    的头像 发表于 12-10 16:37 2398次阅读

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

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

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

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

    急求直方图均衡的Verilog代码或者是FPGA上算法处理的资料,多谢了

    急求直方图均衡的Verilog代码或者是FPGA上算法处理的资料,多谢了
    发表于 06-02 17:51

    使用LabVIEW编程实现直方图均衡

    使用LabVIEW编程实现直方图均衡
    发表于 11-13 20:24

    基于FPGA的图像直方图实时显示

    文件夹下的draw_histogram_from_FPGA_result.m脚本,可以同时比对Matlab和FPGA统计的直方图输出结果。由于FPGA统计结果是一个归一
    发表于 07-12 17:33

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

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

    如何实现视频图像灰度信号直方图均衡

    直方图均衡作为一种基础的图像处理方法在很多领域得到应用,但大多是通过DSP或者CPU编程实现,其优点是灵活性比较高,调试方便,最大的缺点是很难做到实时或者准实时处理,这在某些领域是不可接受的。
    发表于 11-08 08:25

    【干货】基于FPGA的图像处理(图像增强)之直方图均衡

    最近一直在用FPGA调图像处理相关的算法,主要是集中在图像增强和增晰方面。现在来介绍一个复杂度不高,但确实也还比较好用的图像增强算法-直方图均衡直方图
    发表于 12-08 09:40

    玩转Zynq连载47——[ex66] MT9V034摄像头的图像直方图均衡处理

    的原始图像变换为具有均匀分布直方图的图像。显然,直方图均衡可以增加像素灰度值的动态范围,使每一灰度层次所占的像素个数尽量均等,可以改善图像的整体对比度。下面在灰度值为模拟量的情况下讨
    发表于 01-02 09:25

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

    一、实验目的 学习直方图均衡的原理,掌握图像的读取方法,并实现在LCD上显示直方图均衡前后的
    发表于 12-07 14:20

    保持图像细节的直方图均衡算法

    对常规的直方图均衡算法进行了改进,避免了不同灰度的像素均衡后被合并、图像细节丢失等现象。实验结果表明,改进的直方图均衡新算法既能充分增强图像
    发表于 11-09 16:50 21次下载

    直方图均衡化_《OpenCV3编程入门》书本配套源代码

    《OpenCV3编程入门》书本配套源代码:直方图均衡
    发表于 06-06 15:52 6次下载

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

    直方图统计在图像增强和目标检测领域有重要应用,比如直方图均衡,梯度直方图直方图的不同种类和统计方法请见之前的文章。本章就是用
    发表于 04-20 10:47 1082次阅读
    基于<b class='flag-5'>直方图</b>算法的<b class='flag-5'>FPGA</b>设计架构

    直方图均衡化的原理及OpenCV的算法和代码实现免费下载

    直方图均衡化是想把左边的直方图变换为右边的直方图,使各个灰度值上的像素个数均匀分布,这样图像整体的亮度分布较均匀,不会过亮或过暗,同时可以增加图像的对比度。
    发表于 09-25 11:10 8次下载
    <b class='flag-5'>直方图</b><b class='flag-5'>均衡</b>化的原理及OpenCV的算法和代码实现免费下载