欢迎大家学习OpenCV4.8 开发实战专栏,长期更新,不断分享源码。
专栏代码全部基于C++ 与Python双语演示。
送相关学习资料, V: OpenCVXueTang_Asst
本文关键知识点:图像梯度 -拉普拉斯算子(二阶导数算子)
图像的一阶导数算子可以得到图像梯度局部梯度相应值,二阶导数可以通过快速的图像像素值强度的变化来检测图像边缘,其检测图像边缘的原理跟图像的一阶导数有点类似,只是在二阶导数是求X、Y方向的二阶偏导数,对图像来说:
X方向的二阶偏导数就是 dx =f(x+1,y)+ f(x-1,y)- 2f(x,y)
Y方向的二阶偏导数就是 dy =f(x,y+1)+ f(x,y-1)- 2f(x,y)
对X方向与Y方向进行叠加最终就得到delta对应的二阶导数算子,看第一张图像最下面的部分就是对应的四邻域的二阶导数算子,我们可以进一步扩展增强为八邻域的算子。
OpenCV中Laplacian滤波函数就是二阶导数发现边缘的函数:
void cv::Laplacian(
InputArray src,
OutputArray dst,
int ddepth,// 深度默认是-1表示输入与输出图像相同
int ksize = 1,// 必须是奇数, 等于1是四邻域算子,大于1改用八邻域算子
double s麈偵谘諍蓅镳覆别娘le = 1,
double delta =0,// 对输出图像