Canny算法源码

Canny算法源码

ID:31477049

大小:49.00 KB

页数:15页

时间:2019-01-11

Canny算法源码_第1页
Canny算法源码_第2页
Canny算法源码_第3页
Canny算法源码_第4页
Canny算法源码_第5页
资源描述:

《Canny算法源码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Canny算法源码/***************************************************************************函数名称:*Canny()**输入参数:*unsignedchar*pUnchImage-图象数据*intnWidth-图象数据宽度*intnHeight-图象数据高度*doublesigma-高斯滤波的标准方差*doubledRatioLow-低阈值和高阈值之间的比例*doubledRatioHigh-高阈值占图象象素总数的比例*unsignedchar*pUnchEdge-canny算子计算后的分割图*

2、*返回值:*无**说明:*canny分割算子,计算的结果保存在pUnchEdge中,逻辑1(255)表示该点为*边界点,逻辑0(0)表示该点为非边界点。该函数的参数sigma,dRatioLow*dRatioHigh,是需要指定的。这些参数会影响分割后边界点数目的多少**************************************************************************/voidCanny(unsignedchar*pUnchImage,intnWidth,intnHeight,doublesigma,doubledRatioLo

3、w,doubledRatioHigh,unsignedchar*pUnchEdge){//经过高斯滤波后的图象数据unsignedchar*pUnchSmooth;//指向x方向导数的指针int*pnGradX;//指向y方向导数的指针int*pnGradY;//梯度的幅度int*pnGradMag;pUnchSmooth=newunsignedchar[nWidth*nHeight];pnGradX=newint[nWidth*nHeight];pnGradY=newint[nWidth*nHeight];pnGradMag=newint[nWidth*nHeight];//

4、对原图象进行滤波GaussianSmooth(pUnchImage,nWidth,nHeight,sigma,pUnchSmooth);//计算方向导数DirGrad(pUnchSmooth,nWidth,nHeight,pnGradX,pnGradY);//计算梯度的幅度GradMagnitude(pnGradX,pnGradY,nWidth,nHeight,pnGradMag);//应用non-maximum抑制NonmaxSuppress(pnGradMag,pnGradX,pnGradY,nWidth,nHeight,pUnchEdge);//应用Hysteresis,

5、找到所有的边界Hysteresis(pnGradMag,nWidth,nHeight,dRatioLow,dRatioHigh,pUnchEdge);//释放内存deletepnGradX;pnGradX=NULL;deletepnGradY;pnGradY=NULL;deletepnGradMag;pnGradMag=NULL;deletepUnchSmooth;pUnchSmooth=NULL;}voidGaussianSmooth(unsignedchar*pUnchImg,intnWidth,intnHeight,doublesigma,unsignedchar*pUn

6、chSmthdImg){//循环控制变量inty;intx;inti;//高斯滤波器的数组长度intnWindowSize;//窗口长度的1/2intnHalfLen;//一维高斯数据滤波器double*pdKernel;//高斯系数与图象数据的点乘doubledDotMul;//高斯滤波系数的总和doubledWeightSum;//中间变量double*pdTmp;//分配内存pdTmp=newdouble[nWidth*nHeight];//产生一维高斯数据滤波器//MakeGauss(sigma,&dKernel,&nWindowSize);MakeGauss(sigm

7、a,&pdKernel,&nWindowSize);//MakeGauss返回窗口的长度,利用此变量计算窗口的半长nHalfLen=nWindowSize/2;//x方向进行滤波for(y=0;y=0&&(i+x)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。