计算机视觉:特征检测与匹配

特征检测与匹配

边缘检测

边缘是图像强度函数快速变化的地方。

  1. 平滑:尽可能抑制噪声,而不破坏真实边缘。
  2. 增强:应用过滤器增强图像中边缘的质量(锐化)。
  3. 检测:确定哪些边缘像素应作为噪声丢弃,以及应该保留(通常,阈值提供了用于检测的标准)。
  4. 定位:确定边缘的准确位置(亚像素分辨率对于某些应用程序可能需要,也就是说,估计边缘的位置要比像素之间的间距更好)。在这个步骤中,通常需要进行边缘细化和连接。

Sobel 算子

- img Sobel 算子

带噪声的边缘检测

- img 高斯函数的导数

图像处理之高斯一阶及二阶导数计算

- img 带噪声的边缘检测1

- img 带噪声的边缘检测2

Canny 算子

  1. 使用高斯滤波器,以平滑图像,滤除噪声。
  2. 计算图像中每个像素点的梯度强度和方向。
  3. 应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。
  4. 应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。
    • “滞后”阈值:
      • 定义两个阈值:低和高
      • 使用高阈值启动边缘曲线,使用低阈值继续它们
      • “跟随”边缘从强边缘像素开始
  5. 通过抑制孤立的弱边缘最终完成边缘检测。

- img Canny 算法

边缘检测之Canny

高斯拉普拉斯算子(LoG)

- img 一阶导数

- img 二阶导数

- img 高斯的拉普拉斯

- img 拉普拉斯算子 1

- img 拉普拉斯算子 2

- img 高斯拉普拉斯算子

当边缘不是很锐利的时候,LoG的零交叉效果比梯度更好。

LoG高斯拉普拉斯算子介绍

关键点检测

  1. 检测:找出一组与众不同的关键点。
  2. 描述:提取每个兴趣点周围的特征描述符作为向量。
  3. 匹配:计算特征向量之间的距离以找到对应关系。

Harris 角点检测

- img 角检测公式

- img Harris 角检测1

- img Harris 角检测2

- img Harris 角检测3

将 M 特征值分解:

- img M 特征值分解

根据λ1,λ2的值我们可以把其分为三类:

  1. λ1,λ2都很小且近似,E在所有方向接近于常数;
  2. λ1>>λ2,或者λ2>>λ1, E在某一方向上很大;
  3. λ1,λ2都很大且近似,E在所有方向上很大。

- img Harris 角点分类1

- img Harris 角点分类2

- img Harris 角检测步骤

  1. 高斯模糊,计算 Ix,Iy;
  2. 计算 I x 2 , I y 2 Ix^2,Iy^2 Ix2Iy2
  3. 高斯模糊;
  4. 计算 C;
  5. C 阈值检测;
  6. 非极大值抑制。

非极大值抑制算法(Non-maximum suppression,NMS)的本质是搜索局部极大值,抑制非极大值元素。

Harris Corner(Harris角检测)

close all
clear all
 
I = imread('empire.jpg');
I = rgb2gray(I);
I = imresize(I,[500,300]);
imshow(I);
 
sigma = 1;
halfwid = sigma * 3;
 
[xx, yy] = meshgrid(-halfwid:halfwid, -halfwid:halfwid);
 
Gxy = exp(-(xx .^ 2 + yy .^ 2) / (2 * sigma ^ 2));
Gx = xx .* exp(-(xx .^ 2 + yy .^ 2) / (2 * sigma ^ 2));
Gy = yy .* exp(-(xx .^ 2 + yy .^ 2) / (2 * sigma ^ 2));
 
%%apply sobel in herizontal direction and vertical direction compute the
%%gradient
%fx = [-1 0 1;-1 0 1;-1 0 1];
%fy = [1 1 1;0 0 0;-1 -1 -1];
Ix = conv2(I,Gx,'same');
Iy = conv2(I,Gy,'same');
%%compute Ix2, Iy2,Ixy
Ix2 = Ix.*Ix;
Iy2 = Iy.*Iy;
Ixy = Ix.*Iy;
 
%%apply gaussian filter
h = fspecial('gaussian',[6,6],1);
Ix2 = conv2(Ix2,h,'same');
Iy2 = conv2(Iy2,h,'same');
Ixy = conv2(Ixy,h,'same');
height = size(I,1);
width = size(I,2);
result = zeros(height,width);
R = zeros(height,width);
Rmax = 0;
%% compute M matrix and corner response
for i = 1:height
    for j =1:width
        M = [Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy(i,j)];
        R(i,j) = det(M) - 0.04*(trace(M)^2);
        if R(i,j)> Rmax
            Rmax = R(i,j);
        end
    end
end
%% compare whith threshold
count = 0;
for i = 2:height-1
    for j = 2:width-1
        if R(i,j) > 0.01*Rmax
            result(i,j) = 1;
            count = count +1;
        end
    end
end
 
%non-maxima suppression
result = imdilate(result, [1 1 1; 1 0 1; 1 1 1]);
 
[posc,posr] = find(result == 1);
imshow(I);
hold on;
plot(posr,posc,'r.');

Harris-Laplace 检测子

Harris 可以平移不变,但是放缩不行。Harris-Laplace 检测子建立 Harris 函数的多尺度空间,然后计算每个尺度里的局部 cornerness 角程度最大值,作为初始点;然后验证每一个初始点在LoG在尺度空间是否是极值点,不是极值点则删除。

- img Harris-Laplace 检测子

使用 DoG 代替 LoG 算子

- img 使用 DoG 代替 LoG 算子

在这里插入图片描述

在这里插入图片描述

Harris-Laplace检测子原理及实现
DoG算子和LoG算子

稳健匹配

- img 稳健匹配

尺度不变特征变换匹配算法(SIFT)

非常详细的sift算法原理解析

霍夫变换(Hough)

- img 基础霍夫变换

经典霍夫变换(Hough Transform)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值