图像的斑点检测

function [points] = log_Blob(img,o_nb_blobs)
    % 功能:提取LoG斑点
    % 输入:
    %      img –输入的图像
    %       o_nb_blobs -需要检测的斑点区域的数量
    % 输出:
    %       points -检测出的斑点
    % 参考文献:
    % Lindeberg, T. Feature Detection with Automatic Scale Selection
    % IEEE Transactions Pattern Analysis Machine Intelligence, 1998, 30,
    % 77-116
   
    % 输入图像
    img = double(img(:,:,1));
       
    % 设定检测到斑点的数量
    if nargin==1
        nb_blobs = 120;
    else
        nb_blobs = o_nb_blobs;
    end
   
    % 设定LoG参数
    sigma_begin = 2;
    sigma_end   = 15;
    sigma_step  = 1;
    sigma_array = sigma_begin:sigma_step:sigma_end;
    sigma_nb    = numel(sigma_array);
       
    % 变量
    img_height  = size(img,1);
    img_width   = size(img,2);
       
    % 计算尺度规范化高斯拉普拉斯算子
    snlo = zeros(img_height,img_width,sigma_nb);
    for i=1:sigma_nb
        sigma       = sigma_array(i);

snlo(:,:,i) = sigma*sigma*imfilter(img,fspecial('log', floor(6*sigma+1), sigma),'replicate');

    end
       
    % 搜索局部极值
    snlo_dil             = imdilate(snlo,ones(3,3,3));
    blob_candidate_index = find(snlo==snlo_dil);
    blob_candidate_value = snlo(blob_candidate_index);
    [tmp,index]          = sort(blob_candidate_value,'descend');
   
blob_index           = blob_candidate_index( index(1:min(nb_blobs,numel(index))) );

[lig,col,sca]        = ind2sub([img_height,img_width,sigma_nb],blob_index);

    points               = [lig,col,3*reshape(sigma_array(sca),[size(lig,1),1])];
   
end

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SIFT(尺度不变特征变换)斑点检测是一种用于图像斑点(关键点)检测的方法。以下是使用MATLAB实现SIFT斑点检测的步骤简要概述。 1. 加载图像:使用MATLAB的imread函数加载待检测的图像。 2. 计算高斯金字塔:使用MATLAB的imresize函数对图像进行多次下采样,生成图像金字塔。通过不同尺度的图像可以在不同层次上检测斑点。 3. 计算高斯差分金字塔:对每个尺度的图像在不同尺度上进行高斯平滑,然后计算相邻两层图像的差分,得到不同尺度的高斯差分金字塔。 4. 非极大值抑制:对每个尺度的高斯差分金字塔进行非极大值抑制,保留局部极大值点作为关键点候选。 5. 特征点精确定位:在每个关键点候选周围的局部区域中,使用高斯差分金字塔的插值方法,通过二次拟合求得亚像素精确位置。 6. 去除低对比度的关键点:计算关键点的梯度模值,并用阈值过滤掉低对比度的关键点。 7. 去除边缘响应的关键点:计算关键点的主曲率方向,并通过判断曲率比值来消除边缘响应的关键点。 8. 生成关键点描述子:对于每个关键点,计算其局部区域的方向直方图,生成关键点的描述子。 以上是SIFT斑点检测的主要步骤。MATLAB提供了许多图像处理和计算机视觉函数,可以方便地实现这些步骤。通过SIFT斑点检测,可以在图像中检测到斑点,实现图像的关键点提取,用于图像匹配、物体识别等应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值