大场景纹理映射,多视影像因曝光条件不一而导致色彩差异,人眼可以快速区分影像质量,如何利用图像信息辅助算法判断影像优劣。
问题场景
已有影像和其对应Mask(像素级标记主体区域),在已有 几何因子(夹角、距离/分辨率)、完整性因子(大尺寸平面无法被单张影像覆盖)的前提下,尝试在影像质量评价函数中加入 影像本身质量相关的评价因子,特别是对于曝光和离焦的判断,避免使用欠/过曝或者对焦不准的模糊影像进行纹理映射。
- 我们希望曝光评价因子尽可能 与图像内容无关,即不对图像灰度直方图的形状加以约束。
- 仅使用图像熵函数,无法正确反映同一色阶曲线左右平移带来的欠/过曝。因此需要增加能反映亮度值本身的物理量。
- 不同视角下图像内容的变化 会对亮度分布、熵和梯度造成影响。
特别是当角度刁钻时,未建模的物体拉花严重,在图像上占据更多的面积,导致熵/梯度快速增大,是一种伪信息。(待验证:梯度会比熵更加敏感?) - 熵可以部分程度反映图像清晰度。
这加入了另一个考虑因素:模糊度评价。理论上,我们想要找到曝光正确、对焦清晰的图像,这可以转换为寻找熵大+NRSS大的图像。经过实验我们发现,对于尺度变换 NRSS会比熵更不稳定。
对于NRSS,当主体在图像中占比较小即单个像素空间分辨率较大时,NRSS会比应有值更小,误认为图像很清晰。这可能是因为NRSS在生成参考影像的过程中,空间分辨率较大的影像高斯滤波前后变化更小,相似度更高。对于熵,空间分辨率大的影像意味着可能合并了相邻灰度级,会导致熵减,恰恰和我们尽可能选择分辨率较小的清晰图像的目标一致。
数字图像处理
基本统计量
- 灰度均值方差
- 梯度均值方差
- 梯度幅值
- 直方图
- 图像熵
p·log(p)
- SSIM / NRSS
色彩空间变换
-
RGB
-
转单通道灰度图像
mean = 225.7 stddev = 47.5mean = 158.5 stddev = 33.2 -
转灰度梯度域
gradMean = -0.0008297 / -0.000157461
gradVar = 9.94899 / 5.40874 -
HSV 分离色相
-
YCrCb 分离亮度
opencv中cv::COLOR_BGR2GRAY coeffs = { 0.299f, 0.587f, 0.114f }
正是BGR2YCrCb中luma(Y)
的计算方法,即灰度通道为亮度通道
亮度变换函数
校正欠 / 过曝光
-
1×1
对数变换log(1+x)
压缩动态范围
对比度拉伸函数1/(1+(thre/x)^e)
压缩thre
两侧(低/高频)直方图均衡化(变换后为的概率密度函数是均匀的,变换函数为概率累积分布函数)但是处理离散灰度级时,会出现 均衡后直方图非均匀 的情况,特别是当灰度十分集中在一个区域时
直方图匹配(很难预先指定直方图)
-
1×n n×n
高斯/拉普拉斯滤波
白平衡
处理偏色(色温)寻找图像中的纯白
- 基于灰度世界
- 动态阈值
考虑欠/过曝的图像质量评价指标
-
传统自动曝光系统
将 整幅图像的亮度均值 与预设参考值比较来进行曝光控制
当对象主体与背景反差过大时不适用(背光/正面强光)
可对图像预先分区统计亮度值,但无法灵活处理目标实际位置 -
基于直方图统计
利用多阈值区分主体和背景并进行相应的曝光补偿
或者由直方图分布设计亮度统计量 -
基于图像熵
认为在正常光照下的熵最大,欠/过曝光时图像信息都会有所损失 -
基于梯度
-
机器学习
与各种典型场景的亮度值对应
部分结合人脸识别技术,能对人脸部分准确自动曝光