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

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

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

}

}

intnHist[1024];

intnEdgeNum;//可能边界数

intnMaxMag=0;//最大梯度数

intnHighCount;

2)构造灰度图的统计直方图,根据上文梯度幅的计算公式可知,最大的梯度幅为:

for(i=0;i<1024;i)

nHist[i]=0;

for(i=0;i<nHeight;i)

{

for(j=0;j<nWidth;j)

{

if(N[i*nWidthj]==128)

nHist[M[i*nWidthj]];

}

}

3)获取最大梯度幅及潜在边缘点个数

nEdgeNum=nHist[0];

nMaxMag=0;//获取最大的梯度

for(i=1;i<1024;i)//统计经过“非最大抑制”后有多少像素

{

if(nHist[i]!=0)//梯度为0的点是不可能为边界点的

{

nMaxMag=i;

}

nEdgeNum=nHist[i];//经过non-maximumsuppression后有多少像素

}

4)计算两个阈

doubledRatHigh=0.79;

doubledThrHigh;

doubledThrLow;

doubledRatLow=0.5;

nHighCount=(int)(dRatHigh*nEdgeNum0.5);

j=1;

nEdgeNum=nHist[1];

while((j<(nMaxMag-1))&&(nEdgeNum<nHighCount))

{

j;

nEdgeNum=nHist[j];

}

dThrHigh=j;//高阈

dThrLow=(int)((dThrHigh)*dRatLow0.5);//低阈

这段代码的意思是,按照灰度从低到高的顺序,选取前79%个灰度中的最大的灰度为高阈,低阈大约为高阈的一半。这是根据经验数据的来的,至于更好地参数选取方法,作者后面会另文研究。

5)进行边缘检测

SIZEsz;

sz.cx=nWidth;

sz.cy=nHeight;

for(i=0;i<nHeight;i)

{

for(j=0;j<nWidth;j)

{

if((N[i*nWidthj]==128)&&(M[i*nWidthj]>=dThrHigh))

{

N[i*nWidthj]=255;

TraceEdge(i,j,dThrLow,N,M,sz);

}

}

}

以上代码在非极大抑制产生的二灰度矩阵的潜在点中按照高阈寻找边缘,并以所找到的点为中心寻找邻域内满足低阈的点,从而形成一个闭合的轮廓。然后对于不满足条件的点,可用如下代码直接删除掉。

//将还没有设置为边界的点设置为非边界点

for(i=0;i<nHeight;i)

{

for(j=0;j<nWidth;j)

{

if(N[i*nWidthj]!=255)


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

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

    • 宇文毓
      宇文毓

      我本人也喝过很多黑芝麻糊

    • 妃之
      妃之

      人家根本不在乎你反不反

      • 李询
        李询

        首先要热爱自己的祖国

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