opencv边缘检测(laplace,log,canny)

二、 基于二阶微分的边缘检测方法
     一阶微分组成的梯度是一种矢量, 不但有大小还有方向, 和标量比较, 数据存储量比较大。Lap lac ian 算子是对二维函数进行运算的二阶导数算子 , 与方向无关, 对取向不敏感, 因而计算量要小。根据边缘的特性,Laplacian算子可以作为边缘提取算子, 计算数字图像的Laplacian值可以借助模板实现, 但是它对噪声相当敏感, 它相当于高通滤波, 常会出现一些虚假边缘。因此, Marr提出首先对图像用G auss函数进行平滑,然后利用Lap lac ian算子对平滑的图像求二阶导数后得到的零交叉点作为候选边缘, 这就是LOG算子 。LOG算子就是对图像进行滤波和微分的过程, 是利用旋转对称的LOG 模板与图像做卷积, 确定滤波器输出的零交叉位置, 模板如图所示。

//laplace算子会产生负的像素值,因此需要归一化处理,另外目标图像深度需要注意
	cvLaplace(src,pLaplaceImg_32,5);
	cvConvertScale(pLaplaceImg_32,pLaplaceImg);   //将图像转化为8位
	cvMinMaxLoc(pLaplaceImg,&min_val,&max_val);   
	printf("max_val = %f\nmin_val = %f\n",max_val,min_val);
	cvNormalize(pLaplaceImg,pLaplaceImg,0,255,CV_MINMAX,0);
	cvNamedWindow("laplace",1);
	cvShowImage("laplace",pLaplaceImg);
	cvSaveImage("LaplaceImg.jpg", pLaplaceImg);//把图像存入文件
	cvReleaseImage(&pLaplaceImg);
//Marr算子
void log(IplImage *src,IplImage *dst)
{
	//dst = cvCloneImage(src);
	IplImage* dst1 = cvCreateImage(cvGetSize(src),32,1);
	IplImage* SmoothImg = cvCloneImage(src);
	dst =  cvCreateImage(cvGetSize(src),8,1);
	
	cvSmooth(src,SmoothImg,CV_GAUSSIAN,3,3);  //对图像做3*3的高斯平滑滤波
	cvLaplace(SmoothImg,dst1,3);
	cvConvertScale(dst1,dst);   //将图像转化为8位

	double min_val = 0;double max_val = 0;
	cvMinMaxLoc(dst,&min_val,&max_val);   //取图像中的最大最小像素值
	printf("max_val = %f\nmin_val = %f\n",max_val,min_val);

	cvNormalize(dst,dst,0,255,CV_MINMAX); //归一化处理
	
	//对梯度图加门限,二值化
 /*	int x,y;
	char* p = dst->imageData;
	int w = dst->widthStep;
	for(x = 0;x<dst->width;x++)
	{
		for(y = 0;y<dst->height;y++)
		{
			if(p[x+y*w]>50)
				p[x+y*w] = 255;
			else p[x+y*w] = 0;
		}
	}	*/
	cvSaveImage("LogImg.jpg", dst);//把图像存入文件
	cvNamedWindow("log",1);
	cvShowImage("log",dst);
	cvReleaseImage(&dst1);
	cvReleaseImage(&SmoothImg);

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值