Opencv图像识别从零到精通(20)---laplace LOG DOG边缘检测
来源:互联网 发布:日本动画制作软件 编辑:程序博客网 时间:2024/06/06 01:59
经过了上一篇的简单的边缘检测,现在来看一下二阶导数的边缘检测,分别是Laplace LOG DOG,看到他们心里还是有点遗憾,要是自己能加快一点学习的步伐,在面试的时候也许就可以轻松回答了,亲爱的你们只是来的晚了2天。希望和我一样的同学,要加快脚步,认真学习了。废话不再多说,让我看看是怎么回事。
一、Laplacian
Laplacian算子定义为
表示成模板的形式就是 。Laplacian算子另外一种形式是,也经常使用。Laplace算子是一种各向同性算子,在只关心边缘的位置而不考虑其周围的象素灰度差值时比较合适。Laplace算子对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。存在噪声情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波。
二、LOG
看到这里,可能觉得按照习惯上面我少了Laplace的代码, 这是因为Laplace算子对噪声很敏感,所有要进行高斯滤波然后再laplace,过度到LOG,似乎也很舒服。
对于高斯先要有个基础
这里我用图片画出来,一个是好理解,还有就是和下面的DOG进行比较
<span style="font-size:18px;">#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include "opencv2/imgproc/imgproc.hpp"#include <iostream>int main(){ cv::Mat srcImage= cv::imread("lena.jpg", 0); if (!srcImage.data) return -1; // 高斯平滑 //加上高斯平滑效果边缘检测效果更好,原因未知 GaussianBlur(srcImage, srcImage, cv::Size(3,3), 0, 0, cv::BORDER_DEFAULT); cv::Mat dstImage; // 拉普拉斯变换 Laplacian(srcImage, dstImage, CV_16S, 3); convertScaleAbs( dstImage, dstImage); cv::imshow("srcImage", srcImage); cv::imshow("dstImage", dstImage); cv::waitKey(0); return 0; }</span>
三、DOG
高斯差分算子,看着名字就能知道是2个高斯差,因为LOG滤波器有无限长的拖尾,若取得很大尺寸,将使得计算不堪重负。但随着:的增加,LOG滤波器幅值迅速下降,当r大于一定程度时,可以忽略模板的作用,这就为节省计算量创造了条件。实际计算时,常常取n*n大小的LOG滤波器,近似n=3σ。另外,LOG滤波器可以近似为两个指数函数之差,即DOG ( Difference Of twoGaussians functions)。
图像画出来就是
<span style="font-size:18px;">GaussianBlur(img,img_G0,Size(3,3),0); GaussianBlur(img_G0,img_G1,Size(3,3),0); Mat img_DoG = img_G0 - img_G1; normalize(img_DoG,img_DoG,255,0,CV_MINMAX); </span>
四、matlab辅助
<span style="font-size:18px;">I=imread("lena.jpg");</span>
<span style="font-size:18px;">I=rgb2gray(I)I1=edge(I,'log');figure,imshow(I1)</span>
图像识别算法交流 QQ群:145076161,欢迎图像识别与图像算法,共同学习与交流
- Opencv图像识别从零到精通(20)---laplace LOG DOG边缘检测
- Opencv图像识别从零到精通(19)----Robert,prewitt,Sobel边缘检测
- Opencv图像识别从零到精通(21)-----canny算子边缘检测
- Opencv图像识别从零到精通(22)-----hough变换检测直线与圆
- opencv边缘检测(laplace,log,canny)
- Opencv图像识别从零到精通(23)----轮廓
- Opencv图像识别从零到精通(26)---分水岭
- Opencv图像识别从零到精通(27)---grabcut
- Opencv图像识别从零到精通(28)----Kmeans
- Opencv图像识别从零到精通(34)---SIFI
- Opencv图像识别从零到精通(35)---SURF
- OpenCV图像边缘检测(Laplace算法)
- 图像边缘检测——二阶微分算子(上)Laplace算子、LOG算子、DOG算子(Matlab实现)
- Opencv图像识别从零到精通(6)----访问图像像素
- Opencv图像识别从零到精通(7)----图像平移、旋转、镜像
- Opencv图像识别从零到精通(31)----图像修补,分离合并通道
- Opencv图像识别从零到精通(2)-----准备知识
- Opencv图像识别从零到精通(4)----cMake与源代码与image watch
- WAS做Federated的总结
- python基础——字符串
- linux C/C++开发环境搭建指南
- 这是标题
- Android studio启动报错
- Opencv图像识别从零到精通(20)---laplace LOG DOG边缘检测
- android自定义相机功能
- 投篮游戏---蘑菇街2016研发工程师在线编程题
- test
- [[NSBundle mainBundle]pathForResource:@"name" ofType:@"type"] 获取不到本地文件
- 获取keystore.keystore 签名
- OpenCV (C++ vs Python) vs MATLAB for Computer Vision - OpenCV(C++ 与 Python 的比较)与 MATLAB 的比较
- BZOJ 3555: [Ctsc2014]企鹅QQ
- javascript 问题待解