边缘提取方法对比:
sobel和Laplacian的对比
Mat LabPP1 = cv::imread("1.jpg");
//Sobel边缘检测
Mat x_edgeImg, y_edgeImg, edgeImg;
Mat abs_x_edgeImg, abs_y_edgeImg;
/*****先对x方向进行边缘检测********/
//因为Sobel求出来的结果有正负,8位无符号表示不全,故用16位有符号表示
Sobel(LabPP1, x_edgeImg, CV_16S, 1, 0, 3, 1, 1, BORDER_DEFAULT);
convertScaleAbs(x_edgeImg, abs_x_edgeImg);//将16位有符号转化为8位无符号
/*****再对y方向进行边缘检测********/
Sobel(LabPP1, y_edgeImg, CV_16S, 0, 1, 3, 1, 1, BORDER_DEFAULT);
convertScaleAbs(y_edgeImg, abs_y_edgeImg);
addWeighted(abs_x_edgeImg, 0.5, abs_y_edgeImg, 0.5, 0, edgeImg);
//Laplacian边缘检测
Mat lapImg, lapImgout;
Laplacian(LabPP1, lapImg, CV_16S, 3,3, 0, BORDER_DEFAULT);
convertScaleAbs(lapImg, lapImgout);
结果表明:在图像质量不佳的情况下,sobe的效果更好。本项目的目的是提取横向的裂纹。