行人检测方法研究资料.docx
- 文档编号:10411114
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:22
- 大小:2.39MB
行人检测方法研究资料.docx
《行人检测方法研究资料.docx》由会员分享,可在线阅读,更多相关《行人检测方法研究资料.docx(22页珍藏版)》请在冰豆网上搜索。
行人检测方法研究资料
1 绪论
1.1研究背景
在信息高速发展的今天,几乎所有领域都离不开计算机,在满足人们的习惯方式和生活习惯下,让计算机进行很好的通信,是计算机智能的一个必备的条件。
其中,计算机智能视觉是其应用的重要方向,它是研究使用各种成像输入设备替换人类视觉器官的领域叫智能视觉,并使用智能设备来替代人们完成识别和分析。
让智能设备能够像人类一样观察和理解是人们研究计算机视觉,而且智能设备还能随着环境的变化而做出相应的改变。
行人检测是计算机视觉的一个具体表现形式,并应用在以下方面:
智能监控
目前,为了防止财产安全和留下有效的证据,大部分的公众场所都装备了摄像监控设备。
但是,这些监控设备大部分还是有专人进行的查看的,这会导致以下问题的出现,一方面长时间的监控,监控人员很可能出现疲惫,可能导致某些重要信息的遗漏,另一方面不能充分的把监控信息利用起来。
然而人工的不足可以利用行人检测相关技术很好的解决,这样不仅可以减少各种资源的投入,又可以让监控的精确度得到很好的改善,当遇到紧急情况有可以及时预警。
车辆辅助系统
随着社会的发展,人民的经济水平不断提高,汽车逐渐走入了千家万户,然而汽车数量的急剧增长也导致了频繁的交通事故,无情的夺去了人们的生命财产安全。
如果我们将行人检测系统加入到汽车控制系统中,这样在行驶过程中车辆附近的人们可以被识别出来,极大了避免的交通事故的发生。
这样不仅可以有效的降低交通事故,而且这也可以带来汽车行业的革命式变化。
实际上,现在有许多公司已经研制出了无人驾驶的汽车,这些车的使用都需要行人检测技术,当然现在的能智能还没进入市场,目前还在试验当中。
高级人机接口
在21世纪,计算机技术得到了迅猛发展,并且愈加趋于智能化的特点,极大地改变了我们的生活方式。
我们不仅要求计算机能够快速准确的接收到外界输入的信息,而且能够高效地对信息进行处理并得到最合适的输出信息,作出的相应的反应。
人脸识别技术和物体检测技术的发展,可以很好的帮助计算机去获取和处理外界的信息。
这不仅需要良好的智能设备,同时也需要行人检测技术去协助完成。
1.2研究现状
行人检测在汽车领域具有很大的应用前景,近年来是模式识别领域研究的热点课题方向之一。
并且国内外也有了很多了研究成果,如由本田公司研发的基于红外摄像机的行人检测系统[1];CMU[2]、MIT[3]等国外的大学在这方面取得了很大的进步,清华大学[4]等也进行了相关方面的研究。
行人检测技术实际上为图像处理技术的分支,其核心思想就是利用计算机视觉技术和数字图像处理技术,去分析监控设备获取的信息,分析处理行人的行为。
行人检测的成功开发具有很大的应用前景,可以在各个领域得到发展。
而且由于检测的行人外形不同,加上周围的复杂混乱的环境,给行人检测系统的运行带来了很大的挑战。
早期的行人检测以静态图像处理中的分割、边缘提取、运动检测等方法为主。
例如:
(1)以Gavrila为代表的全局模板方法[5];
(2)以Broggi为代表的局部模板方法[6];
(3)以Lipton为代表的光流检测方法[7];
(4)以Heisele为代表的运动检测方法[8];
(5)以Wohler为代表的神经网络方法[9];
但是这些方法的检测速度很慢,而且普遍存在着误报、漏检率高的特点。
行人检测的现状:
大体可以分为两类:
(1)基于背景建模的方法:
分割出前景,提取运动目标,在进一步提取特征,分类判别。
然而这个方法构建了很复杂的模型,因此系统很容易受到干扰。
(2)基于统计学习的方法:
根据大量训练样本来构建行人检测分类器,提取样本的特征,一般分类器包括SVM[10],AdaBoost[11]。
目前,基于学习的行人检测方法得到了很大的发展,如基于AdaBoost、基于SVM、基于HOG等行人检测方法。
首先,这些方法都是学习正样本和负样本的变化,再根据大量的训练样本对不同的特征进行分类,因此,基于统计学习的方法有广泛的适用性。
在行人检测系统中,目标识别和ROIs分割是两个重要的部分。
目标识别依据监测信息的不同分为基于形状的方法和基于运动的方法。
ROIs分割可分为基于运动、基于距离、基于图像特征和基于摄像机参数四种方法。
在具体操作中,一般将这四种方法综合起来使用,能取得更好的结果。
1.3研究难点
目前行人检测技术面临着如下的技术难点:
(a)每个人都有各自的姿态,着装各异;
(b)特征空间的待提取的特征分布不集中;
(c)受训练的样本变化大,造成系统分类效果的好坏;
(d)受训练的样本很难包含各种复杂的真实环境;
现在的行人检测技术正处于发展的关键时期,已经取得了一些可喜的进步,但许多难点问题急待解决。
在一些环境背景良好的情况下,行人检测算法检测效果很好,但是实际中很多环境是很复杂的,检测的效果并不能满足要求。
另外,检测时会有延时也降低了系统的实用性,而且目前还缺乏标准的测试方法和数据库的建立。
1.4本文研究的主要内容
首先,本文简要地介绍了目前的各种算法,并相互对比,指出其中的优点和存在的问题。
其次,介绍本文研究的重要算法HOG算法原理,并进行改进,并比较改进前后,算法性能的变化。
最后,本文提出HOG+SVM算法,通过将现有的HOG算法和SVM分类器,巧妙的将两者结合改进,使之满足各种复杂条件。
本文的创新之处在于,通过将HOG和SVM算法结合并加以改进,使检测效率大大提高,并且实时性更强。
本文结构:
第一章是绪论,介绍了行人检测的背景和意义,并阐述了其研究现状,给出了本文的研究内容;第二章详细介绍了行人检测主要算法,并相互比较,得到其中的优缺点;第三章主要介绍HOG算法原理以及该算法的优缺点;第四章研究了基于HOG和SVM算法的行人检测算法,并进行了改进得到试验结果,详细分析后得到结论;第五章主要是对本文研究的总结以及未来技术发展的展望。
2行人检测主要方法介绍及比较
2.1引言
目前,随着智能交通的发展,行人检测这方面的算法的研究也在不断的深入,每年都会涌现出很多优秀的文论,有的是对行人检测进行全新的研究,或者是对原有算法进行深入的改善,提高检测的准确度以及检测的速度,加快了行人检测的实用化进程。
以下是对两类算法的详细介绍:
第一类为基于特征的算法。
在将矩形框范围内的行人作为一个整体的前提下,它的关键在于找到能够代表框内行人的特征信号参数,然后利用机器学习算法将这种参数进行分类,这样就可以区分行人和非行人,达到识别的目的。
从这个过程中,我们可以知道基于特征的算法分为分类器的学习和特征的提取,所以一个好的特征提取算法变得很重要。
比如HOG特征、wavelet特征、shapelet特征,LBP等。
该类方法的实现的算法比较简单,架构容易,当使用不同特征方法时,也不用更改原来的架构,且易于实现。
然而能够使用分类效果好的特征,就可以很好地从被检测目标很好的检测出行人目标。
前面我们提到行人都有各自的特点,所以目前很难找到一个完美的算法来描述行人的特征。
尤其是在行人行走过程中,行人的姿势不断变化、监控设备的视角也在变化、同时行人也会被其他物体遮掩。
现在的所有特征参数不能取得很好的效果。
目前,被研究人员认为最稳定的特征是行人的轮廓,因此很多研究人员都将重点放在了提取行人的轮廓信息。
第二类为基于多部位的方法,就是分别取检测人的各个部位,然后综合起来判断是否是行人。
通过一定的算法,来分析各个部位的关系,从而判断是否为行人目标。
当行人在行走过程中发生部分遮掩,使用该类方法能够很好的解决,而且处理效果要比第一类方法好许多。
但是,该类方法的核心在于,如何通过一个有效的机制,将各部分的检测结果合成一个整体,来判断是否为检测的目标。
受到人脸识别的启发,将人脸的正侧面分别作为训练样本,减少类内差别,可以使训练难度降低。
在这里,我们可以将行人分为正面和侧面,按照类似的处理方法,同样得到了一定的成果。
但是,在无形之中需要增加很多的训练样本值,使得工作量变大很多。
但是处理效果很好。
2.2基于特征的方法
2.2.1wavelet特征
在1997年,机器学习的思想被Oren[18]第一次引进到行人检测领域,该方法的大致是通过大量的训练样本,然后对样本进行学习,形成合适的模型,使得机器能够通过自动学习来建立模型。
这种方法使行人检测取得了很大的突破,开创了行人检测的新局面。
但是随着时间的变化,行人检测的技术在不断的发展,该算法的效果并不能满足人们的要求。
理解它,可以帮助我们很好的学习后续的复杂的算法。
该方法的提出主要有以下的贡献:
第一,该方法实验结果表明,在行人检测领域引入机器学习是很有必要的通过吧一些简单的特征进行分类训练,然后加以分类是一个很好的方案。
第二,该方法对负样本的规范定义,在Oren提出该方法之前,负样本还没用统一的标准。
如何选取准确的负样本,是许多研究人员关心的问题,但是一直都没有找到很好的方案。
由于这种方法的出现,负样本的训练对系统的益处大大地增加。
在此之后,许多研究人员沿着这一方向继续研究,并出现了新算法。
2.2.2Adaboost算法
Adaboost算法是通过改变数据的分布实现的,是一种迭代算法。
在每次进行训练之前,都会对之前所有训练的样本进行初始化权重,判断上一轮分类器的总体准确率。
在对样本就行训练时,对完全能够准确分类的样本,就降低它的权值。
在下一轮训练时,被选中的概率就会降低。
与之相反的是,如果被判断错误的分类样本,在下一次训练时,被选中作为样本的概率就会变大。
这样,在每次训练时,都会训练上一次被判断为错误分类的样本,学习了正确的样本。
最终由各个弱分类器级联成强分类器。
Adaboost算法不仅有计算效率高,弱分类器的兼容性好、参数少等特点被广泛应用。
2.2.3shapelet特征
该算法是基于boosting算法进行两次处理。
第一次提取一些简单的的特征,然后对提取出的特征进行训练,将训练的结果进行加权,得到shapelet。
接下来第二次,是将得到的shapelet通过训练器再进行训练,得到最终的训练分类器。
该算法的优点在于,通过简单的特征作为基础,通过学习、训练得到比较好的训练分类器。
因此该算法的性能比较良好,在检测效率上,shapelet也高于与之相似的edgelet算法,应用也很广泛。
2.3基于多部位的方法
2.3.1自适应组合分类器
首先,该算法将人分为头肩、左肩、右肩和下半身四个部分,然后利用算法分别训练出每个部位的模型,得到各自的分类器。
该算法使用了基于小波的算法,但是特征的维数更高,因此性能也有了一定的提升。
然后将这四个分类器的参数作为最终分类器的参数输入,利用算法再做训练,得到最终分类器的模型。
需要指出的是,必须在一定范围内对四个部位的分类器进行搜索,得到最优的返回值。
2.3.2基于贝叶斯推断的组合算法
基于贝叶斯推断的方法是由BoWu从概率角度出发提出的,然后通过一系列计算,得到最大概率解。
在这个算法中,将人分成头肩、躯干、腿部三个主要部分。
类似于2.3.1的方法,首先,对检测对象的三个部位进行训练,得到训练分类器,并进行检测。
最后,将各个部分得到的实验结果比较分析,以贝叶斯为依据来判断是否出现了行人。
2.3.3隐式形状模型
该算法在训练阶段,首先建立图片块字典,也就是为所有的图片块建一个索引。
随后,要得到图片块的任何信息时,通过前面建立的索引,进行查询。
首先,我们需要获得在兴趣点附近的图片信息,并在对应的字典中找到相应的匹配项,通过比对相关信息,对中心位置进行分析即投票。
毋庸置疑,那些得到票数最高将作为结果。
最后,分析实验数据,确定实验结果。
2.4基于多视角的方法
基于多视角的方法在人脸识别的领域应用很广泛,但是将该方法引入行人检测方向的方法目前还不是很多。
这是因为在不同视角下,人脸的差别是很大,但是对于行人来讲该特征确要小很多。
另外,目前的训练样本还不够充足,不能得到理想的试验效果。
目前多视角的方法有以下几种:
第一种方法是对于视角的差异,我们并不做不同处理,而是将它们统一处理。
正因为这样处理,这种方法的难点是假如不同的视角的物体差别很大,那将导致类间差别很大,使得训练出来的分类器是无效的。
对于行人来说,有些情况很特殊,虽然各个视角的行人也有差别。
但是那些差别还不足以导致训练无法正常进行,例如一些基于特征的方法,并没有考虑多视角问题,但是检测效果和识别效果一样很好。
第二种方法是通过视角将样本进行分开,将不同分组的样本分别训练成一个个分类器,并分别检测所有的分类器。
这个方法的弊端在于,视角分的越多复杂度就越大,并且大大增加了人工的负担。
第三种方法是提取不同视角之间的共同特点,这样可以降低算法的复杂度,提高速度。
这类方法不仅考虑了多视角的行人特征的不同,也考虑到了视角分类太多类内变化大的缺点。
因此,第三种方法是目前研究的大趋势。
现在,基于树的结构的分类器已经受到了越来越多人的关注,因为它可以处理不同的试验样本,提高了系统的性能。
这样既可以有效的避免类内变化大的缺点,又可以解决视角特征不同带来的误差,这样的可以大大缩减算法的复杂度。
3基于HOG特征的行人检测
3.1引言
行人检测的目标是将每一帧图像中行人识别出来,并得到其空间位置。
由于描述行人的方法不同,一般将行人检测算法分为以下三类:
基于特征表述的方法、基于模板匹配的方法、基于纹理和形状结合的方法。
另一种划分方式是根据将行人是否作为整体进行检测,可以分为基于整体的检测和基于部位的检测。
前面我们在第二章已经学习到了HOG算法,在这一章,我们将进一步研究HOG算法。
首先,我们需要对每帧图像进行特征提取,然后将提取的特征训练生成分类器。
根据提取特征的映射分类不同,分类器模型有可以分为判别模型和生成模型。
由于利用的是特征之间的近似性,生成模型主要从统计分类学角度计算特征的联合概率。
它所针对的是特征之间的相似性,与之相反的是判别模型,判别模型是根据特征之间的差异性进行的。
在训练分类的过程中,不停寻找不同特征所对应的最优分类方法。
判别模式最典型的代表是SVM算法,该方法从样本学习带检测,目标的相关分类特征。
经过样本学习、样本训练之后,生成最优的分类面,在不同环境条件下,SVM均有比较好的适应性。
目前,针对SVM算法进行改进的算法很多,该算法的优越性使之越来越流行。
3.2HOG特征原理
3.2.1HOG特征算法思想
2005年,Dalal在CVPR会议上提出方向梯度直方图(HOG),该算法的特征是通过统计和计算图像局部区域的HOG来获取的,在图像处理与识别领域被称为描述物体的特征算子。
该算法的核心思想为:
假设训练的样本大小为64*64像素。
第一步,将该64*64像素的样本划分成小的连通区域即cell,每个cell的大小不妨设为8*8像素,这样样本图像就被划分成8×8=64个cell。
二步将每个cell中的各像素点的边缘或者梯度的直方图采集出来。
接下来把这些采集来的直方图进行整合形成特征描述算子。
然而为了提高HOG算法的性能,一般将相邻的4个cell划分为一个block。
图3-1为HOG特征模板,其中宽W:
H之比为1:
1。
图3-1HOG特征模板
随着每个细胞单元的滑动而形成block,block每一次滑动一个cell的宽度,对于一个64*64的图我们可以得到49个block。
图3-2是描述block与cell的关系:
图3-2block与cell的关系
在划分大小为8*8像素的cell后,接下来采用9个bin的直方图去统计cell的每个像素的梯度信息。
用梯度方向对cell内每个像素在直方图中进行加权投影,就得到了该cell的梯度方向直方图,如图3-3所示。
最后将各个cell组合成大的、连通的blocks。
就这样,在一个block内四个cell的特征向量可以串联起来就可以得到该block的HOG特征。
因此,每个cell的特征以不同的特征出现在最终的HOG特征向量中。
归一化之后的block描述符就是HOG特征描述算子。
图3-3梯度划分
3.2.2HOG特征算法的实现
HOG特征算法实现用下面流程图如图3-4表示
图3-4HOG算法流程图
首先第一步将图片进行归一化处理,由于图片的颜色信息作用并不大,加上压缩处理能够有效的改善图片局部阴影和光照的影响。
通常首先将待检测的图片转化为灰度图,压缩公式为:
3-
(1)
其中gamma=1/2;接下来计算进一步计算梯度方向值,这样不仅可以进一步减小光照的影响,而且可以获得图像的各个轮廓,各个像素点的梯度计算公式为:
3-
(2)
3-(3)
式中Gx(x,y)、Gy(x,y)、H(x,y)分别表示输入图片的像素的水平梯度、垂直梯度、和像素点。
像素点(x,y)处得幅度值和梯度方向分别为:
3-(4)
3-(5)
第三步是计算每个cell的梯度直方图,并进行规定的权重投影。
第四步是将单一的cell合成大的block,并计算块内梯度直方图。
用来进一步解决部分关照的变化以及对比度的变化。
并且归一化形成HOG描述符。
第五步是对于每一个重叠block块内cell进行对比度归一化,并把所有block内的直方图向量一起组合成一个大的HOG特征向量
3.2.3HOG特征算法的实验结果
实验一:
在正常条件下,行人特征比较明显的条件下,使用标准库的HOG算法对输入图片进行处理,结果如图:
图3-5HOG检测实验一
从图中可知,在特征明显的条件下,HOG算法检测效果很好,图中所有人都能够检测出来。
实验二:
行人特征为侧面时,HOG算法检测结果如图:
图3-6HOG检测实验二
从图3-6中的检测结果可以看出,当行人侧面出现,并且身体部分遮掩时,hog算法出现漏检现象。
这与检测的精确度有关同时也与样本数量以及行人特征的多样性有关。
实验三:
夜间图片检测,检测结果如图:
图3-7HOG检测实验三
从图中检测结果可知在夜间行人特征不明显的条件下,hog算法检测效果不太好,这因为夜间环境复杂,行人的特征与周围的环境背景很相似,很容易造成漏检的情况。
目前这些都是很多学者正在解决的问题。
实验四:
当图像像素模糊,但特征明显的情况下,检测的结果,如图所示
图3-8HOG检测实验四
从图中的检测结果可知,及时像素不太好的情况下,只要行人特征明显,hog检测效果明显。
3.3HOG特征算法的优缺点
HOG特征算法想对于其他特征描述算法有很多优点。
首先,在图片的局部细胞单元格上操作是HOG的一大特点,这样它对图片的光学和几何的变化都有很好的适应性,因此,HOG算法对这两种形变的处理是其他算法无法比拟的。
其次,在一些特定环境条件下,只要行人的特征大致上比较明显,即使行人在动作特征上有一些细小的改变,检测结果也一样不会受到任何的影响。
因此,HOG特征算法在行人检测领域特别受欢迎,但是HOG算法设计复杂,训练时间较长,检测时间也很长,给检测带来很大的延时,不符合行人检测实时性的要求。
4基于HOG和SVM的行人检测
4.1引言
经过前两章的介绍,我们对HOG算法和SVM算法有了初步的了解。
在这一章,我们将要进一步学习HOG算法和SVM算法。
在前两章,我们学习到,HOG算法和SVM算法都有各自的优点和缺点,那么这一章我们将研究如何将二者巧妙的结合,发挥各自的优势,很好的解决在各种条件下,行人检测的效果。
使检测的效果更加精确,实时性更高,算法实现更容易。
4.2SVM分类器的简介
在机器学习中,支持向量机(SVM)是与相关的学习算法有关的监督学习模型,主要用于分类和回归分析。
例如现在在一个p维的空间中有两个由一系列的数据形成的数据集合,每个数据仅属于其中一个集合,为了确定新的数据点事属于哪一个集合,支持向量机会将将每一个数据都看成一个p维向量,然后通过计算分类,找出能够将两个数据集合分开的p-1维的超平面。
所以支持向量机也叫做线性分类器。
还有许多超平面,可能对数据进行分类。
如果存在一个超平面使所有的数据不出错地分类,同时每类数据与超平面的距离最近的向量距离最大,那么这个超平面称之为最优超平面。
基于SVM的算法不仅有运算速度快的优点,而且实现较容易、运算效率高的特点,但是SVM算法也有一些不足之处:
(1)通常,行人检测中的正样本和负样本在数量上有很大的不同,就会出现样本不均衡的问题,分类器的分类面偏向于样本少的一方,而过于关注样本多的一方,这样会使分类器的精度大大降低。
(2)由于过于关注弱分类器的精度,这样导致过拟合现象。
4.3HOG和SVM的改进及结合
通常SVM算法关注的是在正样本和负样本数量相隔不大条件下的问题,但是当正样本和负样本数量相差很大时,直接使用SVM算法,会导致降分类器的分类精度降低很多。
针对这一问题,本文做的的处理是,首先通过HOG特征提取足够的正负样本,通过大量HOG提取的样本并使用SVM进行分类,这样可以解决分类器处理精度,进而提高行人检测的精度。
通过HOG特征提取的训练样本可以很好适应各种情况下检测和识别。
其次,通过HOG特征提取的样本投入SVM分类器进行样本训练。
通过将大量的正负样本进行训练,可以得到model,然后由得到的model生成检测因子,接下来使用生成的检测因子去检测负样本,得到hardexample,最后提取hardexample中的hog特征,并与hog特征的负样本一起投入训练生成最终的检测因子。
改进的hog+svm算法,通过增加训练的样本、改进hog算法的各种参数,以及改善svm分类器的各个参数,这样可以达到两种算法结合的最优状态。
检测的效果可以适应各种环境,并且检测速度也更加迅速,实时性更强。
4.4实验过程及处理
整个实验过程大致如图4-1所示:
图4-1实验结果流程图
实验过程中的部分正负样本如图4-2、图4-3,实验过程中的代码部分见附录。
图4-2训练的正样本
图4-3训练的负样本
4.5实验结果及分析
实验一:
在正常条件下,行人特征比较明显的条件下,使用本文算法对图片就行检测得到如下结果:
图4-4实验一结果
从图中我们可以看到,检测矩形窗口很好地识别了每一位行人,当然,在这里所有人的特征比较明显,并且背景干扰也比较小。
因此在整个处理效果上是非常好的,并且也比较符合通常的行人特征。
同时也说明了本文所涉及的算法的检测效果是非常好的,在正常情况下,不会产生错误的识别或者漏掉一些行人。
并且训练时间比HOG算法短了许多,检测时间实时性更高。
实验二:
行人侧面特征检测效果。
从图中我们看到,被摄像头侧面抓拍的行人,在经过HOG+SVM算法处理之后,可以准确的识别出来。
同时,我们也能注意到距离较远的两个行人并未识别。
这与算法本身精度有关,以及那两位行人距离较远特征识别不明显,导致漏检。
图4-5实验二结果图
实验三:
在图片清晰度不高的条件下,训练特征对图片的检测效果。
图4-6实验三结果图
从图中检测的结果,我们可以轻易的看出即使在图片清晰度不高的条件下,只要行人的特征比较明显,本文的算法检测显示了极大的优势,在较短时间里就能完全识别所有行人。
HOG+SVM显示了其良好的性能及处理的效果。
比较符合实际生活中各种情况下的行人检测,因此该算法兼备了HOG和SVM特征的优点,同时,我在设计算法时巧妙的选取合适的参数,是的处理精度更加完善。
实验四:
在此实验中,我选取得图片是一张夜间行人图片,用于对比分析白天的处理效果。
在夜间,图像的亮度和光度较差,很容易造成误检以及漏检,夜间的背景环境也比白天复杂的多。
处理效果如图所示:
图4-7实验四结果图
从图中可以看到,左边两个人被楼检了,分析其原因,有两点。
第一,在夜间灯光不明显,图片本身效果比较差,导致训练样本在检测图片时出现了漏检。
第二
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 行人 检测 方法 研究 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)