首页 > 编程知识 正文

边缘检测 Laplacian算子,边缘检测算子

时间:2023-05-06 20:47:28 阅读:270457 作者:2438

一. Laplacian算子简介
Laplacian算子是 n 维震动的超短裙空间中的一个二阶微分算子。二阶导数可以用来进行检测边缘。因为图像是“二维”,需要在两个方向进行求导。使用Laplacian算子将会使求导过程变得简单。
Laplacian算子的定义为:

需要说明的是,由于Laplacian算子使用了图像梯度,它内部的代码其实是调用了Sobel算子。

二. Laplacian() 函数介绍

void Laplacian(InputArray src, OutputArray dst, int ddepth, int ksize=1, double scale=1, double delta=0, int borderType=BORDER_DEFAULT ) 第一个参数,InputArray类型的image,输入图像,即源图像,填Mat类的对象即可,且需为单通道8位图像。第二个参数,OutputArray类型的edges,输出的边缘图,需要和源图片有一样的尺寸和通道数。第三个参数,int类型的ddept,目标图像的深度。第四个参数,int类型的ksize,用于计算二阶导数的滤波器的孔径尺寸,大小必须为正奇数,且有默认值1。第五个参数,double类型的scale,计算拉普拉斯值的时候可选的比例因子,有默认值1。第六个参数,double类型的delta,表示在结果存入目标图(第二个参数dst)之前可选的delta值,有默认值0。第七个参数, int类型的borderType,边界模式,默认值为BORDER_DEFAULT。

三. 代码演示

int main(int argc, char** argv){Mat src = imread("E:/Image/wz.jpg");if (src.empty()){cout << "load image error..." << endl;return -1;}imshow("src img", src);GaussianBlur(src, src, Size(3, 3), 0, 0);cvtColor(src, src, CV_BGR2GRAY);// LaplacianMat dst;Laplacian(src, dst, CV_16S, 3, 1, 0, BORDER_DEFAULT);convertScaleAbs(dst, dst);imshow("result", dst);waitKey(0);return 0;}

结果示例:
注:

convertScaleAbs() 函数可以实现图像增强,是一个位深转化函数,可将任意类型的数据转化为CV_8UC1。具体数据处理方式如下:
(1). 对于srcalpha+beta的结果如果是负值且大于-255,则直接取绝对值;
(2). 对于srcalpha+beta的结果如果大于255,则取255;
(3). 对于srcalpha+beta的结果是负值,且小于-255,则取255;
(4). 对于srcalpha+beta的结果如果在0-255之间,则保持不变;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。