[发明专利]一种基于非下采样Contourlet变换的直线目标检测方法及系统有效
申请号: | 202011075165.7 | 申请日: | 2020-10-09 |
公开(公告)号: | CN112215126B | 公开(公告)日: | 2022-10-25 |
发明(设计)人: | 杨艺;蒋庆华;谢守志;张猛;张思贤 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06V10/30 | 分类号: | G06V10/30;G06V10/80;G06V20/10 |
代理公司: | 西安通大专利代理有限责任公司 61200 | 代理人: | 李鹏威 |
地址: | 710049 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 采样 contourlet 变换 直线 目标 检测 方法 系统 | ||
1.一种基于非下采样Contourlet变换的直线目标检测方法,其特征在于,包括以下步骤:
步骤1,在原始遥感图像上进行多层次多方向的NSCT分解,获得若干低频子图和高频子图;
步骤2,对于步骤1分解得到的每个高频子图:进行LSD线状目标检测,获得初始高频线段集;将初始高频线段集根据视觉显著性进行筛选,获得一筛高频线段集;将一筛高频线段集根据“平行直线对”特征进行筛选,获得二筛高频线段集;对于步骤1分解得到的每个低频子图:进行LSD线状目标检测,获得初始低频线段集;将初始低频线段集根据视觉显著性进行筛选,获得一筛低频线段集;将一筛低频线段集根据“平行直线对”特征进行筛选,获得二筛低频线段集;
步骤3,对步骤2获得的全部高频子图的二筛高频线段集的线段进行融合处理,获得高频融合结果RH;对步骤2获得的全部低频子图的二筛低频线段集的线段进行融合处理,获得低频融合结果RL;
步骤4,将步骤3获得的低频融合结果RL和高频融合结果RH进行融合处理,获得低频和高频融合结果,完成直线目标检测;
其中,步骤2中,将初始高频或低频线段集根据视觉显著性进行筛选,获得一筛高频或低频线段集具体包括:
使用LSD检测出的线段长度小于基于视觉显著性所求出的线段长度阈值T时,认为不符合显著特性,从初始高频或低频线段集筛除,获得一筛高频或低频线段集;其中,
式中:T代表基于视觉显著性所求出的线段长度阈值;ε代表允许的偏差;Len代表图像较长边的边长;
步骤2中,所述将一筛高频或低频线段集根据“平行直线对”特征进行筛选,获得二筛高频或低频线段集具体包括:
一筛高频或低频线段集表示为G={line1,line2,…,linenum_G};其中,num_G表示线段集G中线段条数;
对G中的全部线段进行遍历,执行的判定规则表达式为,
式中,lineα是被遍历到的线段,lineβ是线段集G中任意一条线段,kα代表lineα的斜率,kβ代表lineβ的斜率,thre代表设置的斜率阈值,α≠β,1≤α≤num_G,1≤β≤num_G;
当判定为save lineα时,保留线段lineα;判定为delete lineα时,筛去线段lineα;
其中,线段lineα和线段lineβ的斜率分别表示为:
式中,和分别代表线段lineα两端端点的坐标;和分别代表线段lineβ两端端点的坐标;
步骤1中,低频子图或高频子图的分解层数为N层;其中,对于高频子图,第n层的分解方向数目为mn,n=1,2,…,N;
步骤3中,任意一个低频子图上的二筛低频线段集为L_Sn,任意一个高频子图上的二筛高频线段集为H_Sn,j;其中,j=1,2,…,mn;
步骤3中,所述对步骤2获得的全部高频子图的二筛高频线段集的线段进行融合处理,获得高频融合结果RH具体包括:
首先,执行oper1操作,表达式为,
其中,H_S代表经过oper1融合操作后的线段集,H_Sn,j代表任意一个高频子图上的二筛高频线段集;
算子oper1定义表达式为,S=(S1)oper1(S2)={S1,S2};其中,效果为将算子oper1前后两个线段集合并为一个线段集;S1,S2分别代表两个不同的线段集,S代表经过oper1合并后的线段集;
然后,执行操作RH=ψ(H_S);
函数ψ(…)定义为,设H_S={l1,l2,…,lnum_l},num_l代表线段集H_S中的线段数目,对线段集H_S进行遍历,对其中任意两条线段进行如下公式的判定,
condition(A),判断两直线斜率差值:|kc-kd|≤threk;式中,kc代表线段lc的斜率;kd代表线段ld的斜率;threk代表斜率阈值;
condition(B),判断一条线段中点到另一线段的距离:式中,kc代表线段lc的斜率;代表线段ld的端点;bc代表线段lc所在直线方程的截距;thredis代表距离阈值;
condition(C),判断两线段端点之间的最小距离:Mmin=min(d1,d2,d3,d4)≤threM,式中,Mmin代表d1,d2,d3,d4中的最小值;d1,d2,d3,d4分别代表线段lc端点与线段ld端点的距离;threM代表端点阈值;代表线段ld两端的端点;代表线段lc两端的端点;
condition(D),判断一条线段的中点到另一条线段的中点的距离:式中,threCenter代表中点距离阈值;代表线段ld两端的端点;代表线段lc两端的端点;
式中,lc和ld代表线段集H_S中任意两条线段,c≠d;线段lc所在的直线方程为y=kcx+bc,线段两端的端点分别为线段ld所在的直线方程为y=kdx+bd,线段两端的端点分别为
当判定为label ld,lc时,将线段lc和ld标记为同一类别;当判定为save lc时,则代表不存在线段ld使得lc和ld被标记为同一类别,直接保留线段lc单独成为一个类别;
规定Ω为:假定线段LINE_A与线段LINE_B已被标记为同一类别;线段LINE_B与线段LINE_C也被标记为同一类别,则线段LINE_A、LINE_B和LINE_C归为同一个类别;
经过划分类别的判定后,将划分到同一个类别中的线段进行融合;
其中,将待融合的线段集合表示为S'={string1,string2,…,stringnum_string},num_string为待融合线段集中的线段数目;
融合后的线段所在直线方程表示为:y-yres=k(x-xres);式中,yres代表直线所经点的纵坐标,xres代表直线所经点的横坐标,kres代表融合后的线段的斜率,
对于计算所得的直线方程,由计算其横坐标范围[xmin,xmax],以截取成线段;其中,s代表直线标号;代表对应线段s的两个端点横坐标,为这num_string条线段的端点的横坐标最小值;为这num_string条线段的端点的横坐标最大值;
经过融合生成的线段组成的集合为ψ(H_S)的结果RH;
步骤3中,所述对步骤2获得的全部低频子图的二筛低频线段集的线段进行融合处理,获得低频融合结果RL具体包括:
执行L_Sn'=ψ(L_Sn),n=1,2,…,N操作;其中,L_Sn为第n层的二筛低频线段集;L_Sn'代表对应第n层低频线段集经过ψ(…)处理后的线段集;
执行L_S”=(L_S1')oper1(L_S2')oper1…(L_SN)操作;其中,L_S”代表经过oper1融合处理后的结果;
执行L_S”'=φ(L_S”)操作;其中,L_S”'为经过φ(…)操作后的结果;
函数φ(…)的定义为:
设线段集L_S”={h1,h2,…,hn'};其中,n'代表线段集L_S”中的线段数目;对线段集L_S”进行遍历,对其中任意两条线段进行如下公式的判定,
condition(A'),判断两直线斜率差值:|ke-kf|≤threk;式中,ke代表线段he的斜率;kf代表线段hf的斜率;threk代表斜率阈值;
condition(B'),判断一条线段中点到另一线段的距离:式中,ke代表线段he的斜率;代表线段hf的端点;be代表线段he所在直线方程的截距;thredis代表距离阈值;
condition(C'),判断两线段端点之间的最小距离:式中,代表中的最小值;分别代表线段he端点与线段hf端点的距离;threM代表端点阈值;代表线段hf两端的端点;代表线段he两端的端点;
condition(D'),判断一条线段的中点到另一条线段的中点的距离:式中,threCenter代表中点距离阈值;代表线段hf两端的端点;代表线段he两端的端点,
式中,he和hf代表线段集L_S”中任意两条线段,e≠f;线段he所在的直线方程为y=kex+be,线段两端的端点分别为线段hf所在的直线方程为y=kfx+bf,线段两端的端点分别为
当判定为label hf,he时,将线段he和hf标记为同一类别;当判定为delete he时,则代表不存在线段hf使得he和hf被标记为同一类,选择直接舍去he;
此处判定遵守规定Ω;
经过划分类别的判定后,对每个类别中的线段数量进行判定;假设分到某一个类别中的线段所组成的线段集记为其中num_temp为线段集线段数目;判定规则如下:
当判定为save L_Stemp时,将线段集L_Stemp中的全部线段予以保留;当判定为delete L_Stemp时,将线段集L_Stemp中所有线段筛去;
经过数量判定后,将保留的全部线段所组成的线段集L_S”'进行融合环节和筛选环节,融合环节表达式为L_S””=ψ(L_S”'),筛选环节为对L_S””执行一次“平行直线对”筛选,最终获得全部低频线段集的融合结果RL;
步骤4具体包括:
执行R=(RL)oper2(RH)操作;式中,RL代表低频线段集的融合结果,RH代表高频线段集的融合结果,R代表低频和高频融合结果;
算子oper2定义为,设其中,nL和nH分别代表线段集RL和RH中的线段数目;
对RL中的任意一条线段segp,在RH中进行遍历,被遍历到的线段记为进行判定:
condition(A”),判断两直线斜率差值:|kp-kq|≤threk;式中,kp代表线段segp的斜率;kq代表线段的斜率;threk代表斜率阈值;
condition(B”),判断一条线段中点到另一线段的距离:式中,kp代表线段segp的斜率;代表线段的端点;bp代表线段segp所在直线方程的截距;thredis代表距离阈值;
condition(C”),判断两线段端点之间的最小距离:式中,代表中的最小值;分别代表线段segp端点与线段端点的距离;threM代表端点阈值;代表线段两端的端点;代表线段segp两端的端点;
condition(D”),判断一条线段的中点到另一条线段的中点的距离:式中,threCenter代表中点距离阈值;代表线段两端的端点;代表线段segp两端的端点;
线段segp所在的直线方程为y=kpx+bp,线段两端的端点分别为线段所在的直线方程为y=kqx+bq,线段两端的端点分别为
当判定为labelsegp时,将线段segp和标记为同一类别;当判定为delete segp时,则代表不存在线段使得segp和被标记为同一类,因此,这时选择直接舍去segp;此处判定遵守规定Ω;
经过划分类别的判定后,将划分到同一个类别中的线段进行融合;其中,将待融合的线段集合表示为S”={string1,string2,…,stringnumbers_s},其中,numbers_s为待融合线段集中的线段数目;融合后的线段所在直线方程表示为:y-yfinal=k(x-xfinal);式中,yfinal代表直线所经点的纵坐标,xfinal代表直线所经点的横坐标,kfinal代表融合后的线段的斜率,对于计算所得的直线方程,由计算其横坐标范围以截取成线段;其中,ss代表直线标号;代表对应线段ss的两个端点横坐标,为这numbers_s条线段的端点的横坐标最小值;为这numbers_s条线段的端点的横坐标最大值,记经过融合生成的线段组成的集合为R';
执行R”=ψ(R');其中,R”代表R'经过ψ(…)处理后的线段集;
对R”执行“平行直线对”筛选,获得最终的低频和高频融合的结果R,完成直线目标检测。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011075165.7/1.html,转载请声明来源钻瓜专利网。