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 enablespin_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 EVcase AE_EV_COMP_10: // +1 EVtotalGain = totalGain<<1;exposureTime = exposureTime<<1;OV5645MIPISENSORDB("[4EC] HDR AE_EV_COMP_20\n");break;case AE_EV_COMP_00: // +0 EVOV5645MIPISENSORDB("[4EC] HDR AE_EV_COMP_00\n");break;case AE_EV_COMP_n10: // -1 EVcase AE_EV_COMP_n20: // -2 EVtotalGain = 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 拍摄技巧描写叙述得非常好,有须要的能够具体看下
HDR 拍照模式的原理,实现及应用相关推荐
- Android Camera HDR 拍照模式的原理
camera HDR 拍照: (High Dynamic Range Imaging)高动态范围成像 1. 什么是HDR?: 用来实现比普通数字图像技术更大曝光动态范围(即更大的明暗差别)的一组技术. ...
- 【转】教你何时开启水果机上的HDR拍照
原址:http://news.mydrivers.com/1/175/175922.htm 苹果在iOS 4.1操作系统中为iPhone 4增加了一项有趣的新功能:HDR拍照.虽然目前市场上支持HDR ...
- (转)Windows7 “上帝模式”的原理
解释Windows7"上帝模式"的原理 ugmbbc发布于 2010-01-06 18:01:54| 次阅读 字体:大 小 打印预览 感谢本页生成时间:0.01 秒的投递 最近两天 ...
- 北风设计模式课程---深入理解[代理模式]原理与技术
北风设计模式课程---深入理解[代理模式]原理与技术 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 设计模式都是对生活的抽象,比如用户获得装备,我可以先装 ...
- 第三章 Spark运行模式及原理
第三章 Spark运行模式及原理 目录 Spark运行模式概述 Local模式 Standalone模式 Local cluster模式 Mesos模式 YARN standalone/YARN cl ...
- BM模式匹配算法原理(图解)
BM模式匹配算法原理(图解) 首先,先简单说明一下有关BM算法的一些基本概念. BM算法是一种精确字符串匹配算法(区别于模糊匹配). BM算法采用从右向左比较 的方法,同时应用到了两种启发式规则,即坏 ...
- “四旋翼”无人机“X模式”飞行原理
文章目录 摘要 飞行器分类 四旋翼"X模式"飞行原理 四旋翼"十模式"飞行原理 参考资料 摘要 简单的介绍了四旋翼无人机的两种模式的飞行原理 飞行器分类 固定翼 ...
- Android Q 强制黑暗模式(ForceDark) | 原理 实践
搜狐技术产品(sohu-tech) | 来源 Hi,大家好,这里是承香墨影! Android Q 版本增加了 ForceDark 功能,可以快速实现应用的黑暗模式.本文主要讲述了 Android Q ...
- 线扫相机DALSA-I/O Controls(拍照模式设置)与Flat Field(明暗场校正)
(Q有答疑)康耐视visionpro-冒泡排序+计数输出 I/O Controls(拍照模式设置) Trigger Source(触发源):采集卡通过CC1端口向相机发送Pulse #1脉冲,相机选择 ...
最新文章
- TensorFlow练习18: 根据姓名判断性别
- 如何在github存储库中添加屏幕截图到README?
- [QA] MySQL Error 1050(42S01): Table already exist
- 实验二:用机器指令和汇编指令编程
- JavaScript夯实基础系列(二):闭包
- MATLAB从入门到精通-matlab中符号推导应用及相关技巧
- python调用shell命令之三慷慨法
- 批量删除某个目录下的 某类型文件方法
- 数据源管理 | 分布式NoSQL系统,Cassandra集群管理
- 精易模块保存html文档,精易模块6.60源码
- 用Kubernetes搭建便携式开发环境之MongoDB
- 2020年Web前端技术的三大趋势(干货)
- [转]context-param和init-param区别 context-param和in...
- plc ge c语言编程,GE PLC编程软件快速入门手册.pdf
- Spring Boot日志格式化JSON方案
- 个人微信淘宝客返利机器人搭建教程
- 一劳永逸-当换源解决不了pyrit各种原因的安装失败
- 浅提计算机未来的想法,浅述未来计算机的发展趋势论文
- 对io.UnsupportedOperation: fileno错误的解决办法
- NXP JN5169 UART 波特率设置