camera HDR 拍照模式的原理,实现及应用

https://blog.csdn.net/qq160816/article/details/50789802

camera HDR 拍照:
        (High Dynamic Range Imaging)高动态范围成像

1. what:

用来实现比普通数字图像技术更大曝光动态范围(即更大的明暗差别)的一组技术。

2. 原理:

相比普通的图像,可以提供更多的动态范围和图像细节,根据不同的曝光时间的LDR(Low-Dynamic Range)图像,利用每个曝光时间相对应最佳细节的LDR图像来合成最终HDR图像。 

3. 目的:

正确地表示真实世界中从太阳光直射到最暗的阴影这样大的范围亮度,现在一般的数码相机和手机中都实现这种拍照模式。

4.适合场景:
        比较适合在阴暗变化明显的场景下使用,这样能使明处的景物不致过曝,而使得暗处的景物不致欠曝。譬如逆光环境下拍人物,可以将人物和环境都能拍清晰。
或者说能将处在暗处的景物拍摄出来的细节表现得更加充分!


下面来看几组照片:

                          图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 拍摄技巧描述得很好,有需要的可以详细看下

 

 

tone mapping

一张HDR图片,它记录了远远超出256个级别的实际场景的亮度值,超出的部分在屏幕上是显示不出来的。所以线性解码,总是导致图像一部分区域过于明亮,或者另一部分过于暗淡。 


解决的方法就是tone mapping。这里我们将图像分解为两个层,一个基层(base layer or large-scale features)和一个细节层(detail layer)。只对基层进行对比度压缩,保持细节层不变。这里为将图像分解成两层,且保持边缘特性,就需要采取一些快速健壮的保边去噪的滤波器。比如说双边滤波(BF)等。
算法流程

根据《Fast Bilateral Filtering for the Display of High-Dynamic-Range Images 》给出了对比度缩减的流程:

input intensity= 1/61*(R*20+G*40+B)
r=R/(input intensity), g=G/input intensity, B=B/input intensity
log(base)=Bilateral(log(input intensity))
log(detail)=log(input intensity)-log(base)
log (output intensity)=log(base)*compressionfactor+log(detail) - log_absolute_scale
R output = r*10^(log(output intensity)), etc.
注:第一步是将原图像转换成其灰度图像,你可以使用其他你喜欢的转换公式。compressionfactor是对基层的压缩系数,log_absolute_scale是一个偏置参数,以确保基层压缩后最大像素值为1,这两个参数都与图像相关。这里作者建议取值 
compressionfactor = targetContrast/(max(log(base)) - min(log(base))),log_absolute_scale= max(log(base))*compressionfactor。
原文链接:https://blog.csdn.net/bluecol/article/details/45419817

快照相机 Snap Camera HDR v6.0.0 test1 修正汉化版 应用名称 快照相机 Snap Camera HDR 应用版本 v6.0.0 test1 汉化说明 XML文本汉化(500行) 多国语言精简 ZIPALIGN处理 测试机型 荣耀 3C 4G版 支持系统 Android OS 4.0.3 及以上 测试系统 Android OS 4.4.2 应用简介: 快照相机 Snap Camera HDR 是款Android 4.2风格的拍照软件,也添加了 Android 4.3 风格的菜单样式,同时还内置了相册功能,提供了多种特效可对照片进行编辑。快拍相机是4.2移植过来的,bug不少,不过功能很强悍! 简洁、强大的用户界面: 触摸可对焦,开合两根手指可缩放/变焦,滑动可回顾,触摸并按住可访问照片设置 照片控制器包括颜色、对比度、锐度、照片和视频大小、场景模式、自拍定时器 连拍模式、延时拍摄、对焦模式、JPEG质量、效果、ISO、防闪烁等设置 强大的照片编辑器,支持颜色、边框、修剪、旋转、镜像、拉直等 强大的“快照”图库,完全地Android 4.2风格,速度超快,体验超赞 通过分享图标将照片和视频分享到Facebook或Goolge+ 支持选择图片效果、直方图修正、晕影等 其他功能: 使用高级视频设置来录制其他相机不允许的分辨率的视频 在视频录制期间捕获快照,使用音量键来缩放和拍摄照片 触摸全景图标可创建全景照片(Android 4.0及以上) 您可通过历史记录菜单随时查看和撤销应用的效果 在光线不足的环境下录制视频时自动打开闪光灯 快速拍摄模式可以预览分辨率快速捕获照片 触摸分享图标可使用其他应用来分享图 可将界面更改为左手习惯模式 更新日志: 支持安卓5.0 Camera2 API 支持在 Nexus 5 上捕捉原始图像(Raw)和全帧视频和手动曝光控制
更新时间:2015-07-27资费提示:已付费版当前版本:6.7.0软件语言:多语言软件类别:特效相机软件大小:3.88 MB适用固件:2.3.3及更高固件内置广告:没有广告适用平台:Android 软件介绍 Snap Camera(快照相机)是一款基于Nexus 4(Android 4.2)相机的图库和相机应用。Snap Camera的整体界面非常简洁,而且完全使用Android 4.2上的Holo风格。一键拍摄照片和录制视频,没有凌乱的预览界面,仅有两个您真正需要的按钮! 简洁、强大的用户界面: - 触摸可对焦 - 开合两根手指可缩放/变焦 - 滑动可查看照片/视频 - 触摸并按住可使用照片控制器来调整照片设置 照片控制器包括: - 颜色和对比度(如果硬件支持) - 关闭快门声 - 连拍模式 - 自拍定时器 - 全景模式 - 闪光灯模式 - 白平衡 - 曝光 - 网格线 - 快速拍摄模式 - HDR - 其他设置 其他设置菜单包括: - 照片和视频大小 - 取景模式 - 自拍定时器延时 - 连拍模式设置 - 延时拍摄 - 视频对焦方式 - JPEG质量 - 效果 - ISO - 防闪烁 - 取景检测 - 视频比特率 - 音频设置 照片编辑器包括: - 添加颜色效果 - 添加边框 - 修剪、旋转、镜像 - 拉直 - 添加图片效果 - 直方图修改 - 晕影 其他功能: - 您可通过历史记录菜单随时查看和撤销应用的效果 - 触摸分享图标可使用其他应用来分享图片javascript:; - 触摸全景图标可创建全景照片(Android 4.0及以上) - 快速拍摄模式可以预览分辨率快速捕获照片 - 在视频录制期间捕获快照 - 使用音量键来缩放和拍摄照片 - 在光线不足的环境下录制视频时自动打开闪光灯 - 可将界面更改为左手习惯模式 - 使用高级视频设置来录制其他相机不允许的分辨率的视频
软件名称:快照相机 Snap Camera HDR 软件版本:v6.0.0 T1直装中文版 软件语言:中文 软件大小:5.1M Snap Camera(快照相机)是一款基于Nexus 4(Android 4.2)相机的图库和相机应用。Snap Camera的整体界面非常简洁,而且完全使用Android 4.2上的Holo风格。一键拍摄照片和录制视频,没有凌乱的预览界面,仅有两个您真正需要的按钮! 简洁、强大的用户界面: - 触摸可对焦 - 开合两根手指可缩放/变焦 - 滑动可查看照片/视频 - 触摸并按住可使用照片控制器来调整照片设置 照片控制器包括: - 颜色和对比度(如果硬件支持) - 关闭快门声 - 连拍模式 - 自拍定时器 - 全景模式 - 闪光灯模式 - 白平衡 - 曝光 - 网格线 - 快速拍摄模式 - HDR - 其他设置 其他设置菜单包括: - 照片和视频大小 - 取景模式 - 自拍定时器延时 - 连拍模式设置 - 延时拍摄 - 视频对焦方式 - JPEG质量 - 效果 - ISO - 防闪烁 - 取景检测 - 视频比特率 - 音频设置 照片编辑器包括: - 添加颜色效果 - 添加边框 - 修剪、旋转、镜像 - 拉直 - 添加图片效果 - 直方图修改 - 晕影 其他功能: - 您可通过历史记录菜单随时查看和撤销应用的效果 - 触摸分享图标可使用其他应用来分享图片javascript:; - 触摸全景图标可创建全景照片(Android 4.0及以上) - 快速拍摄模式可以预览分辨率快速捕获照片 - 在视频录制期间捕获快照 - 使用音量键来缩放和拍摄照片 - 在光线不足的环境下录制视频时自动打开闪光灯 - 可将界面更改为左手习惯模式 - 使用高级视频设置来录制其他相机不允许的分辨率的视频 更新: 支持camera2 API在棒棒糖 原图像捕捉,Nexus 5全帧视频和手动曝光控制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值