system: [SYSTEM]

user: 3. 算法实现 3.1. 图像相关性检测 在车辆正常行驶过程中，摄像头所拍摄到的图像是不断变化的。但是当摄像头表面受到污染后，污染物和车辆始终保持相对静止，在图像中的位置始终不动。所以可以采用相关系数法对图像进行评价，选取多张连续的图片序列，如果多张图片存在相关性较大区域，则该区域有可能是摄像头拍摄到的污染物。本文选取了图像的强度相关性和结构相关性 [ 2 ] [ 3 ] [ 4 ] [ 5 ] 来对连续图像序列的质量进行评价。 强度相关性的研究对象是图像中某一像素点的像素值，在相机所拍摄到的图像中，像素值较低的点一般有两种可能，第一种是由于光强和物体本身材质导致物体像素值较低，第二种是当相机镜头表面有脏污物质时，光线不能穿透脏污覆盖的区域导致物体像素值较低。第一种情况在实际行驶过程中出现的频率很高，但持续时间很短。基于这一特性，本文主要研究第二种情况下镜头污染情况的判别算法，分别求得多张图像中同一位置像素值的平均值和标准差来判断镜头表面是否有泥浆覆盖。 为了统一度量单位使之具有可比性，本文通过式(1)对图像序列中同一个位置的像素值的平均值和标准差进行标准化处理，构建了平均值矩阵A和标准差矩阵S，并且绘制出如图4所示的像素平均值图像和图5的像素值标准差图像，图中颜色越深，代表像素值的平均值或者标准差越小。 r k = ∑ m ∑ n ( A k ， m n − A k ¯ ) ( A k − 1 ， m n − A k − 1 ¯ ) ( ∑ m ∑ n ( A k ， m n − A k ¯ ) 2 ) ( ∑ m ∑ n ( A k − 1 ， m n − A k − 1 ¯ ) 2 ) A ¯ (1) 式中：y为标准化之后的像素值平均值或标准差；x为原始的像素值平均值或标准差；x max 为原始像素值平均值或标准差的最大值；x min 为原始像素值平均值或标准差的最小值。 图4. 像素平均值图像：(a) 清晰图像序列；(b) 脏污图像序列 图5. 像素标准差图像：(a) 清晰图像序列；(b) 脏污图像序列 从图4中可以看出，在脏污图像序列中，由于脏污物体覆盖在镜头表面，光线难以穿透这一区域，使得该区域的像素值平均值要小于其他区域。在清晰图像序列中，道路两旁的树位置几乎不动，且像素值较低，使得该区域的像素值平均值也小于其他区域，在实际应用过程中，可通过相关算法，先识别出道路两旁的树在图像中的位置，在进行平均值图像分析时，忽略这些区域。 从图5中可以看出，在脏污图像序列中，由于镜头表面的脏污物体始终和相机保持相对静止，所以在该区域内的像素值标准差要小于其他区域。在清晰图像序列中，汽车实际行驶过程中，路面在图像中的形态几乎不动，所以路面区域的像素值标准差也要小于其他区域，在实际应用过程中，也可通过相关算法，先识别出路面在图像中的位置，在进行标准差图像分析时，忽略这些区域。 结构相关性的研究对象为整幅图像，和强度相关性检测的原理类似，当有泥浆覆盖在镜头表面时，连续图像序列中泥浆覆盖部分的像素值具有很强的相关性，所以两幅图像之间的相关性系数也比较大，连续两张图像之间的相关性系数可通过公式(2)求得： r k = ∑ m ∑ n ( A k ， m n − A k ¯ ) ( A k − 1 ， m n − A k − 1 ¯ ) ( ∑ m ∑ n ( A k ， m n − A k ¯ ) 2 ) ( ∑ m ∑ n ( A k − 1 ， m n − A k − 1 ¯ ) 2 ) (2) 式中r k 为图像序列中第k张图像和第k − 1张图像之间的相关性系数；A k 和A k − 1 分别代表第k张和第k − 1张图像的像素值矩阵；m和n分别代表像素值矩阵的行数和列数； A k ¯ 和 A k − 1 ¯ 分别代表第k张和第k − 1张图像中所有像素点像素值的平均值。 利用公式求得了清晰图像序列连续两张图像的相关性系数和脏污图像序列中连续两张图像的结构相关系数，结果如图6所示。 图6. 图像结构相关系数 从图6中可以看出，脏污图像序列中连续两张图像的相关性要比清晰图像序列中的相关性要高，尽管有个别点存在偏差，但是通过求得图像序列中的多个连续图像的相关系数的均值可以消除个别点的偏差。 3.2. 图像边缘信息 图像的边缘信息是图像非常重要的信息，一般认为，图像中物体的边缘是灰度值发生变化的区域，边缘切向方向灰度值的变化比较平缓，边缘法向方向灰度值的变化比较剧烈 [ 6 ]。同时，图像的边缘信息也可以表征图像深度的变化，在车辆行驶过程中，相机镜头正前方景深较大，深度信息较为丰富，深度变化的区域有较多的边缘信息，所以利用图像的边缘信息也可以对图像质量进行评价。当镜头表面干净时，相机所拍摄到的图像比较清晰、锐利，图像中包含较多的边缘信息。当镜头表面覆盖有泥浆后，物体较难从图像中分辨出来，在泥浆覆盖区域检测不到边缘信息，整幅图像的边缘信息也较少。 利用卷积算子对图像进行卷积运算是最常用的边缘提取方法，一般常用的一阶算子有Robert算子，Prewitt算子和Sobel算子。本文使用Sobel算子对图2中的清晰图像序列和图3中的脏污图像序列进行卷积运算，提取出清晰图像序列和脏污图像序列中的边缘信息，得到了如图7所示图像边缘信息图像。 图7. 图像边缘：(a) 清晰图像序列；(b) 脏污图像序列 从图7中可以看出，清晰图像中的边缘信息较多，道路两旁的数和路面的指示线等边缘较为明显；脏污图像中的边缘信息较少，尤其是在被泥浆覆盖的区域，几乎提取不到任何边缘信息。在得到图像的边缘信息后，对图7(a)和图7(b)中的边缘信息进行求和运算，结果如图8所示。 图8. 不同图像序列边缘信息对比 从图8中可以看出，清晰图像序列中所包含的边缘信息要多于脏污图像序列中的边缘信息。因此，可以利用图像中的边缘信息作为镜头表面是否脏污的判断依据，如果检测到图像的边缘信息一直处于一个较低的值或突然降低，摄像头表面很有可能受到污染。 3.3. 图像频域能量 在数字图像中，图像的低频能量反映了图像的总体轮廓和颜色信息，高频能量反映了图像的结构信息。也就是说，清晰图像中含有较多的高频能量，当摄像头表面受到污染后，所拍摄到图像的高频能量会降低。本文基于这一理论，对所拍摄到的图像的频谱图中的能量分布进行分析。 首先对图像进行傅里叶变化，图像中的信息从空域变换到了频域上，空域中灰度值的强度信息变为了频域中灰度值的梯度信息，图像在空域中边缘梯度值越大，在频域中高频能量越大 [ 7 ]。清晰图像序列和脏污图像序列经傅里叶变换后的平均频谱图如图9所示。 图9. 图像频谱分布：(a) 清晰图像序列；(b) 脏污图像序列 经过傅里叶变换后得到的频谱图可以反应原始图片的频域能量分布，频谱图中心区域代表了图像的高频能量，频谱图中像素值越大代表能量越高。从图9中可以看出，清晰图像序列的高频能量要高于脏污图像序列的。对清晰图像序列和脏污图像序列中每一张图像的频谱图求和可以近似得到该图像的频域能量，结果如图10所示。 图10. 不同图像序列频域能量 从图10中可以看出，清晰图像序列的频域能量要高于脏污图像序列的频域能量。因此，可以利用图像频域能量的这一特性对摄像头表面是否脏污进行判断。 3.4. 图像信息熵 在数字图像中，信息熵代表了图像中像素值的不确定性，是一种用于衡量图像包含信息丰富程度的方法 [ 8 ]，图像的信息熵越高，代表该图像中像素值的不确定性越大，也代表该图像中所包含的纹理信息越多，所有清晰图像的信息熵应该高于脏污图像的信息熵。并且图像信息熵与人的主观感觉之间关系密切，更能代表人的主观感觉。一张图片的信息熵可由公式(3)确定： H = − ∑ k = 1 256 p ( k ) × log 2 p ( k ) (3) 式中：H为图像的信息熵，k为像素值，p(k)为像素值为k的像素点出现的频率。 本文先利用公式(3)求得了整张图像的全幅信息熵，结果如图11所示。 图11. 不同图像序列的全局信息熵 从图11可以看出，清晰图像序列和脏污图像序列之间的全幅图像信息熵差别不大，不能反映出图像的真实情况，所以本文先利用如图12所示的划分方式，将图像分为若干个128 × 128的小图像。 图12. 区域划分方式 本文利用式(3)求得图12中每一个小图像的信息熵，最后将所有小图像的信息熵的平均值作为整张图片的平均信息熵，结果如图13所示。 从图13中可以看出，当摄像头受到污染后，脏污部分覆盖在镜头表面，该部分遮盖住了原有的图像纹理信息，会使得图像的平均信息熵降低。因此，可以利用图像的平均信息熵作为摄像头表面是否脏污的识别依据。 图13. 不同图像序列的平均信息熵