发明名称 一种基于canny的自适应阈值的边缘检测算法
摘要 本发明提出一种基于canny的自适应阈值的边缘检测算法,首先对图像进行高斯平滑,计算相应的梯度,进行梯度图的极大值抑制;然后根据检测的梯度大小,计算出梯度图的统计直方图,再根据直方图信息表达梯度背景,从而计算得到梯度图的高低阈值,得到强边缘图和弱边缘图;最后以强边缘图的边缘点为中心点,比较领域边缘点和弱边缘图中相应位置的边缘信息,进行强弱边缘的连接。与传统的采用设定强边缘所占比例为定值的方法和类间最大方差法计算得到高阈值,再乘以固定比例而得到低阈值的方法相比,本发明在保持原有canny方法较低复杂度和较高边缘质量的基础上,进一步提高了边缘的连续性和准确性,更适合主轮廓的提取,为后续用于高精度目标检测和目标分割提供了基础。
申请公布号 CN104700421A 申请公布日期 2015.06.10
申请号 CN201510138294.9 申请日期 2015.03.27
申请人 中国科学院光电技术研究所 发明人 刘慧勤;蔡敬菊
分类号 G06T7/00(2006.01)I 主分类号 G06T7/00(2006.01)I
代理机构 代理人
主权项 一种基于canny的自适应阈值的边缘检测算法,其特征在于,包括如下步骤:步骤一、原始灰度图像高斯滤波:选用一维高斯函数G(x)构造滤波器,分别按行和列对原始图像f(x,y)进行卷积操作,得到平滑图像I(x,y):<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>G</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mi>exp</mi><mrow><mo>(</mo><mo>-</mo><msup><mi>x</mi><mn>2</mn></msup><mo>/</mo><msup><mrow><mn>2</mn><mi>&sigma;</mi></mrow><mn>2</mn></msup><mo>)</mo></mrow></mrow><msup><mrow><mn>2</mn><mi>&pi;&sigma;</mi></mrow><mn>2</mn></msup></mfrac><mo>,</mo></mrow>]]></math><img file="FDA0000689223140000011.GIF" wi="477" he="139" /></maths><maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>G</mi><mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><mi>exp</mi><mrow><mo>(</mo><msup><mrow><mo>-</mo><mi>y</mi></mrow><mn>2</mn></msup><mo>/</mo><msup><mrow><mn>2</mn><mi>&sigma;</mi></mrow><mn>2</mn></msup><mo>)</mo></mrow></mrow><msup><mrow><mn>2</mn><mi>&pi;&sigma;</mi></mrow><mn>2</mn></msup></mfrac></mrow>]]></math><img file="FDA0000689223140000012.GIF" wi="430" he="129" /></maths>  (公式1)I(x,y)=[G(x)G(y)]*f(x,y)  (公式2)其中,σ是高斯函数的标准差,用来控制平滑程度;步骤二、梯度计算:计算梯度幅值和方向,梯度的计算通常采用求偏导数的方法,Canny算子采用2x2邻域一阶偏导数的有限差分计算平滑后的图像I(x,y)的梯度幅值Grad(x,y):<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>Grad</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><msqrt><msub><mi>I</mi><mi>x</mi></msub><msup><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msub><mi>I</mi><mi>y</mi></msub><msup><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mn>2</mn></msup></msqrt></mrow>]]></math><img file="FDA0000689223140000013.GIF" wi="644" he="96" /></maths>  (公式3)<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>Ori</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mi>arctan</mi><mrow><mo>(</mo><mfrac><mrow><msub><mi>I</mi><mi>y</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow><mrow><msub><mi>I</mi><mi>x</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow></mfrac><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000689223140000014.GIF" wi="500" he="137" /></maths>  (公式4)其中,I<sub>x</sub>(x,y)和I<sub>y</sub>(x,y)分别是原图像被滤波器沿行列作用的结果;步骤三、极大值抑制:用3x3窗口在领域对Grad(x,y)的元素沿梯度方向进行梯度幅值的比较,对于每个点,将邻域中心元素Grad(x,y)与沿梯度方向的两个梯度幅值结果比较,如果Grad(x,y)的值小于梯度方向上的两个邻域,则将Grad(x,y)对应的边缘标志位赋0值;步骤四、自适应高低阈值计算:对经过步骤三的梯度图进行梯度统计,绘制梯度直方图,根据直方图信息,将直方图峰值对应的梯度值和以该梯度值为均值计算得到的方差,作为梯度背景的表达形式,得到高阈值Th;再从边缘点中除去高于高阈值的边缘点,采用相同的方法,计算得到低阈值Tl,高阈值计算式如下:Th=G<sub>peark</sub>+δ  (公式5)<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>&delta;</mi><mo>=</mo><msup><mrow><mo>(</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mi>N</mi></munderover><msup><mrow><mo>(</mo><msub><mi>G</mi><mi>i</mi></msub><mo>-</mo><msub><mi>G</mi><mi>peark</mi></msub><mo>)</mo></mrow><mi>n</mi></msup><mo>/</mo><mi>N</mi><mo>)</mo></mrow><mrow><mn>1</mn><mo>/</mo><mi>n</mi></mrow></msup></mrow>]]></math><img file="FDA0000689223140000021.GIF" wi="528" he="140" /></maths>  (公式6)低阈值计算式如下:Tl=G<sub>peark</sub>+δ'  (公式7)<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><msup><mi>&delta;</mi><mo>'</mo></msup><mo>=</mo><msup><mrow><mo>(</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><msup><mi>N</mi><mo>'</mo></msup></munderover><msup><mrow><mo>(</mo><msub><mi>G</mi><mi>i</mi></msub><mo>-</mo><msub><mi>G</mi><mi>peark</mi></msub><mo>)</mo></mrow><mi>n</mi></msup><mo>/</mo><msup><mi>N</mi><mo>'</mo></msup><mo>)</mo></mrow><mrow><mn>1</mn><mo>/</mo><mi>n</mi></mrow></msup></mrow>]]></math><img file="FDA0000689223140000022.GIF" wi="586" he="151" /></maths>  (公式8)其中,n取2或者3,n是关系整幅图像中提,取主轮廓的程度G<sub>peark</sub>为直方图峰值对应的梯度值;N或N’是相应范围内的像素点总个数;步骤五、强弱边缘连接:用高阈值Th和低阈值Tl对经过步骤三的梯度图进行处理,将梯度小于阈值的像素灰度赋值为0,分别分割得到两个阈值边缘图像:强边缘图H和弱边缘图L,在强边缘图H中连接边缘轮廓,连接至端点处时,在弱边缘图L中寻找领域相连的弱边缘点,填补图像H的边缘空隙,保证边缘的连续性和准确性。
地址 610209 四川省成都市双流350信箱
您可能感兴趣的专利