一、laplance算子
在二階導數的時候,最大變化處的值爲零即邊緣是零值。通過二階導數計算,依據此理論我們可以計算圖像二階導數,提取邊緣。
Laplacian函數定義如下:
void cv::Laplacian ( InputArray src,
OutputArray dst,
int ddepth,
int ksize = 1,
double scale = 1,
double delta = 0,
int borderType = BORDER_DEFAULT
)
二、
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);
}