log斑点检测matlab

搬砖张姐 2017-03-30 05:45:36
%看一下LOG方法检测斑点的具体实现过程

clear all;

%im=imread('IMG_0102_blob_small.jpg');
im=imread('biaoqing000.jpg');

%img=double(im(:,:,1));
img=double(rgb2gray(im));

%blob的数量
nb_blobs=500;

%设定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)=imfilter(img,fspecial('log',floor(6*sigma+1),sigma),'replicate');%这里的floor(5*)应该根据检测点的大小进行调整
end

snlo_dil=imdilate(snlo,ones(3,3,3));%imdilate表示膨胀
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);%ind2sub函数怎么用,应该是从index转到普通的坐标吧。sca这个变量表示什么啊?
points=[lig,col,3*reshape(sigma_array(sca),[size(lig,1),1])];

draw(im,points,'LoG');
问题:怎么实现按顺序检测到斑点
...全文
791 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧