ISP FPGA上实现HDR算法

首先,HDR的算法通过软件的实现方式有很多种,对于硬件(FPGA)来说,存在运算过程中要求缓存少,少乘除法运算等等的限制。基于上述考虑,主要参考早期的一篇论文: Paul E. Debevec等人的《Recovering High Dynamic Range Radiance Maps from Photographs》的算法,来完成FPGA上的HDR图像合成。

算法的原理详解网上很多,在opencv中也有对应这个算法的软件实现。这里不详述,这篇文章主要是针对FPGA上的实现。

先放效果:(matlab版本,定点化后的结果,右下角的是处理后的结果)

(该图片涉及隐私,已删除)

 

从上图中的直方图可以看到,处理后的直方图分布比较均匀,明暗细节都能看清楚(室内属于暗处,玻璃窗户外属于亮处)。

 

2. FPGA的实现。

要实现HDR的功能,最好使用带有HDR模式输出的cmos sensor,这种sensor在图像输出时会将长、中、短曝光的三帧图像按行进行列交替输出(即...长0...中0...短0...长1...中1...短1...这种顺序输出)。那么在FPGA内处理时,只需要进行2行数据的缓存即可,大大降低了硬件缓存的需求。 由于我使用的是黑白图像的sensor,处理的是黑白图像HDR,原理与上述的彩色是基本一致的。(matlab仿真结果,我将原始图像进行了缩小,方便modelsim的图像导入和仿真)

(该图片涉及隐私,已删除)

 

在FPGA实现的过程中,有几个难点的地方:

第一是对sensor的响应曲线进行推算;

第二是算法中存在exp指数运算,需要特殊处理。

下图为该HDR模块的硬件实现的大致框图:

 

转载于:https://www.cnblogs.com/fpga-designer/p/10945556.html

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值