最近没空写最后一部分的内容,先把代码放上来
% SIFT 算法的最后一步是特征向量生成
orient_bin_spacing = pi/4;
orient_angles = [-pi:orient_bin_spacing:(pi-orient_bin_spacing)];
grid_spacing = 4;
[x_coords y_coords] = meshgrid( [-6:grid_spacing:6] );
feat_grid = [x_coords(:) y_coords(:)]';
[x_coords y_coords] = meshgrid( [-(2*grid_spacing-0.5):(2*grid_spacing-0.5)] );
feat_samples = [x_coords(:) y_coords(:)]';
feat_window = 2*grid_spacing;
desc = [];
if interactive >= 1
fprintf( 2, 'Computing keypoint feature descriptors for %d keypoints', size(pos,1) );
end
for k = 1:size(pos,1)
x = pos(k,1)/subsample(scale(k,1));
y = pos(k,2)/subsample(scale(k,1));
% 将坐标轴旋转为关键点的方向,以确保旋转不变性
M = [cos(orient(k)) -sin(orient(k)); sin(orient(k)) cos(orient(k))];
feat_rot_grid = M*feat_grid + repmat([x; y],1,size(feat_grid,2));
feat_rot_samples =