本文是isp算法学习的第八篇章,主要是讲述HVS原理和算法。

Higher gap in intensity is needed to perceive a visual difference in very dark areas, whereas for mid and high pixel intensities a small difference in value between adjacent pixels is more easily perceived by the eye

译文翻译如下

在非常暗的区域,需要更高的强度间隙来感知视觉差异,而对于中高像素强度,相邻像素之间的小差异值更容易被眼睛感知。

1介绍

人眼可以理解成一个非常复杂的光电系统,而camera就是为了模拟人类眼球的特性而形成的一套光电系统。ISP算法就是为了使得camera能更好的吻合HVS的特性。当然也不排除特殊情况,比如经过ISP处理后的图像不是给人看而是给cv系统作为输入,这个时候就是要适应CVS的特性,但是一般ISP的应用都是为了camera给人眼看着舒服,所以我们只讨论一般情况。

与HVS相对应的就是现在比较火的CVS(computer visual system)。这两者有相似之处,也有很多不同之处,例如人眼的分辨率很高,所以喜欢看高清图片和视频,看着感觉画面更细腻更舒服,但是在CV中就不一样,因为高分辨率高像素就意味更高的硬件要求,而现如今深度学习网络本身就对硬件要求很高,再在这个基础上更加分辨率无疑是一种负担,所以CV的数据集一般分辨率都不大,比如VOC数据集中的图片普遍都是500x600左右的大小,也就是差不多VGA大小,而现在手机相机都出了一亿像素的了,所以这一点就能看出两者的区别。

2人类视觉系统特性

2.1HVS分辨率有限,对高频不敏感

由于瞳孔有一定的几何尺寸和一定的光学像差,视觉细胞有一定的大小,所以人眼的分辨率不可能是无穷的,HVS对太高的频率不敏感。

例如上图是我们用来测试镜头解析度的ISO12233测试卡,当MTF很高的时候镜头解析不过来,TV线就会模糊,人眼也一样,当频率很高的时候人眼也是无法分辨出来的。然后基于这一点,在图像压缩技术中就有应用,例如jpg压缩就是一种有损压缩,压缩过程中会将高频的一些信息直接扔掉导致图片信息量减少,但是jpg压缩后的图像人眼也看不出太大区别。

2.2人眼有边缘增强特性

常用的灰阶测试卡的一部分,这些块的边缘是突变的,但是把这些块放在一起,人眼看起来边缘会有一个加强,呈现一条条的竖线,这就是人眼的边缘增强特性。

相应曲线就如图所示,真实的亮度变化如黑色实线,但是人眼看到的变化如虚线所示,会有一个增强的效果。基于这一点的应用就是ISP会有一个overshoot和undershoot的调节,就是为了加强黑白边缘从而提高清晰度,当然这两个值并不是越大越好,因为太大超过人眼特性范围也会带来负面效果。

上图左侧是一款专业文字拍照设备拍摄的文字,因为拍文字的时候提高边缘和对比会使得文字效果更清晰,所以在字体周边加了一圈白边,使得黑色周围有一比纸张底色更亮的圈使得黑色反差更大从而提高清晰度,而后侧就是用华为手机拍摄的文字,因为手机应用更多是拍人像就不需要这么重的白边,所以华为手机拍摄出来的图像就是平滑过渡的。

2.3人眼对空间分辨率大于色度分辨率

人眼对亮度的变化比颜色的变化更敏感,这个和人眼锥状细胞和杆状细胞的工作方式有关。

一个简单的例子就是在黑暗环境下(不是全黑环境)人眼看周围物体几乎是灰色,但是明亮环境却能看到鲜艳的颜色,但是在按环境下并不影响人眼对事物的判断。基于这么一个特性有的ISP主控就设置了动态saturation,就是随着环境亮度的变化,整个画面的saturation也是动态变化从而更好适应人眼特性。

2.4人眼能够同时分辨的亮度范围,远远小于人眼对亮度的适应范围

人眼能分辨的最黑和最亮的数量级很大,但是当一个环境亮度确定的时候,人眼能分辨的最黑最亮的数量级没有前面说的那个数量级大。

简单理解就是假如人眼能分辨的亮度范围是0-255,那么当环境亮度为128的时候,人眼能分辨的亮度范围就是50-200,低于50的就都是最黑的了,大于200的就都是最亮的,环境亮度确定了之后范围会变窄。当然这个例子只是为了方便理解,真实的分辨率不是这个范围。

典型的例子就是人眼从一个特别亮的环境到一个特别暗的环境或者从暗环境到亮环境都要有一个适应过程才能看清东西,这一点在AE中就体现在AE速度得快以尽量调整画面亮度到正常范围。

2.5人眼对亮度的响应呈现对数特性

这就是跟gamma曲线类似的特性

2.6人眼辨别亮度差别的能力,与环境亮度和本身亮度有关

人眼对亮度的灵敏度特性

有个实验就是在一个均匀亮度的屏幕上有个圆圈,然后逐渐增加圆圈的亮度值,当圆圈亮度变化很小的时候人眼感受不到变化,当变化达到一定量时人眼就能明显感受到中见的圆圈出现。最后通过实验人们发现这个变化量和背景亮度有一定关系。

人眼对这个变化符合上图曲线。根据冈萨雷斯《数字图像处理 》第三版中的介绍

  • 当背景亮度小的时候,就需要更大的变化才能使得人眼感受到圆圈的变化
  • 当背景亮度大的时候只需要很小的变化人眼就能感受到,这个就是人眼亮度的灵敏度。

这个也就是本文开头提到的论文中那段话对应的理论基础。

2.7亮度相应特性和亮度灵敏度的区别

上面灰阶卡就是gamma特性的变现,下面在每个灰阶中加了一个变化的灰块,人眼看起来最右侧的中间块好像变化更大,到那时实际上上中间灰色块和所处的大的灰阶的亮度插值都是一样的,但是由于上面灵敏度的介绍,所以导致人眼看上去右侧会差别更大。