图像处理之Sobel、Scharr导数与laplace二阶微分

Sobel算子可用于计算图像梯度。

1.水平方向上:                                                    2. 竖直方向上:

                 

3.计算梯度                                                          4.通常梯度近似为

                       

在3*3卷积核下,Scharr具有速度快、精度高的优点:


#include "cv.h"
#include "highgui.h"

using namespace cv;
using namespace std;

int main(int argc,char *argv[])
{
	Mat src,srcGray,grad_x,grad_y,grad_x_abs,grad_y_abs,dst;
	
	src=imread("fish.jpg");
	GaussianBlur(src,src,Size(3,3),0,0,BORDER_DEFAULT);
	cvtColor(src,srcGray,CV_BGR2GRAY);
	imshow("srcGray",srcGray);

	Sobel(srcGray,grad_x,CV_16S,1,0,3,1,0,BORDER_DEFAULT);
	convertScaleAbs(grad_x,grad_x_abs);

	Sobel(srcGray,grad_y,CV_16S,0,1,3,1,0,BORDER_DEFAULT);
	convertScaleAbs(grad_y,grad_y_abs);
	
	addWeighted(grad_x_abs,0.5,grad_y_abs,0.5,0,dst);
	imshow("dst",dst);

	cvWaitKey(0);
	destroyAllWindows();
	return 0;
}

重要函数介绍


Scharr用法与Sobel一样:

// Gradient X
Scharr(srcGray,grad_x,CV_16S,1,0,3,1,0,BORDER_DEFAULT);

// Gradient Y
Scharr( srcGray,grad_x,CV_16S,1,0,3,1,0,BORDER_DEFAULT );


效果:

拉普拉斯算子

#include "cv.h"
#include "highgui.h"

using namespace cv;
using namespace std;

int main(int argc,char *argv[])
{
	Mat src,srcGray,dst,dst_abs;
	
	src=imread("fish.jpg");
	GaussianBlur(src,src,Size(3,3),0,0,BORDER_DEFAULT);
	cvtColor(src,srcGray,CV_BGR2GRAY);
	imshow("srcGray",srcGray);

	Laplacian(srcGray,dst,CV_16S,3,1,0,BORDER_DEFAULT);
	convertScaleAbs(dst,dst_abs);
	
	imshow("dst_abs",dst_abs);

	cvWaitKey(0);
	destroyAllWindows();
	return 0;
}
重要函数:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值