b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

canny边缘检测实现例子_canny边缘检测 c语言_canny边缘检测优点(10)

电脑杂谈  发布时间:2017-02-22 21:16:25  来源:网络整理

{

N[i*nWidthj]=0;//设置为非边界点

}

}

}

其中TraceEdge函数为一个嵌套函数,用于在每个像素点的邻域内寻找满足条件的点。其实现代码如下:

voidTraceEdge(inty,intx,intnThrLow,LPBYTEpResult,int*pMag,SIZEsz)

{

//对8邻域像素进行查询

intxNum[8]={1,1,0,-1,-1,-1,0,1};

intyNum[8]={0,1,1,1,0,-1,-1,-1};

LONGyy,xx,k;

for(k=0;k<8;k)

{

yy=yyNum[k];

xx=xxNum[k];

if(pResult[yy*sz.cxxx]==128&&pMag[yy*sz.cxxx]>=nThrLow)

{

//该点设为边界点

pResult[yy*sz.cxxx]=255;

//以该点为中心再进行跟踪

TraceEdge(yy,xx,nThrLow,pResult,pMag,sz);

}

}

}

以上就从原理上实现了整个Canny算法。其检测效果如图4所示。注意:以上代码仅为作者理解所为,目的是验证本人对算法的理解,暂时没有考虑到代码的执行效率的问题。

对比图4和图5可以发现,作者自己实现的边缘检测效果没有OpenCV的好,具体体现在:1)丢失了一些真的边缘;2)增加了一些假的边缘。

经过对整个算法的来回检查,初步推断主要的问题可能在于在进行灰度矩阵梯度幅计算式所采用的模板算子性能不是太好,还有就是关于两个阈的选取方法。关于这两个方面的改进研究,后文阐述。

本文是过去一段时间,对图像边缘检测方法学习的总结。主要阐述了Canny算法的工作原理,实现过程,在此基础上基于VC6.0实现了该算法,并给出了效果图。最后,通过对比发现本文的实现方法虽然能够实现边缘检测,但效果还不是很理想,今后将在阈选取原则和梯度幅算子两个方面进行改进。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33926-10.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 丹泽尔华盛顿
      丹泽尔华盛顿

      中国不好战

    • 谷瑞红
      谷瑞红

      你知道美国在我周边煽动别国闹事

    • 克里斯蒂特林顿
      克里斯蒂特林顿

      美国的军事力量是强大

    热点图片
    拼命载入中...