工程科学与技术   2017, Vol. 49 Issue (4): 97-103
平行算子及其在图像平行结构检测中的应用
贾利琴, 刘红敏, 王志衡     
河南理工大学 计算机科学与技术学院,河南 焦作 454000
基金项目: 国家自然科学基金资助项目(61572173;61472119;61472373;61401150);河南省高校科技创新人才计划资助项目(13HASTIT039);河南理工大学创新型科研团队项目资助(T2014-3)
摘要: 平行直线以及具有平行结构的多边形在图像中的体现非常丰富,以往的研究一般通过直线斜率相等判断两直线平行,对具有平行结构的多边形的检测需要预先给定信息或者适用范围狭窄,针对一般平行结构检测的研究一直较少。作者在充分研究平行结构特性的基础上,基于距离信息提出了平行算子的概念,实现了图像中平行结构的检测。首先,利用点线距离及点间距离的关系给出平行算子的定义;然后,获取图像中的有效像素,并基于平行算子得到所有平行点组;随后,根据方向信息合并平行点组,利用Hough变换实现图像中平行线的检测;最后,验证直线交点之间线段的存在性,根据存在线段的端点位置实现多边形检测。实验结果表明:本文定义的平行算子能够很好地检测到实际图像中的平行点组,在平行精度要求不高的条件下可以抵抗较大的噪声;基于平行算子的图像平行结构检测算法可以准确检测出图像中的平行直线及具有平行结构的多边形。本文提出的算法可准确检测出图像中的平行结构,具有普遍性。
关键词: 平行算子    平行结构    平行直线    具有平行结构的多边形    
Parallel Operator and Application to Parallel Structures Detection in Images
JIA Liqin, LIU Hongmin, WANG Zhiheng     
School of Computer Sci.and Technol.,Henan Polytechnic Univ.,Jiaozuo 454000,China
Abstract: Parallel lines and polygons consisting of parallel structure appear more in images.In the past,the parallelism of two straight lines was judged according to their line slope,and the detection of polygons consisting of parallel structure required prior information or specific polygons.The research on the detection of general parallel structures was little.After full study of characteristics of parallel structures,the definition of parallel operator based on distance information was proposed in this paper,which was used to realize the detection of parallel structures in images.Firstly,the definition of parallel operator was given by using the relation between the point-to-line distance and the point-to-point distance.Secondly,parallel point groups were obtained according to the defined parallel operator once the valid pixels were got in images.Thirdly,parallel point groups were merged based on the direction information,and parallel lines were then detected using Hough transform.Finally,the existence of the segments between intersections of lines was verified,and polygons were thus attained according to the endpoint location of existing segments.Experimental results showed the parallel operator defined in this paper could be used to detect the parallel point groups in the real image well,which could even more resist the large noise when the accuracy of parallelism was not high;the parallel structure detection algorithm based on parallel operator showed good detection of the parallel straight lines and polygons consisting of parallel structure in the image.The main work of this paper was:1)Proposed the definition of parallel operator according to the distance information between two points.2)Used the parallel operator to detect the parallel lines and polygons consisting of parallel structure in the image,which provided a new idea for related research.3)Gave an effective method to extract valid pixels which made the algorithm more robust to noise and reduced the computational load.The proposed algorithm could detect parallel structures accurately in the image and was universal in practical applications.
Key words: parallel operator    parallel structure    parallel lines    polygons consisting of parallel lines    

特征检测[1]是计算机视觉和模式识别的经典问题之一,在计算机辅助设计、自动化检测、物体定位等领域有着十分重要的应用。平行性是一种常见的几何特征,在现实场景中广泛存在,比如斑马线、天线、楼梯等多呈现出平行结构;交通标识牌、建筑物、家居装饰等由于观察角度的原因其整体形状往往呈现出变形的效果,但局部的平行特性保持不变,表现为平行四边形或具有平行结构的多边形。

目前,针对图像平行结构检测的研究较少。直线平行性的判断最常用的思路是通过Hough变换得到直线,通过直线斜率相等判断两直线平行;Zheng等[2]使用马尔可夫模型和维特比解码实现表格与横格稿纸中的平行线检测;Lin等[3]对检测出的直线进行平移后计算误差,若误差小于某一阈值则认为直线平行。针对矩形和多边形检测的方法较多[415]。广义Hough变换[4]理论上可用于多边形检测,但由于参数超过2维带来的时间消耗和存储空间的急剧增大使得实际工作中几乎不采用该方法;加窗Hough变换[5]通过判断Hough变换后的 $\theta $ 参数相等确定一对平行边,文献中的方法只适用于检测矩形,不适用于检测具有平行结构的任意多边形;Barnes等[68]提出的方法首先获取图像边缘,然后依据正多边形的几何特性,利用后验概率定义正多边形的概率密度函数,通过计算正多边形边数和方向偏角来实现道路标识牌中正多边形的检测,仅适用于正多边形检测;Liu等[9]提出了基于MRF(Markov random field)模型的方法,该方法首先基于全局背景信息从边缘图中提取线段并且合并邻近的平行线段,然后通过这些线段产生的MRF模型标记出矩形的边界线段,可检测出彩色图像中的矩形;Liu等[10]依据三角形、正多边形和圆具有唯一内切圆这一几何特性,统计像素点到边缘点方向线的距离分布,由此计算每个像素的形状能量,获取内切圆的圆心和半径值,再由获得的形状轮廓点信息实现不同形状的检测。文献[1113]实现了任意多边形的检测,另外还有一些其他的多边形检测方法[1415]。上述方法可实现具有平行结构的多边形的检测(如矩形、正多边形),但是,或利用多边形自身的结构特点[58],或需要预先给定多边形信息[1112],或仅适用于特定的多边形检测[56,10,1415],或通过线段组合实现任意多边形的检测[13],未利用组成多边形的线段间的平行特性,也不适用于图像中平行线的检测。

作者在充分研究平行结构特性的基础上,基于距离信息提出了平行算子的概念;在此基础上,对于图像中的任一边缘点,计算其平行点组,统计某一方向平行点组的数量,若大于阈值则利用Hough变换实现图像中平行直线的检测;随后,验证非平行直线2个交点间线段的存在性,并根据线段2个端点的位置,实现具有平行结构的多边形的检测。本文所提方法利用图像中平行点的信息,由点获得线,由线组合为多边形。相较于现有方法,本文方法更具有普遍性,适用范围更加广泛。

1 平行算子

对于图像中任一点 ${P_i}({x_i},{y_i})$ ,该点梯度为grad(Pi)= $[{g_{ix}},{g_{iy}}]$ ,其中, ${g_{ix}}$ ${g_{iy}}$ 分别表示该点在xy方向上的梯度分量。记点Pi的方向线[16]为通过Pi且垂直于 ${\rm{grad}}({P_i})$ 的直线:

${l_i}{\text{:}}[{g_{ix}},{g_{iy}}, - ({g_{ix}}{x_i} + {g_{iy}}{y_i})]$ (1)

其中, ${g_{ix}}x + {g_{iy}}y - ({g_{ix}}{x_i} + {g_{iy}}{y_i}) = 0$ 图1为三角形和矩形图像的边缘像素点(其梯度方向均垂直于该像素所在边)AD与其方向线lAlD,显然,图像轮廓点的方向线同该点所在边的方向一致。

图1 方向线 Fig. 1 Orientation line

对于任意两点 ${P_1}({x_1},{y_1})$ ${P_2}({x_2},{y_2})$ ,记两点间的距离为:

${d_{{P_1}{P_2}}} = \sqrt {{{({x_1} - {x_2})}^2} + {{({y_1} - {y_2})}^2}} $ (2)

P1到点P2方向线的距离定义为

${d_{{P_1}{l_{{P_2}}}}} = \left| {{a_2}{x_1} + {b_2}{y_1} + {c_2}} \right|/\sqrt {a_2^2 + b_2^2} $ (3)

其中, ${l_{{P_2}}}{\text{:}}[{g_{2x}},{g_{2y}}, - ({g_{2x}}{x_2} + {g_{2y}}{y_2})]$ ,则 ${a_2} = {g_{2x}}$ ${b_2} = {g_{2y}}$ ${c_2} = - {g_{2x}}{x_2} - {g_{2y}}{y_2}$

同理,点P2到点P1方向线的距离为:

${d_{{P_2}{l_{{P_1}}}}} = \left| {{a_1}{x_2} + {b_1}{y_2} + {c_1}} \right|/\sqrt {a_1^2 + b_1^2} $ (4)

其中, ${a_1} = {g_{1x}}$ ${b_1} = {g_{1y}}$ ${c_1} = - {g_{1x}}{x_1} - {g_{1y}}{y_1}$

通常 ${d_{{P_1}{l_{{P_2}}}}} \ne {d_{{P_2}{l_{{P_1}}}}}$ ,如图2P1P2点所示;当两点分别位于两条平行线上,如图2中点P3P4所示,则 ${d_{{P_3}{l_{{P_4}}}}} = {d_{{P_4}{l_{{P_3}}}}}$ ${d_{{P_3}{l_{{P_4}}}}} \ne {d_{{P_4}{P_3}}}$ ;对于图2中点P4P5 ${d_{{P_4}{l_{{P_5}}}}} = {d_{{P_5}{l_{{P_4}}}}} = {d_{{P_4}{P_5}}}$ ,则定义点P4P5为一组平行点对。

图2 点到点距离与点到线距离 Fig. 2 Distance between the point to the point and distance from the point to the line

对于任意两点PiPj,点PjPi的平行算子定义为:

$E = {{\rm{e}}^{ - |{d_{{P_i}{l_{{P_j}}}}} + {d_{{P_j}{l_{{P_i}}}}} - 2 \cdot {d_{{P_i}{P_j}}}|}}$ (5)

E=1时,表示 ${d_{{P_i}{l_{{P_j}}}}} = $ ${d_{{P_j}{l_{{P_i}}}}} = {d_{{P_i}{P_j}}}$ ,则点PjPi平行;E越小,3个距离之间的差异越大,PjPi的平行性越差。

2 平行结构检测 2.1 平行点组检测

假定点Pi位于直线Li上,直线Li为1组平行线 $\varGamma = \left\{ {{L_1},{L_2}, \cdots ,{L_i}, \cdots ,{L_\Lambda }} \right\}$ 中的1条,其中 $\varLambda $ 为平行线的数量,且 $\varLambda \ge 2$ 。对于平行线组 $\varGamma $ 中的任一直线 ${L_j}(i \ne j)$ ,其上均存在一点 $P_i'$ 与点Pi为平行点对。平行线组 $\varGamma $ 中与点Pi为平行点对的点的集合称为点Pi的平行点组,记为 ${G_{{P_i}}} = [{P_i},P_{i1}',P_{i2}', \cdots ,P_{i(\varLambda - 1)}']$ 。图像中平行点组的检测步骤如下:

1)确定有效边缘像素

对于图像I,首先利用Canny算子进行边缘检测,其边缘点集合为V ${P_i} \in {{V}}$ 。考虑集合V内以Pi为中心、R(实验中R取固定值3)为半径的邻域 $\varOmega $ 中的任意一个边缘点P,若 ${d_{P{l_{{P_i}}}}} < {T_d}$ ,则点P为点Pi邻域 $\varOmega $ 内的支撑像素;反之,则不是。Td取值越大,则确定的支撑像素越多,后续错误有效边缘像素被确定的概率增大,易引入干扰边缘点;Td取值越小,则确定的支撑像素越少,真实有效边缘像素被排除的概率增加,导致有效边缘像素不足。文中Td一般取2,即与Pi方向线距离小于2的点被判断为支撑像素。

计算 $\varOmega $ 内所有支撑像素(包括点Pi)梯度幅值之和 ${M_{\rm spt}}$ ,若 ${M_{\rm spt}} > {T_1}$ ,则点Pi为有效像素;反之,则不是。 ${T_1} = n \cdot T$ 为自适应阈值,主要由图像I的梯度确定,其中 $n = 2 \cdot R - 2$ (实验中R=3,则n=4), $T = mean(Mag(I)) + {k_1} \cdot std(Mag(I))$ ,其中 $Mag( \cdot )$ 表示梯度幅值, $mean( \cdot )$ $std( \cdot )$ 分别表示计算均值和标准差,k1为调节系数,一般取 ${k_1} = 1 \text{~} 1.5$ T1越大,真实边缘像素被排除的概率增大,不利于后续直线检测;T1越小,弱边缘和孤立像素被确定为有效像素的概率增大,导致后续平行点组检测计算量增大。以T1为阈值可找出位于显著边缘上的像素点,同时剔除孤立的边缘点,有效去除噪声,降低计算量。遍历集合V中的边缘点,获得图像I的有效像素集合 ${V'}$ ,如图4(c)所示。

图3(a)为图像的部分边缘,边缘点处使用不同的灰度表示该点的梯度幅值。对于整幅图像,假定计算后T=M。点P1P2的梯度幅值分别为1.5 M和0.8 MP3-P6的梯度幅值均等于M。指定R=3,则T1=4M。对于点P1-P6,统计其邻域内的支撑像素,获得其梯度幅值之和分别为1.5 M、3.2 M、3 M、4 M、7 M和5 M,则边缘点P5P6为图像的有效像素。图3(b)为对图3(a)所确定的有效像素结果,由图3可以看出,原始边缘中较弱的边缘(如点P2所在边缘)或孤立的边缘点(如点P1P3)被剔除,显著边缘被保留(如点P5P6所在边缘,点P4因不满足 ${M_{spt}} > {T_1}$ 故被剔除)。

图3 确定有效像素 Fig. 3 Determine valid pixels

2)计算有效像素的平行点组

对于 ${V'}$ 中的任意点pi,根据式(5)计算 ${V'}$ 中所有有效像素对Pi的平行算子,获得与图像I尺寸相同的Ei。其中,

${E_i}(r,c) = \left\{ \!\!\!\!\!{\begin{array}{*{20}{c}}{{{\rm{e}}^{ - |{d_{{P_i}{l_{{P_j}}}}} + {d_{{P_j}{l_{{P_i}}}}} - 2 \cdot {d_{{P_i}{P_j}}}|}},{P_j}{\rm{ = }}\left( {r,c} \right),{P_j} \in V'\text{且}{P_j} \ne {P_i};}\\[3pt]{0,\qquad \text{其他}}\qquad \qquad \quad\end{array}} \right.$ (6)

Ei中寻找局部极大值 $ Localmax({{E}_i})$ ,当Localmax $({{E}_i}) > {T_2}$ 时,认为极大值对应的点为点Pi的平行点,获得点pi的平行点组 ${{G}_{{P_i}}} = [{P_i},P_{i1}',P_{i2}', \cdots ,P_{iK}']$ K $K \ge 1$ )表示与Pi平行的点的个数。T2值越大表示两点平行性越好,经过实验计算,T2取0.95可使得到的平行点与理想平行点之间的误差小于1个像素,因此,实验中T2=0.95。

3)获取图像中的平行点组集合

${{G}_{{P_i}}}$ 中的点从 ${V'}$ 中删除,并重复步骤2),直至获得图像I中所有的平行点组集合 ${{V}_p} = [{{G}_{{P_1}}}{\rm{ }}{{G}_{{P_2}}}{\rm{ }} \cdots {\rm{ }}{{G}_{{P_{\prod }}}}]$ $ \prod $ 表示图像I中寻找到的平行点组个数),如图4(d)

2.2 平行直线检测

对于图像I,利用获得的平行点组集合 ${{V}_p} = $ $[{{G}_{{P_1}}},{\rm{ }}{{G}_{{P_2}}}{\rm{, }} \cdots {\rm{, }}{{G}_{{P_{\prod}}}}]$ 实现平行线的检测,其步骤如下:

1)对于Vp中的任一点组 ${G_{{P_i}}}(1 \le i \le{\prod})$ ,记该点组梯度向量角为 ${\theta _i}$ ${\theta _i}$ 为该组平行点中第一个点的梯度向量角)。统计Vp中各平行点组的梯度向量角,获得其直方图 ${{H}_\theta } = \left[ {{a_{{\theta _1}}},{a_{{\theta _2}}}, \cdots ,{a_{{\theta _{\prod}}}}} \right]$ ,如图4(e)所示,其中, ${a_{{\theta _i}}}$ 表示梯度向量角为 ${\theta _i}$ 的平行点组的个数。

2)若 ${a_{{\theta _i}}} > {T_3}$ ${T_3} = mean({{H}_\theta }) + {k_3} \cdot std({{H}_\theta })$ ,其中 $mean({{H}_\theta })$ $std({{H}_\theta })$ 分别表示直方图 ${{H}_\theta }$ 的均值和标准差,k3为调节系数,则图像中存在梯度向量角为 ${\theta _i}$ 的一组平行线。T3值太大,会丢失正确的梯度向量角,导致平行线漏检;T3值太小,会导致冗余平行线组的检测。实验中一般取 ${k_3} = 0$ ~2,以合理控制T3值。从平行点组 ${{V}_p} = [{{G}_{{P_1}}}{\rm{ }}{{G}_{{P_2}}}{\rm{ }} \cdots {\rm{ }}{{G}_{{P_{\prod}}}}]$ 中提取梯度向量角在 $\left[ {{\theta _i} - 2,{\theta _i} + 2} \right]$ 范围内的点组,记为点集V1

3)对于点集V1,使用Hough变换,得到梯度向量角为 ${\theta _i}$ 的平行线组 ${\varGamma _{_{{\theta _i}}}} = \{ {l_{1{\theta _i}}},{l_2}_{{\theta _i}}, \cdots ,{l_{Q{\theta _i}}}\} $ ,该平行线组共有Q条直线。

4)重复步骤2)和3),检测出图像中具有不同梯度向量角的多组平行线 $\varPhi = \{ {\varGamma _{{\theta _1}}},{\varGamma _{{\theta _2}}}, \cdots ,{\varGamma _{{\theta _N}}}\} $ N为获取的平行线组的个数。图4(f)显示了图像I的所有平行线,不同颜色表示不同的平行线组。

2.3 具有平行结构的多边形检测

对于获取的直线集合 $\varPhi = \{ {\varGamma _{{\theta _1}}},{\varGamma _{{\theta _2}}}, \cdots ,{\varGamma _{{\theta _N}}}\} $ ,验证这些直线是否构成闭合的多边形(本算法不考虑一条边同时属于两个多边形的情况)。其步骤如下:

1)计算各直线的交点,并验证各交点确定的线段的存在性。基本思想为:若一条线段存在,则该线段附近应存在足够的边缘点。对于任意2个交点M1M2,考虑以线段M1M2为中心轴、宽度为3的矩形区域,记该矩形区域内图像有效像素个数为N1,线段M1M2的长度为 $Length$ ,若N1满足 ${N_1} \ge {T_4} \cdot Length$ ,则该线段存在。T4为阈值,经过实验统计,阈值T4取0.90~0.95可保证存在足够的边缘点。设定矩形区域宽度为3 的原因是考虑到图像点是离散的,线段扫过像素点的理论位置与实际边缘点位置可能存在误差。获取图像中有效线段集合 ${S} = \{ {{S}_1},{{S}_2}, \cdots ,{{S}_i}, \cdots {{S}_W}\} $ ,其中 ${{S}_i} = \left( {{P_{i1}},{P_{i2}}} \right)$ 表示S中的第i条线段, ${P_{i1}}$ ${P_{i2}}$ 分别表示线段Si的起点和终点。

2)在集合S中检测一个封闭多边形 $Polygon$ 。其步骤如下:

$Polygon = \left\{ {{\mathit{\boldsymbol{S}}_{P1}}} \right\}$ ,其中, ${\mathit{\boldsymbol{S}}_{P1}}$ 是多边形 $Polygon$ 的第一条线段。

②对于集合S中的 ${\mathit{\boldsymbol{S}}_i}(i \ge 1)$ ,若 ${P_{i1}} = {P_{(i - 1)2}}$ 或者 ${P_{i2}} = {P_{(i - 1)2}}$ ,则 ${\mathit{\boldsymbol{S}}_{Pi}} = {\mathit{\boldsymbol{S}}_i}$ ${\mathit{\boldsymbol{S}}_{Pi}}$ 表示 $Polygon$ 的第i条线段, ${P_{(i - 1)2}}$ 表示第 $i - 1$ 条线段 ${\mathit{\boldsymbol{S}}_{P(i - 1)}}$ 没有与之前线段相连的端点。

③判断 $Polygon$ 中的线段是否构成多边形。 $Polygon = \left\{ {{\mathit{\boldsymbol{S}}_{P1}}, \cdots ,{\mathit{\boldsymbol{S}}_{Pi}}} \right\}$ ,当 $i \ge 3$ 时,判断 $Polygon$ 是否闭合。若 ${P_{i2}}$ ${P_{i2}}$ 表示第i条线段 ${\mathit{\boldsymbol{S}}_{Pi}}$ 没有与之前线段相连的端点)与P11P11表示第一条线段 ${\mathit{\boldsymbol{S}}_{P1}}$ 的起点)相等,则 $Polygon$ 是一个封闭图形,检测结束,从S中删除组成 $Polygon$ 的线段;若不相等,则在剩余的线段中重复步骤②和③,继续寻找 $Polygon$ 的其他组成线段。

④若在 $Polygon$ 中,所有的线段经过验证之后无法闭合,则这些线段不构成封闭多边形,从S中删除这些线段。

3)重复步骤2),在集合S中确定所有封闭多边形 $\{ {Polygon_1}, {Polygon_2}, \cdots,{Polygon_O}\} $ ,如图4(g) 所示。

本文提出的图像中平行结构的检测算法流程如图4所示。首先获取边缘图中的有效像素,然后利用平行算子得到平行点组;接着统计平行点组的梯度方向,利用Hough变换得到平行直线;最后验证直线交点之间线段的存在性,将存在的线段组合为封闭多边形。

图4 平行结构检测算法流程图 Fig. 4 Flowchart of the proposed parallel structure detection algorithm

3 实验结果 3.1 模拟图像实验

图5以模拟图形为例研究了噪声影响下本文算法对图像平行结构的检测结果。第1行为添加高斯噪声结果,第2行为添加椒盐噪声结果, $\sigma $ 均为0.1。由实验结果可知,本文所提算法可以抵抗一定强度的噪声,这是由于计算过程中噪声边缘与真实图像边缘相比不易形成有效像素所致。如图5(c)所示,提取有效像素后,由噪声产生的边缘点被很好地滤除,图像本身的边缘信息被完整保留。

图5 不同噪声下平行结构检测结果 Fig. 5 Detection results of the parallel structures in the images with different noises

3.2 真实图像实验

图6为图像的平行点组检测结果。图6(d)中,菱形表示指定像素点,星号表示与指定像素点平行的点,不同的颜色代表不同的平行点组。图6(d)中白玉环的边缘非常理想,因此在平行精度为0.95的条件下检测结果非常好;斑马线图片中噪声比较大,影响梯度值的计算,在平行精度为0.95时由于两点之间的平行算子结果不满足要求而出现漏检。图6中显示了平行精度为0.94时的检测结果。可以看出,本文定义的平行算子能够很好地检测到实际图像中的平行点组,并且在平行精度要求不高的条件下可以抵抗较大的噪声。

图6 平行点组检测结果 Fig. 6 Detection results of parallel point groups

图7为本文算法对平行直线的检测结果。由图7可以看出,存在的水平、竖直和任意角度的平行线均被正确检出。

图7 平行直线检测结果 Fig. 7 Detection results of parallel lines

图8为本文算法对具有平行结构的多边形检测结果。图8(g)所示的银盘中的正八边形检测结果不够精确,这是由于图像本身光照原因使得右侧上下两条边产生两个边缘,经过平行算子提取平行点组,对每个方向只提取Hough变换峰值最大的两条直线导致。图8(i)中2个平行嵌套的三角形被正确检测。由可以看出,单个或多个具有平行结构的多边形(包括三角形)均被成功检测出来,因此本文算法具有很好的通用性。

图8 具有平行结构的多边形检测结果 Fig. 8 Detection results of polygons consisting of parallel lines

综合上述实验结果,本文提出的基于平行算子图像平行结构检测算法可以准确检测出图像中的平行直线及具有平行结构的多边形。

4 时间复杂度分析

对算法的时间复杂度进行分析。记图像边缘点个数为N。对于平行直线检测,假设图像中存在一组平行直线。确定有效像素的时间复杂度为 $O(N)$ ;记得到的有效像素个数为n1,对每个有效像素使用平行算子计算其平行点组,其时间复杂度为 $O({n_1})$ 。假设所有有效像素均存在平行点,则所有有效像素参与Hough变换,时间复杂度为 $O(\lambda {n_1})$ ,其中, $\lambda $ 表示[0,180°]上角度的量化数目,因此算法的时间复杂度为 $O(N + {n_1} + \lambda {n_1})$ ,其中, ${n_1} < N$ 。使用Hough变换对边缘点个数为N的图像进行直线检测,其时间复杂度为 $O(\lambda N)$ ,所提算法检测直线的时间复杂度较Hough变换有所降低。同时,可知,当 ${n_1} \ll N$ 时,算法的时间消耗主要用于确定图像中的有效像素,有效像素的提取消除了大量随机边缘点对直线检测的干扰,避免了Hough变换产生的直线断裂、直线拟合不够准确的问题,为后续准确的直线检测提供了保障。

对于具有平行结构的多边形检测,假设图像中存在一个m边形(m为2的倍数)。确定有效像素及平行点组的时间复杂度分别为 $O(N)$ $O({n_1})$ 。若所有的有效像素均存在平行点,平行点组的梯度向量角集中在m/2个峰值,每个峰值对应的像素点分别参与Hough变换,则该步骤的时间复杂度仍为 $O(\lambda {n_1})$ ;对于获取的m条直线,可产生 $m(m - 2)/2$ 个交点(考虑到每条边与其平行的边没有交点),两个交点确定一条线段,则判断线段有效性的时间复杂度为 $O({m^4})$ 。因此多边形检测的时间复杂度为 $O(N + {n_1} + \lambda {n_1} + {m^4})$ 。与平行直线检测相比,多边形检测时增加了线段有效性验证的时间消耗,但需注意到,实际应用中m取值一般小于10,因此本文所提算法效率较高。

5 结 论

利用平行点对间的距离特性,提出了平行算子概念,并将其用于图像中平行线及具有平行结构的多边形的检测。实验结果表明,本文算法能准确检测出图像中的平行结构,算法准确度高,具有较好的抗干扰能力。本文主要结论:

1)根据平行线上点对之间的距离关系,提出了平行算子的概念。

2)将平行算子应用于平行线和具有平行结构的多边形检测,为相关研究提供一种新思路。

3)提出一种有效像素提取方法,使算法具有较强的抗噪声能力,同时降低算法的计算量。

参考文献
[1]
Li Yali, Wang Shengjin, Tian Qi. A survey of recent advances in visual feature detection[J]. Neurocomputing, 2015, 149(Part B): 736-751.
[2]
Zheng Yefeng, Li Huiping, Doermann D. A parallel-line detection algorithm based on HMM decoding[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2005, 27(5): 777-792. DOI:10.1109/TPAMI.2005.89
[3]
Lin C S, Tzeng G A. An automatic optical inspection system for the detection of three parallel lines in solar panel end face[J]. Optik-International Journal for Light and Electron Optics, 2014, 125(2): 688-693. DOI:10.1016/j.ijleo.2013.07.036
[4]
Davies E R.Machine vision:Theory,algorithms,practicalities[M]3 ed.San Francisco:Elsevier,2005:387–410.
[5]
Jung C R,Schramm R.Rectangle detection based on a windowed Hough transform[C]//Proceedings of Brazilian Symposium on Computer Graphics and Image Processing.Curitiba:2004:113–120.
[6]
Barnes N, Loy G, Shaw D. The regular polygon detector[J]. Pattern Recognition, 2010, 43(3): 592-602. DOI:10.1016/j.patcog.2009.09.008
[7]
Barnes N,Loy G,Shaw D,et al.Regular polygon detection[C]//Proceedings of the 10th IEEE International Conference on Computer Vision.Berlin:IEEE,2005:778–785.
[8]
Barnes N,Loy G.Real-time regular polygonal sign detection [C]//Proceedings of the 5th International Conference on Field and Service Robotics:Berlin:IEEE,2005:55–66.
[9]
Liu Yangxing, Ikenaga T, Goto S. An MRF model-based approach to the detection of rectangular shape objects in color images[J]. Signal Processing, 2007, 87(11): 2649-2658. DOI:10.1016/j.sigpro.2007.04.018
[10]
Liu Hongmin, Wang Zhiheng. PLDD:Point-lines distance distribution for detection of arbitrary triangles,regular polygons and circles[J]. Journal of Visual Communication and Image Representation, 2014, 25(2): 273-284. DOI:10.1016/j.jvcir.2013.10.002
[11]
Laha A, Sen A, Sinha B P. Parallel algorithms for identifying convex and non-convex basis polygons in an image[J]. Parallel Computing, 2005, 31(3): 290-310.
[12]
Manay S,Paglierone D W.Matching flexible polygons to fields of corners extracted from images[C]// Processings of the 4th International Conferenc on Image Analysis and Recognition.Montreal:2007,4633:447–459.
[13]
Liu Hongmin, Wang Zhiheng, Deng Chao. Polygon detection based on meta-representation[J]. Acta Automatica Sinica, 2011, 37(9): 1050-1058. [刘红敏, 王志衡, 邓超. 基于基元表示的多边形检测方法[J]. 自动化学报, 2011, 37(9): 1050-1058.]
[14]
Croitoru A, Doytsher Y. Right-angle rooftop polygon extraction in regularized urban areas:cutting the corners[J]. The Photogrammetric Record, 2004, 19(108): 311-341. DOI:10.1111/phor.2004.19.issue-108
[15]
Gates J W,Haseyama M,Kitajima H.Real-time polygon extraction from complex images [C]//Proceding of the 2000 IEEE International Symposium on Circuits and Systems.Geneva:IEEE,2000:309–312.
[16]
Wang Zhiheng, Wu Fuchao, Wang Xuguang. Corner detection and sub-pixel localization based on local orientation distribution[J]. Journal of Software, 2008, 19(11): 2932-2942.