# 数字图象处理之阴影检测与去除
# 一、介绍
数字图像中阴影是普遍存在的,而且其为数字图像处理的很多任务,如图像特征提取,图像识别,图像分割带来了不利的影响。一个有效的阴影检测与去除方法可以为接下来的图像处理带来很多便利。
# 二、阴影检测算法
### 阴影区域的特征
与同表面非阴影区域相比,图像中阴影区域一般会具有以下特征:其亮度会明显比非阴影区域低;与非阴影区域有分界,界线宽度一般不大,在界线上存在渐变;阴影区域的颜色通道比例和非阴影区域比较接近。我们可以利用这些特征来完成阴影检测的工作。
### 基于自然光模型的一个阴影检测算法
在白天的户外环境中,主要存在两种光源:太阳光的直射,和天空的光线散射。非阴影区域同时受到了太阳光的直射和天空的光线散射,而阴影区域则没有太阳光的直射,只存在天空的光线散射。显然,太阳光的直射强度要大大高于天空的光线散射强度。对于阴影区域,它和阳光直射区域的差即为太阳直射的颜色分布。如果能够将太阳直射下颜色在三个通道的构成比例计算出来的话就可以很好的辅助进行阴影检测。田建东等[1]通过计算后得出,阳光直射在RGB三个通道上的强度比例为![](https://www.writebug.com/myres/static/uploads/2022/7/3/1ee6289e19bf29eba66365412c35f7c1.writebug)。利用这个特征,就可以较为准确的识别出阴影区域。同时,他们提出,将图像进行如下公式的变换后,同表面的阴影和非阴影区域的结果会很相近:
![](https://www.writebug.com/myres/static/uploads/2022/7/3/ac7b8634d82320228e99164866db058e.writebug)
此时利用一些图像区域分割算法即可将同一表面的内容切割到一起,然后即可进行阴影去除。其完整算法如下:
![](https://www.writebug.com/myres/static/uploads/2022/7/3/d1fc63479ef0f6d39830b58bbc06e3cc.writebug)
### **对于上文阴影检测算法的改造**
上文提到的阴影检测算法提出了一个很有用的户外环境光模型。在实践中,这个算法没有起到很好的效果,出现了以下问题:
**用于分水岭算法的图![](https://www.writebug.com/myres/static/uploads/2022/7/3/fa3c38ccca948fb64b2625c2aaddbb58.writebug)效果不佳,难以将阴影和非阴影合在一起**
算法的根本是要将属于同个表面的阴影和非阴影区域同时提取出来,也不能包含其他区域,否则就会对表面性质的预测和提取阴影、非阴影区域产生很大的干扰。但是实际上有很多情况下运用这个方法并不能很好的让同一表面的区域融合,而且很多时候也会出现两个不同表面在图中值相近的情况。当两个表面被当成同一区域时,这两个表面上的阴影几乎不能检出,同时很容易出现将其中一个表面完全当做阴影的情况。
**选取阴影可能不满足“阴影较暗”的常识**
由于选取阴影时使用的判定条件不涉及阴影颜色数值的绝对大小,而是两个颜色通道的差值,因此可能会出现虽然像素亮度较低,但是差值却比高亮度像素还要高的情况,导致高亮度像素反而被当作了阴影。之后在接下来的处理中,甚至会出现整个区域内的点都会被当作阴影的情况。
由于存在上述问题,我们对上文的阴影检测算法进行了如下改造,来减少这些问题造成的影响。改造算法如下:
1. 不再使用图![](https://www.writebug.com/myres/static/uploads/2022/7/3/9b13f38d8f01882b7cce9beb9eb04872.writebug)及分水岭算法。考虑到需要去除的阴影在图像中的面积一般较大,而且阴影和非阴影区域会有比较明显的亮度差异,因此使用简单的正方形分块检测办法,将原图像切割成![](https://www.writebug.com/myres/static/uploads/2022/7/3/b8e90b484e8c99c04fa4ba3a96a62768.writebug)的块,取灰度值,并将其与![](https://www.writebug.com/myres/static/uploads/2022/7/3/173149706dccbb9162d924f1129a99ff.writebug)的全1矩阵作卷积减少噪点影响。由于阴影和非阴影区域亮度差距大,所以需要满足这个块中最亮点和最暗点差距大于40。同时,该区域应该存在较多点接近最亮点与最暗点,因此认为在归一化后该区域的标准差应该大于0.25。只有满足以上要求的块才继续进行接下来的检测。
2. 类似上文方法,选出非阴影区域,估计表面性质。在选取阴影像素时,需要满足选出来的像素不能已经被作为非阴影区域使用,避免将过亮的点判断为阴影。如果候选阴影通过了上文的检测,那么就将当前块放入总阴影候选中。由于之后会进行延伸,所以省略上文的步骤8。
3. 由于阴影较暗,因此取总阴影候选的亮度平均值,并丢弃亮度高于此平均值的候选。剩余在总阴影候选的即认为是阴影,并将从这些阴影开始扩展,查找完整阴影。
4. 对于每一个属于阴影的块,以这个块的点开始做FloodFill算法。FloodFill采用以SeedPoint的颜色作为全部的基准的方式,最大差阈值则设为该块在进行上文算法中非阴影区域和阴影区域平均亮度的平均。
5. 在FloodFill中,阴影图像可能会存在大量的黑白噪点。因此将图中连通块大小小于1000的连通块颜色反转来消除它们。至此完成阴影区域的检测。
组图1为算法执行流程示例。
### **算法结果**
进行改造后的阴影检测算法对于大部分阴影均能够准确并完整的找出。但是该算法也存在一些问题:在面对一些颜色特别复杂、丰富的场景时,容易将表面交界处错误识别;在绿地场景等,即某些通道颜色强度大大高于其他通道时,无法通过自然光模型验证而无法检出阴影等。详细内容会在实验效果与对比一节展示。
![](https://www.writebug.com/myres/static/uploads/2022/7/3/9c60158f7eb5b24e6515b96a2481dac2.writebug)
组图1,改造后阴影检测算法的执行步骤。(a)原图。(b)对原图进行切割后两个块的处理样例,左上至右下分别为原图、灰度图、卷积图,左下的方块被接受,右上的方块被拒绝。(c)步骤1中所有被接受的方块。(d)通过步骤2的检测所得到的阴影候选。(e)筛去平均亮度高于阈值的阴影候选。红色为被筛去的部分。(f)通过阴影候选进行FloodFill算法。(g)去除小连通块噪点。(h)图e,图f与图g的细节对比
# 三、阴影去除算法
### 阴影去除的难点
在找出阴影区域后,就需要对阴影进行去除。在进行阴影去除时,需要解决这些难点:
1. 不同的阴影所在表面有着不同的性质,不能简单的通过调整亮度、对比度的方式完成。
2. 同一个阴影中,由于光源不为完美的点光源,阴影边界会存在轻微模糊,影响去除。
3. 在一些较高较宽物体的阴影中,由于不但太阳直射光被遮挡,天空的光线散射也被部分遮挡,使得同一个阴影的不同位置阴影的深度不相同。
4. 阴影检测算法可能不够完美,一些阴影的边缘未被当作阴影的一部分
我们的阴影去除算法需要考虑到阴影去除的这些难点,并尽可能的去除这些难点所带来的对结果的影响。
### 阴影去除算法
基于上面对于阴影去除难点的分析,我们使用如下的算法进行阴影去除:
1. 将一张阴影图像拆成若干张,每张上面为一个连通块的阴影。这样将不同表面的阴影分开处理,避免相互干扰。
2. 对于一张阴影,将阴影扩大5像素。由于阴影检测时可能将阴影边缘并不是很暗的点作为非阴影区域,如果忽略这些点会导致阴影�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源包含文件:课程word+答辩PPT+项目源码及测试图片 数字图像中阴影是普遍存在的,而且其为数字图像处理的很多任务,如图像特征提取,图像识别,图像分割带来了不利的影响。一个有效的阴影检测与去除方法可以为接下来的图像处理带来很多便利。 与同表面非阴影区域相比,图像中阴影区域一般会具有以下特征:其亮度会明显比非阴影区域低;与非阴影区域有分界,界线宽度一般不大,在界线上存在渐变;阴影区域的颜色通道比例和非阴影区域比较接近。我们可以利用这些特征来完成阴影检测的工作。 详细介绍参考:https://blog.csdn.net/sheziqiong/article/details/125589942
资源推荐
资源详情
资源评论
收起资源包目录
Python实现的数字图象处理之阴影检测与去除.zip (42个子文件)
main.py 1KB
课程论文.docx 2.77MB
ShadowRemoval.py 10KB
ShadowDetect.py 10KB
LICENSE 1KB
阴影去除效果对比图片
原始图片
lssd91.png 2KB
lssd577.jpg 62KB
lssd125.png 3KB
lssd91.jpg 28KB
lssd601.png 1KB
lssd601.jpg 15KB
lssd577.png 5KB
lssd103.jpg 31KB
lssd104.jpg 48KB
lssd152.jpg 63KB
lssd152.png 4KB
lssd104.png 1KB
lssd125.jpg 63KB
lssd103.png 2KB
不扩边
lssd577.jpg 141KB
lssd91.jpg 59KB
lssd601.jpg 32KB
lssd103.jpg 61KB
lssd104.jpg 98KB
lssd152.jpg 142KB
lssd125.jpg 135KB
不扩边 无分组
lssd577.jpg 137KB
lssd91.jpg 59KB
lssd601.jpg 31KB
lssd103.jpg 60KB
lssd104.jpg 96KB
lssd152.jpg 136KB
lssd125.jpg 134KB
完整
lssd577.jpg 136KB
lssd91.jpg 57KB
lssd601.jpg 32KB
lssd103.jpg 60KB
lssd104.jpg 96KB
lssd152.jpg 138KB
lssd125.jpg 134KB
答辩PPT.pptx 2.27MB
README.md 18KB
共 42 条
- 1
shejizuopin
- 粉丝: 1w+
- 资源: 1300
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页