多斜率 - 概念
我们日常使用的单色相机可提供8比特/像素的动态灰度级。灰度级为0意味着“黑色”,而255则代表“白色”。
一个像素点上的灰度值指示的是在该点上接收到的光子的数量(或者说亮度)。 用户定义的曝光时间决定了感光芯片接收光子的时长。
所有CCD芯片和CMOS芯片都在曝光时保持光子数量与灰度值之间的线性关系。这一特点在很多应用中都很有用。
如果一幅图像中灰度值的差别大于8比特的灰度值动态区间,我们就会遇到右侧最上面那幅图像中所示的问题。如果为了图中暗的部分调整曝光时间,会导致图中亮的部分过度曝光,反之亦然。
多斜率感光芯片能够探测到那些容易过度曝光的像素,它们可以将这些像素的灰度值重设为用户定义的值,进而对这些像素重新曝光。第二次曝光的时长必须由用户定义。理想情况下,曝光应在最亮的那个像素被过度曝光之后停止。这样,我们就能得到右侧第三幅图所示的图像了。
多斜率 - 实现
我们可以通过下面这张图来了解多斜率的原理,图中一条线由8个像素点组成,分别编号为0至7,它们接收一道稳定的光子流,其强度范围是12.5%至100%。
我们假定200µs的曝光之后,像素的灰度值在50至400之间。但因为我们的动态范围只有8比特,第5,6,7号像素将无法得到其正确的灰度值,它们将拥有饱和灰度值255。
所以,多斜率处理程序首先定义一个缩小了的曝光时间(基本曝光时间)。在这个例子中,我们将其设定为150µs。现在,只有像素6和7达到了饱和值。
下一步,定义一个灰度值,在此值之上的所有像素将进行二次曝光(二次曝光阈值)。高于此阈值的灰度值被设为该值,本例中我们定义该阈值为180。
第三步,对被重设的像素进行二次曝光,我们必须保持最亮像素的灰度值小于等于饱和值(本例中35µs)。
我们当然也可以进一步缩短二次曝光的时间,而且可以进行两次或两次以上的重设步骤。但对于大多数应用,一次重设就足够了(如本例中所示)。在本例中我们可以称其为'双斜率'。
注意:用户需要根据具体的照明情况设定二次曝光阈值和曝光时间。 它们必须是静态值。多斜率程序不适于变化的曝光时间,活动的场景或触发情况。
| 像素: | |
| 光子数量(亮度): | ![]() |
| 曝光200µs后的灰度值: | |
| 8比特动态范围条件下的灰度值: | |
| 曝光150µs后的灰度值: | |
| 将所有大于180的灰度值重设为180: | |
| 二次曝光35µs后的灰度值: | |
![]() | |
线性曝光:暗的部分曝光不足。
线性曝光:亮的部分被过度曝光
使用两个不同的时间曝光:暗与亮的区域都被正确曝光。


