FPGA实现灰度直方图均衡

目录

前言

1、概述

2、FPGA实现直方图均衡化

参考文献


 

前言

关于数字图像处理方面的学习,不要仅关注于书籍、博客等其他人是如何用FPGA实现的。

算法原理仅有一种,但实现方式可以多种多样。他人的实现方式,仅仅是一种参考!

所以,重点是对算法原理的理解和掌握,独立思考如何采用FPGA实现。这个过程比简简单单的看懂别人的代码重要许多倍!

在理解掌握算法原理之后,再有自己的初步实现设计之后,可以考虑对比一下其他人的设计思路,比较一下优缺点,思考如何做优化、如何提高速度、如何提高效率等问题。

书籍推荐阅读《数字图像处理(第三版)冈萨雷斯》。

 

本文整理学习了关于灰度直方图、直方图均衡化的相关概念理论,并尝试使用FPGA进行实现直方图均衡。

文后,附上所参考的博客链接。

 

1、概述

概念一:灰度直方图

直方图:统计一副图像中各个灰度级出现的次数或概率;

我们来看一个灰度图像,让n_i表示灰度i出现的次数,这样图像中灰度为i 的像素的出现概率是

L 是图像中所有的灰度数,n 是图像中所有的像素数, p 实际上是图像的直方图,归一化到 0..1

概念二:累计概率分布函数(又称为“ 累计归一化直方图 ”、“直方图累计和”)

把 c 作为对应于 p 的累计概率分布函数, 定义为:

则,c 是图像的累计归一化直方图

概念三:直方图均衡

注意:

概念2中的c(i),与概念3中的是相同含义,即累计概率分布。

 

概念四:直方图均衡的深入理解

直方图均衡化的作用是图像增强。

有两个问题比较难懂,一是为什么要选用累计概率分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布。

第一个问题。均衡化过程中,必须要保证两个条件:

        ①像素无论怎么映射,一定要保证原来的大小关系不变,较亮的区域,依旧是较亮的,较暗依旧暗,只是对比度增大,绝对不能明暗颠倒;

       ②如果是八位图像,那么像素映射函数的值域应在0和255之间的,不能越界。综合以上两个条件,累积分布函数是个好的选择,因为累积分布函数是单调增函数(控制大小关系),并且值域是0到1(控制越界问题),所以直方图均衡化中使用的是累积分布函数。

第二个问题。累积分布函数具有一些好的性质,那么如何运用累积分布函数使得直方图均衡化?比较概率分布函数和累积分布函数,前者的二维图像是参差不齐的,后者是单调递增的。

直方图均衡化过程中,映射方法是:

其中,n是图像中像素的总和,是当前灰度级的像素个数,L是图像中可能的灰度级总数。

来看看通过上述公式怎样实现的拉伸。假设有如下图像:

其中,n是图像中像素的总和,是当前灰度级的像素个数,L是图像中可能的灰度级总数。

来看看通过上述公式怎样实现的拉伸。假设有如下图像:

得图像的统计信息如下图所示,并根据统计信息完成灰度值映射:

关于上图,可以参考概念三种的公式进行理解。因为在FPGA实现直方图均衡化时,具体采用的是概念三中的公式,如下所示:

举例说明:

在第一行中,灰度值为DA=50,灰度级i=50,像素个数为H(i)=4,总像素个数为16,

由于灰度级范围在[0,255],但实际上只有50/128/200/255有数值,其他均为0,

所以,累计概率分布c(i)=c(50)=0.25=

在第二行中,灰度值DA=128,灰度级i=128的像素个数为3,总像素个数为16,

累计概率分布c(i)=c(128)=[0+0+...+H(50)+0+...+H(128)] / 16=(4+3) / 16 =0.4375

 c(i) * Dmax = 映射后的灰度值。

映射后的图像如下所示:

以上就是直方图映射均衡化的步骤,当然还有一些基于此的更优算法,比如Photoshop中的方法,在此就不一一列举了,大同小异。

2、FPGA实现直方图均衡化

    采用下面公式和步骤:

2.1 图片直方图均衡化

图片像素大小128x128,8位深度;

 

 

 

2.2 视频流直方图均衡化方案

 

 

 

 

 

 

未完,待续。缓更中

 

 

 

 

参考文献

[1]    https://www.cnblogs.com/tianyalu/p/5687782.html

[2]    https://blog.csdn.net/LZY272942518/article/details/46663599

[3]    https://blog.csdn.net/helimin12345/article/details/73395576

[4]   《数字图像处理(第三版)冈萨雷斯》

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值