How to apply sift to each superpixel in image ?

조회 수: 2 (최근 30일)
saber kazemi
saber kazemi 2018년 12월 17일
편집: saber kazemi 2018년 12월 17일
This implementation is to apply sift to an image that works correctly:
[Locations,Descriptors]= vl_sift(I);
Locations=Locations([2,1,3,4],:)';
Descriptors=Descriptors';
num_keypoint=size(Locations,1);
Descriptors=double(Descriptors);
Descriptors=Descriptors./repmat(NormRow(Descriptors,2),1,128);
And this is my implementation to apply sift to each superpixel, But I believe it's not right and ultimately leads to a false detection.
Locations=[];
Descriptors=[];
for p=1:num_segments
seg_map=(segments==p); % Specify each segment
% seg_map( ~any(seg_map,2), : ) = []; %rows
% seg_map( :, ~any(seg_map,1) ) = []; %columns
% seg_map=double(seg_map);
% seg_map(seg_map==0) = nan;
[yy,xx]=size(seg_map);
sift_segments = zeros('like',grayimage);
for i=1:yy
for j=1:xx
if seg_map(i,j)==0
sift_segments(i,j)= 0;
else
sift_segments(i,j)=grayimage(i,j);
end
end
end
II=single(sift_segments);
% II(II==0) = nan;
[Loc,Des]= vl_sift(II, 'PeakThresh', Sift_Treshold(p));
Loc=Loc([2,1,3,4],:)';
Locations=[Locations;Loc];
Des=Des';
Descriptors=[Descriptors;Des];
end
num_keypoint=size(Locations,1);
Descriptors=double(Descriptors);
Descriptors=Descriptors./repmat(NormRow(Descriptors,2),1,128);
Please pay attention to the lines that have been commented.
And the problem is that the location and descriptors extracted of each superpixel do not Correctly integrate into a matrix.
Have you got a solution?

답변 (0개)

카테고리

Help CenterFile Exchange에서 Feature Detection and Extraction에 대해 자세히 알아보기

제품


릴리스

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by