一、laplance算子
在二阶导数的时候,最大变化处的值为零即边缘是零值。通过二阶导数计算,依据此理论我们可以计算图像二阶导数,提取边缘。
Laplacian函数定义如下:
1、高斯模糊——去噪声GaussianBlur()
2、转换为灰度图像cvtColor()
3、拉普拉斯——二阶导数计算Laplacian()
4、取绝对值convertScaleAbs()
5、显示结果
#include<opencv2/opencv.hpp>
#include<highgui.h>
#include<iostream>
using namespace cv;
using namespace std;
Mat src,dst,gray,x_gray,y_gray,edge_image;
int main(int argc,char**argv)
{
src=imread("1.jpg");
namedWindow("my picture",CV_WINDOW_AUTOSIZE);
imshow("my picture",src);
waitKey(100);
GaussianBlur(src,dst,Size(3,3),0,0,BORDER_DEFAULT); //高斯降噪,平滑
cvtColor(dst,gray,COLOR_BGR2GRAY); //转为灰度图
namedWindow("gray image",CV_WINDOW_AUTOSIZE);
imshow("gray image",gray);
waitKey(100);
Laplacian(gray,edge_image,CV_32F,3,1,0);
convertScaleAbs(edge_image,edge_image);
//threshold(edge_image,edge_image,0,255,THRESH_OTSU);
namedWindow("lap_image",CV_WINDOW_AUTOSIZE);
imshow("lap_image",edge_image);
waitKey(0);
return(0);
}