边缘检测对噪声比较敏感,需要先用高斯滤波器对图像进行平滑。
拉普拉斯对噪声敏感,会产生双边效果。不能检测出边的方向。通常不直接用于边的检测,只起辅助的角色,检测一个像素是在边的亮的一边还是暗的一边利用零跨越,确定边的位置。
OpenCV的拉普拉斯函数实现了拉普拉斯算子的离散模拟。注意,拉普拉斯算子与第5章的拉普拉斯金字塔完全不同。
因为拉普拉斯算子可以用二次导数的形式定义,可假设其离散实现类似于二阶Sobel导数。事实的确如此,OpenCV在计算拉普拉斯算子时直接使用Sobel算子。
二阶微分在亮的一边是负的,在暗的一边是正的。常数部分为零。可以用来确定边的准确位置,以及像素在亮的一侧还是暗的一侧。
cvLaplace()函数通常把源图像和目标图像以及中孔大小作为变量。源图像既可以是8位(无符号)图像,也可以是32位(浮点)图像。而目标图像必须是16位(有符号)或者32位(浮点)图像。这里的中孔与Sobel导数中出现的中孔完全一样,事实上主要给出区域大小,在二次求导的计算中,采样这个区域的像素。
拉普拉斯算子可用于各种情况。一个通常的应用是检测“团块”。联想到拉普拉斯算子的形式是沿着X轴和Y轴的二次导数的和,这就意味着周围是更高值的单点或者小块(比中孔小)会将使这个函数值最大化。反过来说,周围是更低值的点将会使函数的负值最大化。
基于这种思想,拉普拉斯算子也
opencv学习笔记(二十二)拉普拉斯算子cvLaplace()
最新推荐文章于 2022-06-01 14:20:20 发布
本文介绍了OpenCV中的拉普拉斯算子cvLaplace(),强调其在边缘检测中的辅助作用,通过高斯滤波平滑图像,然后通过零跨越确定边的位置。拉普拉斯算子实际上使用了Sobel算子实现,并且适用于检测图像中的亮点或暗点。cvLaplace函数的参数包括源图像、目标图像和中孔大小,输出图像需要有足够的位深度。尽管拉普拉斯算子的零交叉点检测可能包含非边缘信息,但结合一阶导数的变化,仍能有效定位边缘。
摘要由CSDN通过智能技术生成