OpenCV——Sobel和拉普拉斯变换

摘要:
索贝尔变换和拉普拉斯变换是高通滤波器。在强度值剧烈变化的图像中,通常在物体边缘,拉普拉斯变换后该区域的强度值(绝对值)较大。函数:void cvLaplace/*Src输入图像.dst输出图像.aperture _大小内核大小*/函数cvLaplace计算输入图像的拉普拉斯变换。方法是首先使用sobel算子计算二阶x和y差,然后求和:_ Size=1给出了最快的计算结果,这相当于使用以下内核进行图像卷积:与cvSobel函数类似,此函数也不执行图像尺度变换,支持的输入和输出图像类型的组合与cvSobel的一致。

Sobel变换和拉普拉斯变换都是高通滤波器

什么是高通滤波器呢?就是保留图像的高频分量(变化剧烈的部分),抑制图像的低频分量(变化缓慢的部分)。而图像变化剧烈的部分,往往反应的就是图像的边沿信息了。

1. Sobel算子(主要用于边缘检测)

//Sobel变化实例

Mat sobelX;  
Sobel(image,sobelX,CV_8U,1,0,3,0.4,128);  
imshow("X方向Sobel结果",sobelX);  
  
Mat sobelY;  
Sobel(image,sobelY,CV_8U,0,1,3,0.4,128);  
imshow("Y方向Sobel结果",sobelY);  
//函数说明

void Sobel(InputArray src, OutputArray dst, int ddepth, int xorder, int yorder, int ksize=3, double
scale=1, double delta=0, int borderType=BORDER_DEFAULT )
void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 );
/*
src
输入图像.
dst
输出图像.
xorder
x 方向上的差分阶数
yorder
y 方向上的差分阶数
aperture_size
扩展 Sobel 核的大小,必须是 1, 3, 5 或 7。 除了尺寸为 1, 其它情况下, aperture_size ×aperture_size 可分离内核将用来计算差分。对 aperture_size=1的情况,
使用 3x1 或 1x3 内核 (不进行高斯平滑操作)。这里有一个特殊变量 CV_SCHARR (=-1),对应 3x3 Scharr 滤波器,可以给出比 3x3 Sobel 滤波更精确的结果。
对 x-方向 或矩阵转置后对 y-方向。
*/

2.Laplacian变换

Laplacian变换功能1用来检测物体的边缘信息

具体说明:

在图像平坦(灰度值无变换的区域),拉普拉斯滤波后的图像在该区域的强度值为0.在图像灰度值剧烈变换的区域(边缘),拉普拉斯滤波后的图像的强度值(绝对值)相对较大。 
物体边缘一般在强度值的零交点(注意:并不是在强度值为0的点,而是在强度值从正变换到负,或从负变换到正的过程中,隐含存在的为0的亚像素级的点)。

Laplacian变换功能2:可用于图像增强(原图像减去拉普拉斯变换的图像)

原理大体为: 

图像相对平坦的区域拉普拉斯变换后的值约等于0。像素(原)-0=像素(原),即该区域图像几乎没有变化。 
在图像中强度值变换剧烈的地方,通常是物体的边缘处,拉普拉斯变换后的该区域的强度值(绝对值)较大。那么 像素(原)-像素(变换后),肯定会发生变化。例如:150(原)-50(变换后的 )=100,该点处的像素变黑。

函数:

void cvLaplace( const CvArr* src, CvArr* dst, int aperture_size=3 );
/*
src    输入图像.
dst    输出图像.
aperture_size    核大小 (与 cvSobel 中定义一样)
*/

函数 cvLaplace 计算输入图像的 Laplacian变换,方法是先用 sobel 算子计算二阶 x- 和 y- 差分,再求和:

OpenCV——Sobel和拉普拉斯变换第1张

对 aperture_size=1 则给出最快计算结果,相当于对图像采用如下内核做卷积:

OpenCV——Sobel和拉普拉斯变换第2张

类似于 cvSobel 函数,该函数也不作图像的尺度变换,所支持的输入、输出图像类型的组合和cvSobel一致。

免责声明:文章转载自《OpenCV——Sobel和拉普拉斯变换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在docker中安装宝塔动态代理(二)—— CGLIB代理原理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Sobel算子 (转)

幻灯片1 Sobel算子  幻灯片2 一、Sobel边缘检测算子 l 在讨论边缘算子之前,首先给出一些术语的定义: l (1)边缘:灰度或结构等信息的突变处,边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。 l (2)边缘点:图像中具有坐标[x,y],且处在强度显著变化的位置上的点。 l (3)边缘段:对应于边缘点坐标[x,y]及其...

SciPy模块应用

1.图像模糊         图像的高斯模糊是非常经典的图像卷积例子。本质上,图像模糊就是将(灰度)图像I 和一个高斯核进行卷积操作:,其中是标准差为σ的二维高斯核。高斯模糊通常是其他图像处理操作的一部分,比如图像插值操作、兴趣点计算以及很多其他应用。SciPy 有用来做滤波操作的scipy.ndimage.filters 模块。该模块使用快速一维分离的方...

图像边缘检测

一、实验目的:熟悉边缘检测的基本方法 二、实验内容:以chairgray.jpg图像为例,分别采用sobel、prewitt、roberts和 log对该图像及其加上噪声后的图像进行边缘检测。用到的matlab函数为edge,imnoise。 1 a=imread('D:/picture/ZiXia.jpg'); 2 a=rgb2gray(a); 3...

Hls平台实现sobel算法(一)

   索贝尔(Sobel)算子主要用于边缘检测,根据像素点的上下、左右邻点的灰度加权差与阈值进行比较,在边缘处达到极值的方法实现边缘检测。                                                                                                              ...

xilinx FPGA课程学习总结

    一时冲动,跑步进入了FPGA的大门,尤老师是教练,我之前一直做嵌入式软件,数字电路也是十年前大学课堂学过,早已经还给老师了。FPGA对于我来说完全是小白,所以。老师的课程,对于我来说至关重要!因为见过太多从入门到放弃的案例了! 什么样的教程和视频,可以不至于让小白从入门到放弃呢?我总结了几点:1.由浅入深,循序渐进,不急躁,不跃进,符合人的认知规律...

基于MATLAB的Sobel边缘检测算法实现

图像边缘就是图像灰度值突变的地方,也就是图像在该部分的像素值变化速度非常之快,就比如在坐标轴上一条曲线有刚开始的平滑突然来个大转弯,在变化出的导数非常大。 Sobel算子主要用作边缘检测,它是一离散型差分算子,用来计算图像亮度函数灰度之近似值。 边缘是指其周围像素灰度急剧变化的那些像素的集合。边缘存在于目标、背景和区域之间,所以,边缘是图像分割所依赖的最重...