博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV笔记(十五)——使用Laplace算子进行图像的边缘检测
阅读量:6250 次
发布时间:2019-06-22

本文共 1797 字,大约阅读时间需要 5 分钟。

在笔记十四中,我们使用了Sobel算子对图像进行边缘检测,理论依据是像素变化最快的地方最有可能是边缘处,所以使用sobel算子对图像做微分,得到的结果图像当中灰度较大的区域,即为边缘处。

在这里,我们使用Laplace算子来做边缘检测,也是类似的道理,只不过换成了二阶微分,在一阶微分的极大值的地方,二阶微分为零。我们以二阶微分为零的区域作为边缘。当然了一阶微分极小值的地方,即图像变化很慢很慢的地方,二阶微分也可能为零。所以我们还需要进行额外的滤波。

 

在理论上是这样,但是在实现上,OpenCV使用了类似sobel算子的方法,并且在Laplace算子的运用中,一行二阶微分和列二阶微分的加法结合在一起,用一个kernel计算完毕。

Laplace(f) = \dfrac{\partial^{2} f}{\partial x^{2}} + \dfrac{\partial^{2} f}{\partial y^{2}}

 

先看看OpenCV当中运用Laplace算子的函数:

void cv::Laplacian( InputArray _src, OutputArray _dst, int ddepth, int ksize, double scale, double delta, int borderType )

使用方式和Sobel相似。

部分实现代码如下:

1 if( ksize == 1 || ksize == 3 ) 2     { 3         float K[2][9] = 4         {
{
0, 1, 0, 1, -4, 1, 0, 1, 0}, 5 {
2, 0, 2, 0, -8, 0, 2, 0, 2}}; 6 Mat kernel(3, 3, CV_32F, K[ksize == 3]); 7 if( scale != 1 ) 8 kernel *= scale; 9 filter2D( src, dst, ddepth, kernel, Point(-1,-1), delta, borderType );10 }

 

OpenCV中使用Laplacian的例子:

1 int main( int, char** argv ) 2 { 3  4   Mat src, src_gray, dst; 5   int kernel_size = 3; 6   int scale = 1; 7   int delta = 0; 8   int ddepth = CV_16S; 9   const char* window_name = "Laplace Demo";10 11   /// Load an image12   src = imread( argv[1] );13 14   if( !src.data )15     { return -1; }16 17   /// Remove noise by blurring with a Gaussian filter18   GaussianBlur( src, src, Size(3,3), 0, 0, BORDER_DEFAULT );19 20   /// Convert the image to grayscale21   cvtColor( src, src_gray, COLOR_RGB2GRAY );22 23   /// Create window24   namedWindow( window_name, WINDOW_AUTOSIZE );25 26   /// Apply Laplace function27   Mat abs_dst;28 29   Laplacian( src_gray, dst, ddepth, kernel_size, scale, delta, BORDER_DEFAULT );30   convertScaleAbs( dst, abs_dst );31 32   /// Show what you got33   imshow( window_name, abs_dst );34 35   waitKey(0);36 37   return 0;38 }
View Code

 

转载于:https://www.cnblogs.com/nipan/p/4147302.html

你可能感兴趣的文章
Css布局系列-float 浮动
查看>>
lowbit
查看>>
【总结】四月份找实习总结
查看>>
【JS】Intermediate7:jQuery:DOM API
查看>>
iphone-common-codes-ccteam源代码 CCUIApplication.h
查看>>
10,object类
查看>>
团队第一次作业
查看>>
Kooboo CMS 无聊随笔(2)
查看>>
static 和 global
查看>>
Ubuntu12.04安装及环境配置总结
查看>>
费马小定理,欧拉函数
查看>>
浮点型数据的比较
查看>>
json相关
查看>>
MpVue开发之框架的搭建
查看>>
js之放大镜效果
查看>>
Cocos2d之Node类详解之节点树(一)
查看>>
023-请你说一说你知道的自动化测试框架
查看>>
response (响应对象)
查看>>
java.lang.StringBuilder源码分析
查看>>
php中的单引号与双引号详解
查看>>