在计算机视觉的许多应用中, 如边缘检测[1]、目标或者场景的识别[2,3]、特征匹配[4], 基于图像的多视角几何三维重建[5], 处理的物体或者场景的图像都是基于理想的朗伯表面假设, 当用这些算法处理非朗伯表面时效果往往并不理想, 由于拍摄的物体或场景的图像含有高光区域, 这时会出现无法检测识别场景和物体, 特征点少, 以及重建出的几何不完整的现象. 双色反射模型[6]提出, 图像是镜面反射分量和漫反射分量的线性组合. 漫反射和镜面反射是由光和物体表面之间不同的物理相互作用形成的. 在非均匀光照条件下, 物体表面会出现高光现象, 这是物体表面强反射造成的. 为了提高这些算法在计算机视觉领域的精确性, 去除单张图像中的高光部分很有必要.
Tan等人[7]提出近似于仅含漫反射的无高光图像, 迭代地将高光位置的色度替换为相邻像素的最大漫反射色度, 直到算法收敛. 利用漫反射分量与镜面反射分量的差别达到去除镜面反射分量的目的, 但是这种方法非常耗时. Shen等人[8]使用改进的SF图像MSF图像(Modified Specular-Free image, MSF), MSF图像色度的计算比Tan等人[7]的SF图像计算出的色度更具鲁棒性, 然后利用最小二乘法分离镜面反射分量和漫反射分量去除图像中的高光. Shen和Cai[9]根据镜面区域与漫反射区域边界平滑过渡的准则对镜面反射分量进行调整, 此方法没有进行耗时的迭代处理, 使计算更简单, 但是效果一般. Shen等人[10]在最小最大色度空间对像素点进行聚类, 将每个类的像素点的最大强度值与最大强度值和最小强度值差值之比升序排列, 取序列中值作为该类所有像素点的统一的强度比值, 用于分离镜面反射分量. Souza等人[11]发现相关像素点在最小最大色度空间中的分布呈三角形, 故选出固定的3个种子点将相关像素点聚类为3类, 估计出每个类的统一的强度比, 去除图像中的镜面分量. 以上方法都不同程度的存在图像颜色失真和纹理丢失的问题. Li等人[12]利用黑色素和血红蛋白的模型表示面部皮肤的漫反射颜色变化, 并用这个物理模型约束高光去除的解决方案, 这就不需要摄像机颜色校准, 可以对在多种光照环境中的人脸图像进行高光去除, 但这种方法需要人体皮肤和面部的物理和统计的先验知识并且只局限在脸部高光的去除. Yang等人[13]利用多视角图像序列去除镜面反射分量, 但通常没有场景或物体的多幅多视角图像. Ren等人[14]将RGB颜色空间转换到球形坐标系下, 通过聚类像素点去除高光. Yang等人[15]将最大漫反射色度估计值作为低通滤波器的值域, 处理后的最大漫反射色度用于镜面反射分量去除. Wang等人[16]利用强度比去除高光分量的方法产生高光区域的图像掩码, 随后进行图像修复工作, 但这只针对海洋表面图像的解决方法.
本文针对高光图像颜色失真或者纹理缺失的现象对像素聚类算法做了相关的改进, 像素聚类的方法使用不需要用户指定分类数的聚类方法x-means, 自动确定像素点的分类数. 实验结果表明, 该方法能够有效的去除图像高光和改善图像颜色失真的现状.
1 双色反射模型大多数非均匀材质的物体, 如塑料制品、丙烯酸树脂制品等, 都同时表现出漫反射和镜面反射. 漫反射是由于物体表面和物体内部折射率的变化引起的, 而镜面反射主要是由于物体表面和空气折射率的不同引起的. 根据双色反射模型[6], 假设光照颜色是均匀的, 数码彩色相机拍摄的非均匀物体图像的像素x位置处的RGB颜色向量
${{I}}\left( x \right) = {{{w}}_{\rm{d}}}\left( x \right){{D}}\left( x \right) + {{{w}}_{\rm{s}}}\left( x \right){{S}}$ | (1) |
其中,
Shen等人[10]定义色度(Chromaticity)表示像素点颜色的归一化, 色度定义为式(2):
${{\sigma }}\left( x \right) = \frac{{{{I}}\left( x \right)}}{{{{{I}}_{\rm{r}}}\left( x \right) + {{{I}}_{\rm{g}}}\left( x \right) + {{{I}}_{\rm{b}}}\left( x \right)}}$ | (2) |
由此可知漫反射色度
${{I}}\left( {{x}} \right) = {{{m}}_{\rm{d}}}\left( x \right){{\Lambda }}\left( x \right) + {{{m}}_{\rm{s}}}\left( x \right){{\Gamma }}$ | (3) |
其中,
本文去高光过程如图1所示. 首先计算MSF图像(b), 根据MSF图像计算所有像素点的最小漫反射度(c), 最大漫反射(d). 在最大最小色度空间对高光区域相关像素点进行x-means分类(e), 根据分类结果估计强度比分离漫反射分量(f)和镜面反射分量(g).
2.1 强度比对于同种颜色的非均匀材质的表面, 可分为仅含有漫反射分量的像素和同时有漫反射分量和镜面反射分量的像素, Shen等人[10]在此基础上, 提出了强度比的概念, 即利用漫反射像素点的最大强度值与强度范围值(最大强度值减去最小强度值)之比, 对于颜色非均匀的表面根据强度比值在最小最大色度空间中对像素进行聚类, 用来去除图像中的高光.
文献[10]将强度比
${{{I}}_{{\rm{ratio}}}}\left( x \right) = \frac{{{{\rm{\Lambda }}_{{\rm{max}}}}}}{{{{\rm{\Lambda }}_{{\rm{max}}}} - {{{\Lambda }}_{{\rm{min}}}}}} + \frac{{{{{m}}_{\rm{s}}}\left( x \right){{\Gamma }}}}{{{{{m}}_{\rm{d}}}\left( x \right){{{\Lambda }}_{{\rm{range}}}}\left( x \right)}}$ | (4) |
通过上述式(4)可知, 漫反射像素点强度比的计算仅和漫反射色度值有关, 并且高光区域像素点强度比值大于只含有漫反射的像素点. 由于高光附近区域的漫反射像素点依然受到高光的影响, 因此这些漫反射像素点的强度比值难以估计.
2.2 漫反射色度估计Shen等人[8]提出用MSF图像计算漫反射色度. 输入的图像减去
文献[10]计算未分类的像素点与所有类中心点的色度距离, 但是需要设置阈值控制像素点的分类, 这导致分类结果依赖于阈值. 文献[11]选取初始的3个种子点, 将相关像素点转换到最小最大漫反射色度空间, 迭代两次K-means算法[17]将每张图像高光相关像素点分为3类, 估计出每类稳健的强度比, 用于去除高光. 然而这种方法有一定的局限性, 两次K-means算法迭代不一定达到收敛的状态或者收敛到局部最优解.
本文提出使用x-means聚类算法[18]进行相关像素的分类, 该算法使用kd-tree算法(k-dimensional tree)[19]对K-means算法的每一轮迭代进行了加速, 根据贝叶斯信息准则分数(Bayesian Information Criterion score, BIC)确定一个最优分类数K, 无需用户指定. 每一轮迭代对每一类只进行了2-means分类, 2-means分类对局部最优解不敏感, 所以能够达到更好的分类效果, 分类效果如图1(e)所示.
本文在最小最大漫反射色度空间用二范数定义两个像素点的距离为式(5):
${{\rm{d}}_\Lambda }\left( {x, y} \right) = {\left\| {{\Lambda ^{\rm{P}}}\left( x \right) - {\Lambda ^{\rm{P}}}\left( y \right)} \right\|_2}$ | (5) |
其中,
文献[10]提出镜面反射分量
${{S}}\left( x \right) = {{{I}}_{{\max}}}\left( x \right) - {{{I}}_{{\rm{ratio}}}}\left( x \right) * {{{I}}_{{\rm{range}}}}\left( x \right)$ | (6) |
这时
x-means算法如算法1.
算法1. x-means聚类算法
1)随机选取一个聚类中心点c(x, y).
2)计算所有像素点
3) 得到初始分类结果后, 再依次找每一类的两个相对离得较远的点作为初始中心点, 然后对当前类运行一次K-means (K=2)算法.
4) 计算每个类分裂前与分裂后的BIC分数, BIC值越大越好, 以此决定保留分裂前的状态还是分裂后的状态.
5) 回到2)进行迭代, 如果前后两次迭代中心点的数量一样, 则结束整个分类过程.
4 实验结果与分析文献[10,11]都是基于强度比去除镜面反射分量, 为了验证本文方法的有效性, 在Shen和Zheng[10]的数据集上, 将本文实验结果与这两篇文献做比较. 本文实验平台为Intel(R) Core(TM) i5-4590 CPU @ 3.30 GHz 12 GB RAM, 使用OpenCV 2.3.1库[20]进行测试.
本文测量标准高光去除数据集[10]中50幅图片的峰值信噪比(Peak Signal-to-Noise Ratio, PSNR). 表1为本文方法与文献[10,11]方法的PSNR值比较, PSNR值越大说明结果图像越接近原图像. 结果显示, 本文的方法在3幅图像上的PSNR值与文献[10,11]比均有所提高. 图2为本文方法与文献[10,11]可视化结果的比较, 可见本文在视觉效果上也有明显改善. Shen和Zheng等人[10], Souza等人[11]在处理图像时会有明显的颜色不一致现象, 如animals图2(c)、图2(d)框选处, 本文与[10,11]相比在框选处皆有明显的改善, 最大程度的保留了图像纹理和颜色.
表1中对比了3个算法的峰值信噪比. 对于animals图本文方法比Shen等人[10]的峰值信噪比提高了0.99, 比Souza等人[11]峰值信噪比提高了0.67, 峰值信噪比越高表明图像越接近真实图像. 对于cups图, 本文方法比Shen等人[10]的峰值信噪比提高了0.52, 比Souza等人[11]峰值信噪比提高了0.91. 对于mask图, 本文方法比Shen等人[10]的峰值信噪比提高了1.44, 比Souza等人[11]峰值信噪比提高了0.79.
5 结论与展望本文对使用强度比分离镜面反射分量和漫反射分量去除高光进行了理论分析和实验数据分析. 针对像素点在色度空间的聚类数不稳定提出使用x-means聚类算法自动确定聚类数, 实验结果表明, 本文方法保护图像纹理信息和颜色信息方面均高于传统方法.
本文方法存在一定的局限性, 不能处理大面积高光区域, 高光区域过强接近白色时处理效果不理想, 因此在高光去除领域仍然需要发展更大的高光去除数据集, 这同时有利于深度学习策略提供高质量的高光去除. 因此, 未来研究方向是如何去除大面积高光.
[1] |
Gevers T, Stokman H. Classifying color edges in video into shadow-geometry, highlight, or material transitions. IEEE Transactions on Multimedia, 2003, 5(2): 237-243. DOI:10.1109/TMM.2003.811620 |
[2] |
Tominaga S. Surface identification using the dichromatic reflection model. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1991, 13(7): 658-670. DOI:10.1109/34.85656 |
[3] |
Gevers T, Smeulders AWM. Color-based object recognition. Pattern Recognition, 1999, 32(3): 453-464. DOI:10.1016/S0031-3203(98)00036-3 |
[4] |
Xing XH, Gu GH. Method of quickly recognizing vehicle plate based on pattern matching and characteristic dot matching. Optoelectronic Technology, 2003, 23(4): 268-270. |
[5] |
Fuhrmann S, Langguth F, Goesele M. MVE: A multi-view reconstruction environment. Proceedings of the Eurographics Workshop on Graphics and Cultural Heritage. Darmstadt, Germany. 2014. 11–18.
|
[6] |
Shafer S A. Using color to separate reflection components. Color Research & Application, 1985, 10(4): 210-218. |
[7] |
Tan RT, Ikeuchi K. Separating reflection components of textured surfaces using a single image. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2005, 27(2): 178-193. DOI:10.1109/TPAMI.2005.36 |
[8] |
Shen HL, Zhang HG, Shao SJ, et al. Chromaticity-based separation of reflection components in a single image. Pattern Recognition, 2008, 41(8): 2461-2469. DOI:10.1016/j.patcog.2008.01.026 |
[9] |
Shen HL, Cai QY. Simple and efficient method for specularity removal in an image. Applied Optics, 2009, 48(14): 2711-2719. DOI:10.1364/AO.48.002711 |
[10] |
Shen HL, Zheng ZH. Real-time highlight removal using intensity ratio. Applied Optics, 2013, 52(19): 4483-4493. DOI:10.1364/AO.52.004483 |
[11] |
Souza ACS, Macedo MCF, Nascimento VP, et al. Real-time high-quality specular highlight removal using efficient pixel clustering. SIBGRAPI. Parana, Brazil. 2018. 56–63.
|
[12] |
Li C, Lin S, Zhou K, et al. Specular highlight removal in facial images. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Honolulu, HI, USA. 2017. 2780–2789.
|
[13] |
Yang QX, Wang SN, Ahuja N, et al. A uniform framework for estimating illumination chromaticity, correspondence, and specular reflection. IEEE Transactions on Image Processing, 2011, 20(1): 53-63. DOI:10.1109/TIP.2010.2055573 |
[14] |
Ren WH, Tian JD, Tang YD. Specular reflection separation with color-lines constraint. IEEE Transactions on Image Processing, 2017, 26(5): 2327-2337. DOI:10.1109/TIP.2017.2675204 |
[15] |
Yang QX, Tang JH, Ahuja N. Efficient and robust specular highlight removal. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 37(6): 1304-1311. DOI:10.1109/TPAMI.2014.2360402 |
[16] |
Wang SK, Yu CY, Sun YJ, et al. Specular reflection removal of ocean surface remote sensing images from UAVs. Multimedia Tools and Applications, 2018, 77(9): 11363-11379. DOI:10.1007/s11042-017-5551-7 |
[17] |
Hartigan JA, Wong MA. A K-means clustering algorithm
. Journal of the Royal Statistical Society: Series C (Applied Statistics), 1979, 28(1): 100-108. |
[18] |
Pelleg D, Moore A. X-means: Extending K-means with efficient estimation of the number of clusters. Proceedings of International Conference on Machine Learning. Stanford, CA, USA. 2000. 727–734.
|
[19] |
Zhou K, Hou QM, Wang R, et al. Real-time KD-tree construction on graphics hardware. ACM Transactions on Graphics (TOG), 2008, 27(5): 126. |
[20] |
Kaehler A, Bradski G R. Learning OpenCV 3: Computer vision in C++ with the OpenCV library. Sebastopol: O’Reilly, 2016.
|