opencv cvCanny算子以及与其他边缘检测算子的比较

边缘检测的各种微分算子比较(Sobel,Robert,Prewitt,Laplacian,Canny)

http://blog.sina.com.cn/s/blog_60a0e97e0101b595.html


###################################################

图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)

http://blog.csdn.net/xiaojiegege123456/article/details/7714863


##################################################3


/* Smoothes array (removes noise) */
CVAPI(void) cvSmooth( const CvArr* src, CvArr* dst,
                      int smoothtype CV_DEFAULT(CV_GAUSSIAN),
                      int size1 CV_DEFAULT(3),
                      int size2 CV_DEFAULT(0),
                      double sigma1 CV_DEFAULT(0),
                      double sigma2 CV_DEFAULT(0));

"平滑处理"也称“模糊处理”(blurring)

主要功能:减少图像上的噪声或者失真


/* Runs canny edge detector */
CVAPI(void)  cvCanny( const CvArr* image, CvArr* edges, double threshold1,
                      double threshold2, int  aperture_size CV_DEFAULT(3) );

image:输入图像(源图像)

edges:边缘检测图像(结果图像)

threshold1:低阈值 (上下限阈值比为2:1或3:1之间较好)

threshold2:高阈值


canny算子原理:首先在x和y方向求一阶倒数,然后组合为4个方向的导数。这些方向倒数达到局部最大值的点就是组成边缘的候选点

canny算子有两个阈值,如果一个像素的梯度大于上限阈值,则被认为是边缘像素,如果低于下限阈值,则被抛弃,如果介于二者之间,只有当其与高于上限阈值的像素连接时才会被接受。

note:cvCanny()函数需要输入一幅灰度图,输出图也一定是灰度图像


程序:进行平滑处理后的canny()算子检测图和未进行平滑处理的检测图

//cvCanny
void canny(void)
{
	IplImage *src=cvLoadImage("lena.jpg", CV_LOAD_IMAGE_GRAYSCALE);
	IplImage *dst_NoSmooth=cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
	IplImage *dst_Smooth=cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
	if (src == NULL || dst_NoSmooth == NULL || dst_Smooth == NULL)
		exit(0);

	cvCanny(src, dst_NoSmooth, 100, 150, 3);

	cvSmooth(src, src, CV_GAUSSIAN, 3, 3);//平滑图像处理-高斯模糊

	cvCanny(src, dst_Smooth, 100, 150, 3);

	cvNamedWindow("src");
	cvNamedWindow("dst_Smooth");
	cvNamedWindow("dst_NoSmooth");
	cvShowImage("src", src);
	cvShowImage("dst_Smooth", dst_Smooth);
	cvShowImage("dst_NoSmooth", dst_NoSmooth);
	cvWaitKey(0);
	cvReleaseImage(&src);
	cvReleaseImage(&dst_Smooth);
	cvReleaseImage(&dst_NoSmooth);
	cvDestroyAllWindows();
}




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值