Shadow Detection

课题背景

    阴影检测向来是计算机视觉中基础且富有挑战性的问题——对于一张输入图像,我们通过生成二进制图像来标记阴影区域,阴影区域的检测为进一步获取图像中的光照情况、物体的形状与位置,以及摄像机的参数提供了可能。与此同时,阴影的存在也为计算机视觉中进一步理解图像的算法,例如物体的检测与跟踪,带来了障碍。

     在自然条件下,由于遮挡物的存在,光源发出的光线无法全部入射到物体表面,从而产生阴影. 一方面,阴影区域能够提供足够的信息,用于估计环境光亮度、推断遮挡物的几何形状以及确定光源位置等[1]. 另一方面,图像中阴影像素的存在会导致图像内容的不确定性,对目标识别、目标跟踪、视频监控、自动驾驶等任务而言是有害的. 因此,研究全自动阴影检测算法,并将其用作计算机视觉任务的预处理步骤,提前标注出阴影区域的位置,避免其与待处理目标的混淆,可提高计算机视觉算法的鲁棒性.

    现有的阴影检测算法可按照自身特点分为4类:基于本征图像(intrinsic image)的方法[2-4]、基于区域的方法[5-8]、基于特征提取的方法[9-13]、基于深度学习的方法[14-18]. Finlayson等[2-4]提出完整的本征图像理论(intrinsic image theory),该理论建立在光照均匀假设的基础上,利用熵值最小化(entropy minimization)方法求取灰度不变图像(greyscale invariant image),进而完成阴影检测与阴影去除. 但是,由于光照均匀假设并非时刻成立,图像质量参差不齐,使用该自动算法对普通网络图片进行处理时鲁棒性不强. 基于区域的方法通常采用聚类(clustering)算法将图像像素分为不同的小块,根据颜色、亮度、纹理等特征将像素块分类为阴影区域或非阴影区域. Hoiem等[5-6]基于支持向量机(support vector machine,SVM)方法分别构建单区域分类器和双区域分类器,使用图割法(graph cut)实现最终预测. Vincente等[7]和Yuan等[8]采用与Hoiem等[5-6]类似的算法流程,但在分类器及分类依据上有所不同. Vincente等[7]为每项不同特征单独训练SVM分类器,最终获得多核SVM分类器. Yuan等[8]使用逻辑回归(logistic regression)和决策树(decision trees)构建单区域分类器. 基于区域的方法包含聚类、多特征提取、分类、随机场优化等算法流程,时间复杂度高,不适用于实时阴影检测. 基于特征提取的方法关注阴影区域与非阴影区域的不同特性. 通常来说,阴影区域亮度和饱和度偏低,色调基本不变. 利用这一特性设定阈值,可获得初步的阴影检测结果. 但考虑到场景、光照条件、物体表面反射率的多样性,仅使用1种特征进行阈值分割是不够的. 一些算法[9-10]关注阴影区域的颜色信息,采用HSI、YCbCr等颜色空间协助检测任务. 另一些算法[10-13]关注物体的几何特征及边缘信息,常使用sobel算子或canny算子,这类算法往往侧重于提取图像的低阶信息,忽略像素块之间的关系及图像中物体的语义信息,对复杂场景的处理效果不佳. 由于深度学习方法的兴起,近年来学者们提出了一系列利用卷积神经网络(convolutional neural network,CNN)模型实现阴影检测的新方法. Khan等[14]首先使用深度学习方法进行阴影检测,训练2个网络分别用于检测阴影区域和阴影边缘,将检测结果输入条件随机场(conditional random field,CRF)得到分类结果,相比传统算法效果提升显著. Vincente等[15]最早使用2个级联网络实现阴影检测,第1个网络用来初步提取阴影标记,并将其作为阴影概率图与原图一起输入到第2个网络,最终得到精细化的阴影标记结果. Hosseinzadeh等[16]根据颜色及纹理特征使用SVM分类器得到阴影先验图(shadow prior map),将其与原图合并后送入训练好的CNN网络,输出阴影检测结果. Nguyen等[17]引入条件生成对抗网络(conditional generative adversarial networks,cGAN),生成器(generator)输出阴影标记,判别器(discriminator)分辨阴影标记真假,两者相互对抗使得生成器具备检测图像阴影区域的能力,该方法相较Vincente[15]的方法有了进一步的效果提升. Le等[18]同样借鉴生成对抗网络的思想,训练生成器生成阴影区域被衰减后的图像,训练判别器输出阴影标记,从图像源层面加强网络分辨阴影区域的能力. 现有的CNN阴影检测方法常使用级联网络[14-16]或生成对抗网络[17-18]的形式,增加了模型训练的难度,同时不利于快速检测算法的实现. 与之相比,单网络结构既可以实现端对端训练,降低模型训练的难度,又可以在一定程度上减少计算量,加快算法的运行速度,优势明显.

 

相关论文:

 

1.Mask-ShadowGAN: Learning to Remove Shadows from Unpaired Data

效果如下:

 

2. DSC: Direction-aware Spatial Context Features for Shadow Detection

code:https://github.com/xw-hu/DSC

          https://github.com/stevewongv/DSC-PyTorch 

 

 

 

3.Bidirectional Feature Pyramid Network with Recurrent Attention Residual Modules for Shadow Detection 

github:https://github.com/zijundeng/BDRAR

 

 

 

 

 

 

参考文献:

1.Attention Res-Unet: 一种高效阴影检测算法

2.香港中文大学胡枭玮:用于阴影检测的 DSC 特征

3.基于单幅图像阴影检测与去除算法的研究

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
嗨!对于阴影检测,有几种常见的方法可以用来进行处理。我可以为您提供一些基本的解释和概念。您可以继续问我更多相关的问题或者提供更多的背景信息。 阴影检测是图像处理中的一个重要任务,目的是将图像中的阴影区域与其他区域进行区分。这对于许多应用程序,如目标检测、图像分割和场景重建都非常重要。以下是一些常见的阴影检测方法: 1. 基于颜色:该方法利用阴影区域通常较暗的颜色特征来进行检测。基本思想是根据颜色值或色彩空间对图像进行分割,然后通过比较颜色特征来确定阴影区域。 2. 基于纹理:该方法利用阴影区域与其他区域在纹理上的差异来进行检测。通过计算纹理特征,如灰度共生矩阵或小波变换,可以对图像进行分割,并识别出可能的阴影区域。 3. 基于形状:该方法利用阴影区域与其他区域在形状上的差异来进行检测。通过计算轮廓或边缘信息,可以检测出具有不同形状的区域,并确定阴影区域。 4. 基于深度学习:最近,使用深度学习方法进行阴影检测在一些研究中得到了很好的结果。这些方法通常基于卷积神经网络 (Convolutional Neural Networks, CNN) 或其他深度学习架构来提取图像特征并进行分类。 这只是阴影检测的一些基本方法,实际上有很多不同的技术和算法可以用于这个任务。希望这些信息对您有所帮助!如果您有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值