特征空间之点检测(MATLAB)

本系列是基于书籍 《图像配准技术及其MATLAB编程实现》学习并亲手实现的记录,只是希望留下一点痕迹,不妄学了一遍

特征空间是指从参考图像和浮动图像中提取除可用于配准的特征;说白了,就是两张或相邻有重叠区域的图像,找到可用于配准的特征。

图像配准一般分为两种:基于灰度的图像配准和基于特征的图像配准,关于这两者的细节,大家可以去网络上找到很多,我就不多说了

特征空间在基于灰度的配准中 指的是  图像像素的灰度值,在基于特征的方法中,指的是点、线、面,边缘,等等图像的特征信息

点检测的原理我就不多说了,我们直接来分析程序

function output = PointDetect( filename, number )
%filename = 图像文件,number=被检测的特征点数量
%   最后得到图像的特征点图
f = imread(filename);
f = rgb2gray(f);%灰度化
f = imresize(f, [510,800])%尺寸重新编辑,防止过大
figure,imshow(f)%显示灰度并重新定义尺寸后的图像
[width, height] = size(f);
h = zeros(width, height);%定义空白图像,放置特征点图
if number > width*height
    number = width*height;%特征点的数量不可能大于图像像素点数量
end
df = im2double(f);%变换图像数据类型
w = [-1 -1 -1;-1 8 -1;-1 -1 -1];%点检测掩膜
g = imfilter(df, w);%滤波,也可称卷积操作
g = abs(g)./8;%归一化
[data, index] = sort(g(:));%对矩阵中所有元素从小到大重新排列,并组成一列
T = data(width*height - number + 1);%选择其中一个元素的值作为阈值,保证number一定
for i = 1:width %遍历循环,将符合条件的像素灰度值放到空白图像中并赋值1,即为白色
    for j = 1:height
        if g(i,j) > T
            h(i,j) = 1;
        end
    end
end
figure,imshow(h)

end

 

你可能感兴趣的:(特征检测)