From f618466c25d43f3bae9e40920273bf77de1e1149 Mon Sep 17 00:00:00 2001 From: leochanj105 Date: Mon, 19 Oct 2020 23:09:30 -0400 Subject: initial sd-vbs initial sd-vbs add sd-vbs sd-vbs --- SD-VBS/benchmarks/sift/src/matlab/plotsiftframe.m | 119 ++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 SD-VBS/benchmarks/sift/src/matlab/plotsiftframe.m (limited to 'SD-VBS/benchmarks/sift/src/matlab/plotsiftframe.m') diff --git a/SD-VBS/benchmarks/sift/src/matlab/plotsiftframe.m b/SD-VBS/benchmarks/sift/src/matlab/plotsiftframe.m new file mode 100644 index 0000000..984dfc9 --- /dev/null +++ b/SD-VBS/benchmarks/sift/src/matlab/plotsiftframe.m @@ -0,0 +1,119 @@ +function h=plotsiftframe(frames,labels) +% PLOTSIFTFRAME Plot SIFT frame +% H=PLOTSIFTFRAME(FRAMES) plots the SIFT frames FRAMES and returns +% and handle H to the resulting line set. FRAMES has the same format +% used by SIFT(). +% +% PLOTSIFTFRAME(FRAMES, LABELS) displays nearby the frame centers +% the indexes specified by the vector LABELS. This operation is slow +% for large sets of frames. +% +% A SIFT frame is denoted by a circle, representing its support, and +% one of its radii, representing its orientation. The support is a +% disk with radius equal to six times the scale SIGMA of the +% frame. If the standard parameters are used for the detector, this +% corresponds to four times the standard deviation of the Gaussian +% window that has been uses to estimate the orientation, which is in +% fact equal to 1.5 times the scale SIGMA. +% +% This function is considerably more efficient if called once on a +% whole set of frames as opposed to multiple times, one for each +% frame. +% +% See also PLOTMATCHES(), PLOTSIFTDESCRIPTOR(), PLOTSS(). + +% AUTORIGHTS +% Copyright (c) 2006 The Regents of the University of California. +% All Rights Reserved. +% +% Created by Andrea Vedaldi +% UCLA Vision Lab - Department of Computer Science +% +% Permission to use, copy, modify, and distribute this software and its +% documentation for educational, research and non-profit purposes, +% without fee, and without a written agreement is hereby granted, +% provided that the above copyright notice, this paragraph and the +% following three paragraphs appear in all copies. +% +% This software program and documentation are copyrighted by The Regents +% of the University of California. The software program and +% documentation are supplied "as is", without any accompanying services +% from The Regents. The Regents does not warrant that the operation of +% the program will be uninterrupted or error-free. The end-user +% understands that the program was developed for research purposes and +% is advised not to rely exclusively on the program for any reason. +% +% This software embodies a method for which the following patent has +% been issued: "Method and apparatus for identifying scale invariant +% features in an image and use of same for locating an object in an +% image," David G. Lowe, US Patent 6,711,293 (March 23, +% 2004). Provisional application filed March 8, 1999. Asignee: The +% University of British Columbia. +% +% IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY +% FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, +% INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND +% ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN +% ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF +% CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT +% LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +% A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" +% BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE +% MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + +% -------------------------------------------------------------------- +% Check the arguments +% -------------------------------------------------------------------- + +if size(frames,1) ~= 4 + error('FRAMES should be a 4xK matrix') ; +end + +K = size(frames,2) ; + +if nargin > 1 + putlabels = 1 ; +end + +% -------------------------------------------------------------------- +% Do the work +% -------------------------------------------------------------------- + +hold on ; +K=size(frames,2) ; +thr=linspace(0,2*pi,40) ; + +allx = nan*ones(1, 40*K+(K-1)) ; +ally = nan*ones(1, 40*K+(K-1)) ; + +allxf = nan*ones(1, 3*K) ; +allyf = nan*ones(1, 3*K) ; + +putlabel=0 ; + +for k=1:K + xc=frames(1,k) ; + yc=frames(2,k) ; + r=1.5*4*frames(3,k) ; + th=frames(4,k) ; + + x = r*cos(thr) + xc ; + y = r*sin(thr) + yc ; + + allx((k-1)*(41) + (1:40)) = x ; + ally((k-1)*(41) + (1:40)) = y ; + + allxf((k-1)*3 + (1:2)) = [xc xc+r*cos(th)] ; + allyf((k-1)*3 + (1:2)) = [yc yc+r*sin(th)] ; + + if putlabel + x=xc+r ; + y=yc ; + h=text(x+2,y,sprintf('%d',labels(k))) ; + set(h,'Color',[1 0 0]) ; + plot(x,y,'r.') ; + end + +end + +h=line([allx nan allxf], [ally nan allyf], 'Color','g','LineWidth',3) ; -- cgit v1.2.2