码迷,mamicode.com
首页 > 其他好文 > 详细

OpenCV 边缘检测 Laplacian

时间:2020-05-03 14:48:27      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:算子   对比   灰度   load   包含   边缘检测   gaussian   高斯滤波   omega   

 1 //-----------------------------------【头文件包含部分】---------------------------------------  
 2 //            描述:包含程序所依赖的头文件  
 3 //----------------------------------------------------------------------------------------------  
 4 #include <opencv2/opencv.hpp>  
 5 #include<opencv2/highgui/highgui.hpp>  
 6 #include<opencv2/imgproc/imgproc.hpp>  
 7   
 8 //-----------------------------------【命名空间声明部分】---------------------------------------  
 9 //            描述:包含程序所使用的命名空间  
10 //-----------------------------------------------------------------------------------------------  
11 using namespace cv;  
12   
13   
14 //-----------------------------------【main( )函数】--------------------------------------------  
15 //            描述:控制台应用程序的入口函数,我们的程序从这里开始  
16 //-----------------------------------------------------------------------------------------------  
17 int main( )  
18 {  
19     //【0】变量的定义  
20     Mat src,src_gray,dst, abs_dst;  
21   
22     //【1】载入原始图  
23     src = imread("1.jpg");  //工程目录下应该有一张名为1.jpg的素材图  
24   
25     //【2】显示原始图  
26     imshow("【原始图】图像Laplace变换", src);  
27   
28     //【3】使用高斯滤波消除噪声  
29     GaussianBlur( src, src, Size(3,3), 0, 0, BORDER_DEFAULT );  
30   
31     //【4】转换为灰度图  
32     cvtColor( src, src_gray, CV_RGB2GRAY );  
33   
34     //【5】使用Laplace函数  
35     Laplacian( src_gray, dst, CV_16S, 3, 1, 0, BORDER_DEFAULT );  
36   
37     //【6】计算绝对值,并将结果转换成8位  
38     convertScaleAbs( dst, abs_dst );  
39   
40     //【7】显示效果图  
41     imshow( "【效果图】图像Laplace变换", abs_dst );  
42   
43     waitKey(0);  
44   
45     return 0;  
46 }  

Laplacian 算子是n维欧几里德空间中的一个二阶微分算子,定义为梯度grad()的散度div()。因此如果f是二阶可微的实函数,则f的拉普拉斯算子定义为:

 

(1) f的拉普拉斯算子也是笛卡儿坐标系xi中的所有非混合二阶偏导数求和。

 

(2) 作为一个二阶微分算子,拉普拉斯算子把C函数映射到C函数,对于k ≥ 2。表达式(1)(或(2))定义了一个算子Δ :C(R) → C(R),或更一般地,定义了一个算子Δ : C(Ω) → C(Ω),对于任何开集Ω。

 

根据图像处理的原理我们知道,二阶导数可以用来进行检测边缘。因为图像是“二维”, 我们需要在两个方向进行求导。使用Laplacian算子将会使求导过程变得简单。

 

Laplacian 算子的定义:


技术图片
 

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

 

另附一个小tips:让一幅图像减去它的Laplacian可以增强对比度。

 

原始图像:
技术图片

边缘检测图像:
技术图片

OpenCV 边缘检测 Laplacian

标签:算子   对比   灰度   load   包含   边缘检测   gaussian   高斯滤波   omega   

原文地址:https://www.cnblogs.com/ybqjymy/p/12821690.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!