本发明属于图像处理技术领域,具体涉及一种基于自适应划分网格的iaa直线检测方法。
背景技术
直线检测是机器视觉和图像处理领域中广泛存在的问题,例如自动驾驶中马路上双黄线检测、直拉硅单晶生长过程中的晶体形状检测等。霍夫变换是直线检测领域较为常用的方法,该方法虽然精度较高,但实时性较差。利用迭代自适应法(iterativeadaptiveapproach,iaa)检测直线的方法近年来被学者提出,具有较高的精度和鲁棒性,但迭代自适应法最大的问题是检测分辨率和算法复杂度相矛盾。如果检测分辨率要求高,需要划分大量的网格,这样就会增加算法的复杂度,影响算法的实时性。因此,如何解决iaa检测直线的检测分辨率和算法复杂度的矛盾就显得极为重要了。
技术实现要素:
本发明的目的是提供一种基于自适应划分网格的iaa直线检测方法,解决了现有iaa直线检测技术中存在的检测分辨率与算法实时性相矛盾的问题。
本发明所采用的技术方案是,基于自适应划分网格的iaa直线检测方法,具体按照以下步骤实施:
步骤1、将图像传感器拍摄的图像进行图像分割和边缘提取得到仅含直线的二值化图像d,即直线所在点像素值为1,背景点为0;
步骤2、利用预先定义的向量右乘二值图像d,转换为虚拟均匀线性阵列接收的单快拍远场信号,在入射角范围内先均匀划分少量网格,利用iaa对单快拍远场信号进行检测,得到功率谱最大的角度;
步骤3、在步骤2得到的角度附近根据倾斜角检测分辨率的要求划分网格,再次使用iaa方法对单快拍远场信号进行检测,根据已知直线的数量得到功率谱最大的角度的个数和角度值,从而求得所有直线的倾斜角;
步骤4、根据步骤3求得的倾斜角构造虚拟均匀线性阵列接收的单快拍近场信号,在直线偏移量范围内划分少量网格,利用iaa对单快拍近场信号进行检测,得到每个倾斜角下功率谱最大的偏移量,在每个倾斜角下刚刚检测到的偏移量附近,根据分辨率的要求划分网格,再次使用iaa方法对单快拍近场信号进行检测,得到每个倾斜角下功率谱最大的偏移量,从而求得每个倾斜角对应的偏移量。
本发明的特点还在于,
步骤1具体如下:
设二值化图像d大小为m×m,m为正整数,图像左上角的点定义为坐标原点,水平向右方向为x轴正方向,垂直向下为y轴正方向,二值化图像d中有d条直线,d为正整数,直线上的点坐标为(x,y),x,y均为整数,0≤x≤m-1,0≤y≤m-1,直线倾斜角为θ=θ1,θ2,...,θd,其中θ1,θ2,...,θd为[-90°,90°]范围内的实数,直线偏移量为
步骤2具体按照以下步骤实施:
步骤2.1、定义复数向量u1=[1,ejμ,ej2μ,,...,ej(m-1)μ]t,其中j为虚数单位,μ为预先设定的参数,
式中,
步骤2.2、使用iaa搜索倾斜角范围,假设d条直线的倾斜角范围均为[-90°,90°],首先将[-90°,90°]划分为n1个网格,n1由倾斜角检测分辨率决定,取[1,50]内的整数,则第v1个网格上的角度取值表示如下,其中v1=1,2,...,n1:
则基于上述公式构造的角度集为
z=a1s1+n1(4)
式中,
步骤2.3、设置迭代次数为l,l为10~20之间的整数,利用下式对
同时令w1=1;
步骤2.4、根据下式计算
然后根据下式计算p1(w1-1)
式中,
再根据下式计算r1(w1-1)
最后根据下式计算
步骤2.5、令w1=w1+1,如果w1≤l,则转到步骤2.4;否则根据式(6)计算
步骤3具体按照以下步骤实施:
步骤3.1、第二次使用iaa搜索精确的角度值,基于所述步骤2.5搜索到的角度集
则基于上述公式构造的角度集为:
令
信号z在角度集
z=a2s2+n1(11)
式中,
步骤3.2、利用下式对
同时令w2=1;
步骤3.3、根据下式计算
然后根据下式计算p2(w2-1):
式中,
为以
再根据下式计算r2(w2-1):
最后根据下式计算
步骤3.4、令w2=w2+1,如果w2≤l,则转到步骤3.3;否则根据式(13)计算
步骤4具体按照以下步骤实施:
步骤4.1、预先设定参数μ1,
式中,d(x,y)为二值图像d中(x,y)坐标点的像素值;
则
式中,
步骤4.2、第三次使用iaa搜索偏移量范围,假设每一个
则基于上述公式构造的每一个倾斜角
定义b=[b1,b2,...,bd],则r写为
r=bs3+n2(21)
式中,
步骤4.3、利用下式对
同时令w3=1;
步骤4.4、根据下式计算
然后根据下式计算p3(w3-1):
式中,
再根据下式计算r3(w3-1);
r3(w3-1)=bp3(w3-1)bh(25)
最后根据下式计算
步骤4.5、令w3=w3+1,如果w3≤l,则转到步骤4.4;否则根据式(23)计算
步骤4.6、第四次使用iaa搜索偏移量精确值,对步骤4.5搜索到的偏移量
则基于上述公式构造的
r=b's4+n2(28)
式中,
步骤4.7、利用下式对
同时令w4=1;
步骤4.8、根据下式计算p″iv4(w4-1)
p″iv4(w4-1)=|s″iv4(w4-1)|2(30)
然后根据下式计算p4(w4-1)
式中,
再根据下式计算r4(w4-1)
r4(w4-1)=b'p4(w4-1)b'h(32)
最后根据下式计算
步骤4.9、令v4=v4+1,如果v4≤l,则转到步骤4.8;否则根据式(30)计算p″iv4(w4-1),搜索
本发明的有益效果是,基于自适应划分网格的iaa直线检测方法,首先将图像传感器拍摄的图像进行图像分割和边缘提取得到仅含直线的二值化图像;然后利用预先定义的向量右乘二值图像,转换为虚拟均匀线性阵列接收单快拍远场信号,在入射角范围内先均匀划分少量网格,利用iaa对单快拍远场信号进行检测,得到功率谱最大的角度,再在此角度附近根据倾斜角分辨率的要求划分网格,再次使用iaa方法对单快拍远场信号进行检测,根据已知直线的数量得到功率谱最大的角度的个数和角度值,从而求得所有直线的角度;再根据求得角度构造虚拟均匀线性阵列接收单快拍近场信号,在直线偏移量范围内划分少量网格,利用iaa对单快拍近场信号进行检测,得到每个角度下功率谱最大的偏移量,在每个角度下偏移量附近根据分辨率的要求划分网格,再次使用iaa方法对单快拍近场信号进行检测,根据每个角度下的直线数量得到功率谱最大的偏移量的个数和偏移量,从而求得每个角度下所有直线的偏移量,在保持算法检测分辨率不变的前提下,大大降低了划分网格的数量,从而提高了算法的实时性。
附图说明
图1是本发明基于自适应划分网格的iaa直线检测方法图像中一条直线模型的示意图;
图2是本发明基于自适应划分网格的iaa直线检测方法仅包含一条直线的图像;
图3是本发明基于自适应划分网格的iaa直线检测方法包含两条直线的图像。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明所采用的技术方案是,基于自适应划分网格的iaa直线检测方法,具体按照以下步骤实施:
步骤1、将图像传感器拍摄的图像进行图像分割和边缘提取得到仅含直线的二值化图像d,即直线所在点像素值为1,背景点为0,具体如下:
设二值化图像d大小为m×m,m为正整数,如图1所示,图像左上角的点定义为坐标原点,水平向右方向为x轴正方向,垂直向下为y轴正方向,二值化图像d中有d条直线,d为正整数,直线上的点坐标为(x,y),x,y均为整数,0≤x≤m-1,0≤y≤m-1,直线倾斜角为θ=θ1,θ2,...,θd,其中θ1,θ2,...,θd为[-90°,90°]范围内的实数,直线偏移量为
步骤2、利用预先定义的向量右乘二值图像d,转换为虚拟均匀线性阵列接收的单快拍远场信号,在入射角范围内先均匀划分少量网格,利用iaa对单快拍远场信号进行检测,得到功率谱最大的角度,具体按照以下步骤实施:
步骤2.1、定义复数向量u1=[1,ejμ,ej2μ,,...,ej(m-1)μ]t,其中j为虚数单位,μ为预先设定的参数,
式中,
步骤2.2、使用iaa搜索倾斜角范围,假设d条直线的倾斜角范围均为[-90°,90°],首先将[-90°,90°]划分为n1个网格,n1由倾斜角检测分辨率决定,取[1,50]内的整数,则第v1个网格上的角度取值表示如下,其中v1=1,2,...,n1:
则基于上述公式构造的角度集为
z=a1s1+n1(4)
式中,
步骤2.3、设置迭代次数为l,l为10~20之间的整数,利用下式对
同时令w1=1;
步骤2.4、根据下式计算
然后根据下式计算p1(w1-1)
式中,
再根据下式计算r1(w1-1)
最后根据下式计算
步骤2.5、令w1=w1+1,如果w1≤l,则转到步骤2.4;否则根据式(6)计算
步骤3、在步骤2得到的角度附近根据分辨率的精度要求划分网格,再次使用iaa方法对单快拍远场信号进行检测,根据已知直线的数量得到功率谱最大的角度的个数和角度值,从而求得所有直线的倾斜角,具体按照以下步骤实施:
步骤3.1、第二次使用iaa搜索精确的角度值,基于所述步骤2.5搜索到的角度集
则基于上述公式构造的角度集为:
令
信号z在角度集
z=a2s2+n1(11)
式中,
步骤3.2、利用下式对
同时令w2=1;
步骤3.3、根据下式计算
然后根据下式计算p2(w2-1):
式中,
为以
再根据下式计算r2(w2-1):
最后根据下式计算
步骤3.4、令w2=w2+1,如果w2≤l,则转到步骤3.3;否则根据式(13)计算
步骤4、根据步骤3求得的倾斜角构造虚拟均匀线性阵列接收的单快拍近场信号,在直线偏移量范围内划分少量网格,利用iaa对单快拍近场信号进行检测,得到每个倾斜角下功率谱最大的偏移量,在每个倾斜角下刚刚检测到的偏移量附近,根据分辨率的精度要求划分网格,再次使用iaa方法对单快拍近场信号进行检测,得到每个倾斜角下功率谱最大的偏移量,从而求得每个倾斜角对应的偏移量,具体按照以下步骤实施:
步骤4.1、预先设定参数μ1,
式中,d(x,y)为二值图像d中(x,y)坐标点的像素值;
则
式中,
步骤4.2、第三次使用iaa搜索偏移量范围,假设每一个
则基于上述公式构造的每一个倾斜角
定义b=[b1,b2,...,bd],则r写为
r=bs3+n2(21)
式中,
步骤4.3、利用下式对
同时令w3=1;
步骤4.4、根据下式计算
然后根据下式计算p3(w3-1):
式中,
再根据下式计算r3(w3-1);
r3(w3-1)=bp3(w3-1)bh(25)
最后根据下式计算
步骤4.5、令w3=w3+1,如果w3≤l,则转到步骤4.4;否则根据式(23)计算
步骤4.6、第四次使用iaa搜索偏移量精确值,对步骤4.5搜索到的偏移量
则基于上述公式构造的
r=b's4+n2(28)
式中,
步骤4.7、利用下式对
同时令w4=1;
步骤4.8、根据下式计算p″iv4(w4-1)
p″iv4(w4-1)=|s″iv4(w4-1)|2(30)
然后根据下式计算p4(w4-1)
式中,
再根据下式计算r4(w4-1)
r4(w4-1)=b'p4(w4-1)b'h(32)
最后根据下式计算
步骤4.9、令v4=v4+1,如果v4≤l,则转到步骤4.8;否则根据式(30)计算p″iv4(w4-1),搜索
实施例1
利用本发明对只包含1条直线的图像进行检测,图像如图2所示,图像大小为256×256,即m=256,直线的倾斜角θ=18°,偏移量
首先,设置搜索倾斜角θ的相关初值:d=1,μ=0.6,第一次倾斜角网格数n1=19,pth为最大峰值的1/3,l=12,δθ=10°,第二次倾斜角网格数量为n2=21,倾斜角检测分辨率达到1°;
其次,设置搜索偏移量
表1为本发明与改进前的iaa的检测结果,iaa的角度设定分辨率和偏移量设定分辨率与本发明相同,倾斜角为1°,偏移量为1像素点,角度和偏移量搜索范围与本发明均相同,运行环境也与本发明相同。由表1的结果可以看出来,在检测单条直线时,本发明在保持iaa检测直线分辨率不变的前提下,大大提高了运行速度,运行速度提高达83.31%。
表1本发明与改进前的iaa对单条直线的检测结果
实施例2
利用本发明对只包含2条直线的图进行检测,图像如图3所示,图像大小为256×256,即m=256,直线1的倾斜角θ1=36°,偏移量
首先,设置搜索倾斜角θ的相关初值:d=2,μ=0.6,第一次倾斜角网格数n1=19,pth为最大峰值的1/3,l=12,δθ=10°,第二次倾斜角网格数量为n2=21,倾斜角检测分辨率达到1°;
其次,设置搜索偏移量
表2为本发明与改进前的iaa的检测结果,iaa的角度设定分辨率和偏移量设定分辨率与本发明相同,倾斜角为1°,偏移量为1像素点,角度和偏移量搜索范围与本发明均相同,运行环境也与本发明相同。由表1的结果可以看出来,在检测单条直线时,本发明在保持iaa检测直线分辨率不变的前提下,大大提高了运行速度,运行速度提高达79.30%。
表2本发明与改进前的iaa对多条直线的检测结果