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

OpenCV官方文档学习记录(15)

时间:2014-12-14 22:35:15      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   使用   sp   

laplace边缘检测方式

不同于sobel的一阶导数式边缘检测,laplace算子是将图像的横纵都考虑进来的一种检测,主要使用的是二阶偏导数进行离散变换:

bubuko.com,布布扣

因为laplace也是使用分析梯度的方式进行变换,所以实际上调用的是sobel的方法。在上一篇上有体现,就是在两个方向上分别使用sobel计算结果。

代码如下:

 1 #include <opencv2\opencv.hpp>
 2 #include <iostream>
 3 #include <string>
 4 
 5 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
 6 
 7 using namespace std;
 8 using namespace cv;
 9 
10 void Show(const std::string &name, const Mat &img)
11 {  
12     namedWindow(name, CV_WINDOW_AUTOSIZE);
13     imshow(name, img);
14 }
15 
16 int main(void)
17 {
18     Mat src = imread("lena.jpg");
19     if (src.empty())
20         return -1;
21     Mat src_gray, dst;
22     int kernel_size = 3;
23     int scale = 1;
24     int delta = 0;
25     int ddepth = CV_16S;
26     string win_name = "laplace demo";
27     GaussianBlur(src, src, Size(3, 3), 0, 0, BORDER_DEFAULT);
28     cvtColor(src, src_gray, CV_RGB2GRAY);
29     Show("Src", src);
30     Mat abs_dst;
31     Laplacian(src_gray, dst, ddepth, kernel_size, scale, delta, BORDER_DEFAULT);
32     convertScaleAbs(dst, abs_dst);
33     Show(win_name, abs_dst);
34     waitKey();
35     return 0;
36 }

结果是:

bubuko.com,布布扣

 

摘一张sobel叠加处理后的结果:

bubuko.com,布布扣

虽然显然是soble处理叠加后的效果更好,但是比较起来还是laplace处理比较方便,能够减少代码。

实现过程与上一个的sobel的操作相类似:

1.将图像进行高斯模糊进行去噪;

2.将处理后的图像载入并转化为灰度图像;

3.进行laplace变换:参数分别是对应输入和输出,输出图像的色彩深度(就是矩阵的元素什么形式保存的),kernel的尺寸,其余都是现在我们未知的默认值;

4,将输出图像转化为与原输入深度一样的图像存储方式;

5.输出转化后的结果;

 

 

以上。

OpenCV官方文档学习记录(15)

标签:style   blog   http   io   ar   color   os   使用   sp   

原文地址:http://www.cnblogs.com/lhyz/p/4163077.html

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