matlab拉普拉斯算子代码_从头开始在python中实现拉普拉斯斑点检测器

Harris Corner Detector生成的特征对于缩放不是不变的。对于特征跟踪,我们需要对仿射变换不变的特征。拉普拉斯斑点检测器是生成对缩放不变的特征的基本方法之一。

拉普拉斯斑点检测器的想法是将图像与多个尺度的“斑点滤波器”进行卷积,并在得到的尺度空间中寻找滤波器响应的极值。

斑点滤波器(Blob Filter):

这个滤波器是由沿x轴和y轴的double derivating Gaussian filter产生并相加。以上也称为高斯拉普拉斯算子。

91a57be9b7d3d6b9e2f637c32ca4836e.gif

Laplacian Of Gaussian

matlab拉普拉斯算子代码_从头开始在python中实现拉普拉斯斑点检测器_第1张图片

Sigma = 2时的高斯滤波器

matlab拉普拉斯算子代码_从头开始在python中实现拉普拉斯斑点检测器_第2张图片

高斯滤波器的拉普拉斯算子(sigma = 2)

当图像中有一个角时,LOG滤波器的输出最大。

matlab拉普拉斯算子代码_从头开始在python中实现拉普拉斯斑点检测器_第3张图片

有拐角时,输出最大

我们想通过将图像与不同的sigma卷积来找到blob的特征尺度。但随着我们增加sigma,blob滤波器对图像的响应会降低,因此我们可能无法找到更好的尺度(scale)。为了减少这种影响,我们将LOG滤波器σ平方相乘。这个过程称为尺度归一化。

拉普拉斯档案对半径为r的binary圆的最大响应是σ= 1.414 * r

以上是blob滤波器的一些基础知识。整个过程归结为两个步骤

  1. 在几个尺度上用尺度归一化拉普拉斯变换卷积图像(不同尺度意味着不同的西格玛)
  2. 在尺度空间中找到平方拉普拉斯响应的最大值

拉普拉斯Blob检测的Python代码

该代码有四个主要步骤:

  1. 生成LOG滤波器
  2. 用高斯滤波器对图像进行卷积
  3. 找到最大峰值
  4. 绘制blob。

生成LOG滤波器的Python代码

import cv2from pylab import *import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread("sunflowers.jpg

你可能感兴趣的:(matlab拉普拉斯算子代码)