HDR 拍照模式的原理,实现及应用
2023-09-11 14:21:03 时间
HDR 拍照:
(High Dynamic Range Imaging)高动态范围成像,是用来实现比普通数字图像技术更大曝光动态范围(即更大的明暗区别)的一组技术。
高动态范围成像的目的就是要正确地表示真实世界中从太阳光直射到最暗的阴影这样大的范围亮度。如今一般的数码相机和手机中都实现这样的拍照模式。
适合场景:
比較适合在阴暗变化明显的场景下使用,这样能使明处的景物不致过曝,而使得暗处的景物不致欠曝。譬如逆光环境下拍人物,能够将人物和环境都能拍清晰。
或者说能将处在暗处的景物拍摄出来的细节表现得更加充分!
以下来看几组照片:
代码实现:
在 xxx\ALPS.JB3.TDD.MP.V2_TD_xxx\mediatek\custom\common\kernel\imgsensor\ov5645_mipi_yuv\ov5645mipiyuv_Sensor.c 驱动文件里有这样一个函数
此函数会运行三次,分别跑了 AE_EV_COMP_00, AE_EV_COMP_20, AE_EV_COMP_n20 这三个 case, 这三个 case 中分别以三组 totalGain 和 exposureTime 值来进行曝光的。
能够看到这三组值所呈现的0.5,1,2倍的关系。
參考文档:
http://bbs.fengbao.com/thread-236103-1-1.html
注:此篇文章中将 HDR 拍摄技巧描写叙述得非常好,有须要的能够具体看下
(High Dynamic Range Imaging)高动态范围成像,是用来实现比普通数字图像技术更大曝光动态范围(即更大的明暗区别)的一组技术。
高动态范围成像的目的就是要正确地表示真实世界中从太阳光直射到最暗的阴影这样大的范围亮度。如今一般的数码相机和手机中都实现这样的拍照模式。
适合场景:
比較适合在阴暗变化明显的场景下使用,这样能使明处的景物不致过曝,而使得暗处的景物不致欠曝。譬如逆光环境下拍人物,能够将人物和环境都能拍清晰。
或者说能将处在暗处的景物拍摄出来的细节表现得更加充分!
以下来看几组照片:
图1
如上图1中所看到的,开启 HDR 后,暗处的树和墙壁都获得正确的曝光,都能看得清楚。
图2
图3
如上图3中开启了 HDR, 左上角及楼道里的场景能拍得更亮一些。图片均来自网络!
事实上现方法是通过设三组 ev 值来对当前拍摄的景物曝光,一张照片是使用当前測光从而算出来的正常情况下的ev值曝光,另外两张则分别使用其0.5倍的ev值和2倍的ev值进行曝光。终于对三张照片按某种算法进行合成,暗处的景物使用2倍ev曝光的局部照片,而亮处的物体则使用0.5倍ev曝光的局部照片。这样就能使得整个照片的场景都不致于太亮或太暗。
代码实现:
在 xxx\ALPS.JB3.TDD.MP.V2_TD_xxx\mediatek\custom\common\kernel\imgsensor\ov5645_mipi_yuv\ov5645mipiyuv_Sensor.c 驱动文件里有这样一个函数
BOOL OV5645MIPI_set_param_exposure_for_HDR(UINT16 para) { kal_uint32 totalGain = 0, exposureTime = 0; OV5645MIPISENSORDB("[OV5645MIPI]enter OV5645MIPI_set_param_exposure_for_HDR function:\n "); OV5645MIPISENSORDB("[OV5645MIPI]enter para=%d,manualAEStart%d\n",para,OV5645MIPISensor.manualAEStart); if (0 == OV5645MIPISensor.manualAEStart) { OV5645MIPI_set_AE_mode(KAL_FALSE);//Manual AE enable spin_lock(&ov5645mipi_drv_lock); OV5645MIPISensor.manualAEStart = 1; spin_unlock(&ov5645mipi_drv_lock); } totalGain = OV5645MIPISensor.currentAxDGain; exposureTime = OV5645MIPISensor.currentExposureTime; switch (para) { case AE_EV_COMP_20: //+2 EV case AE_EV_COMP_10: // +1 EV totalGain = totalGain<<1; exposureTime = exposureTime<<1; OV5645MIPISENSORDB("[4EC] HDR AE_EV_COMP_20\n"); break; case AE_EV_COMP_00: // +0 EV OV5645MIPISENSORDB("[4EC] HDR AE_EV_COMP_00\n"); break; case AE_EV_COMP_n10: // -1 EV case AE_EV_COMP_n20: // -2 EV totalGain = totalGain >> 1; exposureTime = exposureTime >> 1; OV5645MIPISENSORDB("[4EC] HDR AE_EV_COMP_n20\n"); break; default: break;//return FALSE; } totalGain = (totalGain > OV5645MIPI_MAX_AXD_GAIN) ? OV5645MIPI_MAX_AXD_GAIN : totalGain; //exposureTime = (exposureTime > OV5645MIPI_MAX_EXPOSURE_TIME) ? OV5645MIPI_MAX_EXPOSURE_TIME : exposureTime; OV5645MIPIWriteSensorGain(totalGain); OV5645MIPIWriteShutter(exposureTime); OV5645MIPISENSORDB("[OV5645MIPI]exit OV5645MIPI_set_param_exposure_for_HDR function:\n "); return TRUE; }
此函数会运行三次,分别跑了 AE_EV_COMP_00, AE_EV_COMP_20, AE_EV_COMP_n20 这三个 case, 这三个 case 中分别以三组 totalGain 和 exposureTime 值来进行曝光的。
能够看到这三组值所呈现的0.5,1,2倍的关系。
參考文档:
http://bbs.fengbao.com/thread-236103-1-1.html
注:此篇文章中将 HDR 拍摄技巧描写叙述得非常好,有须要的能够具体看下
相关文章
- 【GraphQL】使用Hot Chocolate和.NET Core构建GraphQL应用
- 基于概率统计分析的应用流特征分析
- LeetCode高频题:Android系统中WakeLock防止手机进入睡眠模式,统计出每个应用对WakeLock的不同贡献值
- 打造多维度云应用及服务——高校信息化的云服务交付模式创新
- CAAI演讲实录|微软邓力:驱动大数据人工智能多种应用的三类深度学习模式
- postgresql 先创建唯一主键 再分区_PostgreSQL 务实应用(三/5)分表复制(转载)
- Windows下 Qt 资源文件(.qrc)文件 的 编写与应用
- 轻量级验证码生成插件webutil-licenseImage源码与实例应用
- 【开发者必看】移动应用趋势洞察白皮书-应用体验变革篇
- 《Spring 3.0就这么简单》——1.7 运行Web应用
- 应用负载均衡之LVS(四):详细剖析VS/NAT和VS/DR模式
- 《企业大数据系统构建实战:技术、架构、实施与应用》——2.3 大数据制度和流程规范
- macOS SwiftUI 应用架构之全屏模式 02 在需要完成任务时使工具栏保持可见
- Excel 数据透视表教程大全之 02 添加字段、设置数据格式应用货币模式、按值进行排序(教程含样本数据)
- Qt编写地图综合应用48-地球模式、三维模式、地铁模式
- Android中Adapter和Bridge模式理解和应用
- 《Core Data应用开发实践指南》一1.6 习题
- ThinkPHP6项目基操(8.多应用模式)
- 基于大数据应用探索“互联网+卷烟市场监管”新模式
- 设计模式-单例模式及应用场景
- 设计模式实战应用之一:策略模式
- 【FAQ】鸿蒙系统开启深色模式包含的应用是如何判断的?
- 中国联通赵越:打通数据源到数据应用,大平台模式发展大数据
- 欧洲五大智慧城市背后的新技术与新模式应用