完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 zm422822 于 2015-9-30 11:49 编辑
基于遥感图像的飞机检测 目录 摘要 基于遥感图像的飞机检测,利用区域面积以及角点对图像进行处理分析,将目标飞机标记输出。首先对图像进行预处理,经过灰度变换后将图像二值化,在二值图的基础上对连通区域面积进行限制,将较大和较小面积连通区域滤除掉。然后分别对原图和二值图进行角点检测并将两幅图进行与运算,得到面积检测后的角点检测图,然后将角点符合要求的连通区域保留并且标记输出。 关键词遥感图像、飞机检测、matlab、面积检测、角点检测、二值化。 引言目前,在目标检测领域有多种实现方法,如滑动窗口检测法,采用局部梯度特征的SIFT描述子和HOG描述子方法,基于角点检测的目标检测方法,基于模型的Part-based Model方法以及采用多特征组合的MULtiFTR+MOTION、HOGLBP方法等。基于对各种检测方法的了解,本组采用了如下的检测方式:①读入图片②对图像进行预处理③将预处理后的图像进行二值化处理④对二值图的连通区域惊醒处理⑤对原图像及二值图进行角点检测⑥标记符合要求的连通区域并打框输出。但是这种方法对于图像质量本身有较高要求,如果图像质量较差,边缘信息过于模糊,则容易在图像处理过程中将其判断为不符合要求项过滤掉,从而造成错检,漏检的情况。 在本次检测结果中,我们共检测出目标149个,其中飞机87架,错检62个,漏检飞机8架。就总体而言,多数飞机能够被准确检测出,但是排除伪目标方面仍需要继续改进。 检测方法:对飞机目标的检测主要运用了面积和角点两个特征,处理过程中也用到了灰度变化、二值化、滤波、腐蚀、膨胀、开闭运算等图像处理的基本方法,其核心算法是面积检测和角点检测,借助MATLAB强大的运算和处理能力,实现了对图像中飞机目标的检测。 方案设计整体流程如下: 在处理时发现图片很大,所以把图片分成了四块区域,选择其中一块来处理,来提高效率,为了提高检测的准确性,选择了飞机最多的一块区域,待处理结果达到预定值时,再将此方法应用于整个图片,再根据其他部分的检测结果,对代码进行改进。 预处理: 检测对象飞机与背景相比是较为明亮的区域,但是在把图片放大的时候会发现飞机的边界并没有想象中的那么明显,于是在预处理时,对图像进行了灰度变换,对图像的对比度加强,运用matlab中的imadjust函数。 J = imadjust(I,[low_in;high_in],[low_out; high_out]) 将图像I中的亮度值映射到J中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。low_in 以下与 high_in 以上的值被剪切掉了,也就是说,low_in 以下的值映射到 low_out,high_in 以上的值映射到high_out。它们都可以使用空的矩阵[],默认值是[0 1]。 二值化:对预处理后的图像做一个直方图,飞机的亮度在处理后的图像中是偏高的,选择合适的阈值T,用matlab中的Ibw=im2bw(I,T/L);其中T为设定的阈值,L是灰度级,这次处理T取的240,L为256。 面积检测主要是分两部分:一是检测出比飞机面积大的区域,二是检测比飞机面积小的区域。具体处理过程中在检测小面积部分时,先检测出面积很小的区域,就是二值图中类似于白点的区域,因为这些点有可能就在两飞机之间,会对后面的检测带来影响。然后是检测面积较大的区域,在检测之前对图像进行膨胀处理,因为图像中很多 不连通的部分,使其连通,但要保证飞机不能和这些区域相连,这样就能在检测大面积区域时把大部分区域都检测出来,保留飞机的部分,膨胀的程度是根据具体检测的结果来选定的,检测出大面积区域后对图像进行腐蚀,再检测小面积区域部分,检测结果如下: 腐蚀膨胀可以利用matlan中的函数imdilate(I,C)和R1=imerode(I,C)来完成,其中C为掩膜,选择合适的掩膜能控制腐蚀膨胀的程度。 那么如何实现面积的检测呢? 二值化后的图像其灰度取值只有0和1,那么求面积就转变为求图像中1的个数,不同连通区域中1的个数就是该连通区域的面积,
这是随机从二值图中截取的一部分,然后利用matlab中的 [L num] = bwlabel(I)函数可以实现区分不同的连通区域,其中L是和图像同样大小的矩阵,该矩阵第一个连通区域中的值为1,第二个连通区域中的值为2,依次类推,第k个连通区域的值为k,连通区域的总个数为num。如下是随机截取的L矩阵中的值,表示的就是第71个连通区域。统计出71的个数那么这个区域的面积也就得到了。 0 0 0 0 0 0 0 0 0 0 0 0 0 71 71 71 71 71 0 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 角点检测: 在面积检测后的图中还有和飞机面积大小差不多,但是不是飞机的区域,利用飞机的角点特征来检测面积处理后图中的飞机,具体步骤如下:首先是基于原图角点检测,利用Harris角点提取算法,先建立x,y方向梯度算子,分别对x,y方向进行滤波,之后消除变量Ix、Iy。之后再产生7*7的高斯函数sigma=2,进行高斯滤波后进行角点记录,有角点出现的位置设定其值为1,之后计算图像的最大R值(R = zeros(height,width);),进行窗口大小为3*3的非极大抑制后在角点坐标处标记。然后让原图角点检测结果与面积检测结果相与运算,得到的就是检测面积后的角点。 要基于原图进行角点检测是因为在之前的处理过程中图像的好多角点信息已经丢失,尤其是在二值化和腐蚀膨胀的处理过程中,所以在原图上角点检测能保证角点的准确性。 角点检测后的结果返回到一个和图像同样大小的矩阵中,在角点的位置用1来表示,统计角点的个数其实就是统计返回的矩阵中该图像连通区域位置部分1的个数。将符合角点要求的连通区域保留下来,即去除伪目标,我们将角点个数在3-9个的连通区域保留下来作为检测到的目标区域。 具体实现,首先要把基于原图角点检测后的的结果与面积检测的结果进行与运算,将得到的角点的矩阵与面积检测后二值图像对应点的值相乘得到的新的角点矩阵,然后求出每个连通区域的角点数目。 求每个连通区域的角点个数核心代码为: count=zeros(1,num); for i=1:h for j=1:w for k=1:num if ((L(i,j)==k)&&(I_jiaodian(i,j)==1)) count(k)=count(k)+1; else count(k)=count(k); end end end end 将求得的角点数目存在count矩阵中,再后续处理只需限制角点个数就可以了。 标记输出:在进行标记输出之前我们又对图像进行了一些处理,由于图像中还有一些非目标区域存在,这些区域的面积与角点个数均与飞机相似,于是进一步限制了面积,处理前先腐蚀处理,使飞机还原到检测前的大小(因为之前进行过膨胀处理),之后再滤除区域面积大于500的连通区域,然后对剩余的连通区域进行标记,并输出图像。用matlab中的函数status=regionprops(l,'BoundingBox')可以实现连通区域的标记 输出结果如下: 不难发现在图中漏检较少,错检较多,因为我们选择的飞机特征有限,所以对于满足面积和角点要求的而非飞机的部分不能识别,所以错检的较多,如果对更多的特征进行提取,可以进一步减少错检。 结果与讨论在本次检测结果中,我们共检测出目标149(由matlab中的num可以得到)个,其中飞机87架,错检62个,漏检飞机8架。就总体而言,多数飞机能够被准确检测出,但是排除伪目标方面仍需要继续改进。 检测结果表明,我们所采用的检测方法还有较高的修改与提升空间。在进行预处理时,我们首先直接对图像进行灰度变换,然后直接进行二值化,后面的处理主要是基于面积和角点。 限制连通区域的面积时,面积筛选的一个难点是阈值的选择,因为飞机本身有大的也有小的,而且面积也很难确定,因此在筛选过程中我们采取了多次筛选,首先将面积小于一定值的部分全部滤除,之后再将面积大于阈值的部分滤除,处理过程中结合膨胀、腐蚀、开、闭运算,实现了对面积的检测。处理后还有大量的非目标区域但是面积接近的区域既为目标。所以还需要根据角点个数来去除非目标部分。我们主要采取了Harris角点检测与限制连通区域面积的方法来进行检测与去除伪目标,但经处理后的图像仍有较多区域的特征与飞机的特征接近或相同,所以这类伪目标难以去除,造成错检。在此基础上如果能提取到更多的飞机的信息,就可以进一步降低错检,提高准确度。其次存在的的问题还有代码的优化问题,运行效率较低,处理的速度有待提高。 参考文献 Rafael C.Gonzalez Richard E.Wddos 《Digital ImageProcessing》 Third Edition 电子工业出版社 2005年10月,陈白帆、蔡自兴,基于尺度空间理论的Harris角点检测 2005年2月,张旭明等,用于图像处理的自适应中值滤波 2004年8月,高浩军、杜宇人,中值滤波在图像处理中的应用 2008年5月,赵万金等,一种自适应的Harris角点检测算法 2013年6月,何楚等,基于分层自适应部分的遥感图像飞机目标检测 2011年9月,仇建斌等,角点与边缘信息相结合的遥感图像飞机检测新方法
|
||||
相关推荐
23个回答
|
||||
感谢楼主分享 好东西 大家学习
|
|
|
|
感谢楼主分享 好东西 大家学习
|
|
|
|
|
|
|
|
看 如何看
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1697 浏览 1 评论
200圆!求助大佬给一份VSG并网和离网模式的simulink仿真
1973 浏览 0 评论
MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)
2792 浏览 0 评论
3130 浏览 0 评论
4105 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 00:14 , Processed in 0.768276 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号