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/mser/src/matlab/mser_demo3.m | 117 +++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100755 SD-VBS/benchmarks/mser/src/matlab/mser_demo3.m (limited to 'SD-VBS/benchmarks/mser/src/matlab/mser_demo3.m') diff --git a/SD-VBS/benchmarks/mser/src/matlab/mser_demo3.m b/SD-VBS/benchmarks/mser/src/matlab/mser_demo3.m new file mode 100755 index 0000000..4669437 --- /dev/null +++ b/SD-VBS/benchmarks/mser/src/matlab/mser_demo3.m @@ -0,0 +1,117 @@ +% MSER_DEMO3 Demonstrates MSER on a volumetric image + +% AUTORIGHTS +% Copyright (C) 2006 Regents of the University of California +% All rights reserved +% +% Written by Andrea Vedaldi (UCLA VisionLab). +% +% Redistribution and use in source and binary forms, with or without +% modification, are permitted provided that the following conditions are met +% +% * Redistributions of source code must retain the above copyright +% notice, this list of conditions and the following disclaimer. +% * Redistributions in binary form must reproduce the above copyright +% notice, this list of conditions and the following disclaimer in the +% documentation and/or other materials provided with the distribution. +% * Neither the name of the University of California, Berkeley nor the +% names of its contributors may be used to endorse or promote products +% derived from this software without specific prior written permission. +% +% THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +% EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +% WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +% DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY +% DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +% (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +% ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +% (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +% SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +% -------------------------------------------------------------------- +% Create data +% -------------------------------------------------------------------- + +% volumetric coordinate (x,y,z) +x = linspace(-1,1,50) ; +[x,y,z] = meshgrid(x,x,x) ; + +% create funny volumetric image +I = sin(4*x).*cos(4*y).*sin(z) ; +I = I-min(I(:)) ; +I = I/max(I(:)) ; + +% quantize the image in 10 levels +lev = 10 ; +I = lev*I ; +Ir = round(I) ; + +% -------------------------------------------------------------------- +% Compute regions +% -------------------------------------------------------------------- +[idx,ell,p] = mser(uint8(Ir),1); + +% -------------------------------------------------------------------- +% Plots +% -------------------------------------------------------------------- + +% The image is quantized; store in LEV its range. +lev = unique(Ir(idx)) ; + +figure(100); clf; +K=min(length(lev),4) ; + +r=.99 ; + +% one level per time +for k=1:K + tightsubplot(K,k) ; + [i,j,m] = ind2sub(size(I), idx(Ir(idx)==lev(k)) ) ; + + % compute level set of level LEV(k) + Is = double(Ir<=lev(k)) ; + + p1 = patch(isosurface(Is,r), ... + 'FaceColor','blue','EdgeColor','none') ; + p2 = patch(isocaps(Is,r),... + 'FaceColor','interp','EdgeColor','none') ; + isonormals(I,p1) + hold on ; + + view(3); axis vis3d tight + camlight; lighting phong ; + + % find regions that have this level + sel = find( Ir(idx) == lev(k) ) ; + + % plot fitted ellipsoid + for r=sel' + E = ell(:,r) ; + c = E(1:3) ; + A = zeros(3) ; + A(1,1) = E(4) ; + A(1,2) = E(5) ; + A(2,2) = E(6) ; + A(1,3) = E(7) ; + A(2,3) = E(8) ; + A(3,3) = E(9) ; + + A = A + A' - diag(diag(A)) ; + + % correct var. order + perm = [0 1 0 ; 1 0 0 ; 0 0 1] ; + A = perm*A*perm ; + + [V,D] = eig(A) ; + A = 2.5*V*sqrt(D) ; + + [x,y,z]=sphere ; + [P,Q]=size(x) ; + X=A*[x(:)';y(:)';z(:)'] ; + x=reshape(X(1,:),P,Q)+c(2) ; + y=reshape(X(2,:),P,Q)+c(1) ; + z=reshape(X(3,:),P,Q)+c(3) ; + surf(x,y,z,'FaceAlpha',.5) ; + end +end -- cgit v1.2.2