Android Camera HDR 拍照模式的原理

news/2024/11/16 14:40:00/

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

1. 什么是HDR?:

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

2. HDR原理:

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

3. HDR目的:

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

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

HDR具体实现方法:

其实现方法是通过设三组 ev 值来对当前拍摄的景物曝光,一张照片是使用当前测光从而算出来的正常情况下的ev值曝光,另外两张则分别使用其0.5倍的ev值和2倍的ev值进行曝光。最终对三张照片按某种算法进行合成,暗处的景物使用2倍ev曝光的局部照片,而亮处的物体则使用0.5倍ev曝光的局部照片。这样就能使得整个照片的场景都不致于太亮或太暗。

HDR代码实现
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://www.ppmy.cn/news/698743.html

相关文章

HDR简述

动态范围&#xff1a; 一直再说高动态范围&#xff0c;那么到底是什么动态范围。平时生活中,我们使用手机相机进行照相&#xff0c;当手指点击某个部分意味着在这里聚焦。如果这里比较亮&#xff0c;那么点击这里进行对焦后&#xff0c;其他部分或者图像整体部分就会变暗。 相应…

服务器添加hdr文件3dMax,别再乱用HDR了!关于它的10件事你该知道

HDR是指高动态光照渲染(High-Dynamic Range&#xff0c;简称HDR)图像&#xff0c;相比普通的图像&#xff0c;可以提供更多的动态范围和图像细节&#xff0c;根据不同的曝光时间的LDR(Low-Dynamic Range)图像&#xff0c;利用每个曝光时间相对应最佳细节的LDR图像来合成最终HDR…

hdr10 hdr1000_什么是HDR摄影,如何使用?

hdr10 hdr1000 You might have heard the enigmatic acronym “HDR” in reference to photography, or even seen it as a feature on your smartphone. It stands for “High Dynamic Range”, and it creates photos with gorgeous, impossible detail and clarity–though …

HDR到底是什么?今天我们来把它说个透

杜比视界不需要HDMI 2.0A接口标准&#xff0c;而HDR 10则需要 4k(40962160) hdr的带宽已经超过了hdmi1.4的最大带宽10.2g了&#xff0c;所以规范就划到了hdmi2.0这边。 因为HDMI 1.4带宽只有10G, HDMI2.0为18G。 HDMI2.0的电视是无法识别HDR信号的&#xff0c;除非升级…

HDR有什么用

HDR&#xff08;High-Dynamic Range&#xff0c;译为高动态范围图像&#xff09;是一个被大量抛出的术语&#xff0c;似乎从来没有真正得到解释。你看在你的手机拍摄 HDR 照片&#xff0c;电视显示 HDR 视频&#xff0c;这究竟意味着什么&#xff1f;它代表高动态范围&#xff…

HDR是啥意思?

一般我们照相&#xff0c;照顾了高光区域的曝光&#xff0c;暗部细节就会丢失&#xff0c;而照顾了暗部细节&#xff0c;高光部分就会曝光过度&#xff0c;为了解决这一问题&#xff0c;我们使用HDR&#xff0c;中文意思是高动态光照渲染。简单地说&#xff0c;就是一张照片中&…

pixel什么意思_pixel by pixel.是什么意思

1. The images width and height are altered. Even if this is only by one pixel, it can make a big difference at small pixel sizes. 图像的宽度和高度改变了&#xff0c;即使只是一个象素&#xff0c;对于小象素大小字形区别都很大 2. Many papersare devoted to this a…

什么是HDR

HDR&#xff08;High-Dynamic Range&#xff0c;译为高动态范围图像&#xff09;是一个被大量抛出的术语&#xff0c;似乎从来没有真正得到解释。你看在你的手机拍摄 HDR 照片&#xff0c;电视显示 HDR 视频&#xff0c;这究竟意味着什么&#xff1f;它代表高动态范围&#xff…