Source code for
vl_demo_mser_basic.m
This file is located in the toolbox/demo folder in VLFeat package.
% VL_DEMO_MSER_BASIC Demo: MSER: basic functionality
pfx = fullfile(vl_root,'figures','demo') ;
randn('state',0) ;
rand('state',0) ;
figure(1) ; clf ;
% --------------------------------------------------------------------
% Load a figure
% --------------------------------------------------------------------
I = imread(fullfile(vl_root,'data','spots.jpg')) ;
image(I) ; colormap gray ;
axis equal ; axis off ; axis tight ;
vl_demo_print('mser_basic_0') ;
% --------------------------------------------------------------------
% Convert the to required format
% --------------------------------------------------------------------
I = uint8(rgb2gray(I)) ;
clf ; imagesc(I) ; colormap(gray(256)) ;
axis equal ; axis off ; axis tight ;
% --------------------------------------------------------------------
% Run VL_MSER
% --------------------------------------------------------------------
[r,f] = vl_mser(I,'MinDiversity',0.7,'MaxVariation',0.2,'Delta',10) ;
% compute regions mask
M = zeros(size(I)) ;
for x=r'
s = vl_erfill(I,x) ;
M(s) = M(s) + 1;
end
% adjust convention
f = vl_ertr(f) ;
figure(1) ;
hold on ;
h1 = vl_plotframe(f) ; set(h1,'color','y','linewidth',3) ;
h2 = vl_plotframe(f) ; set(h2,'color','k','linewidth',1) ;
vl_demo_print('mser_basic_frames') ;
figure(2) ; clf ; imagesc(I) ; hold on ;
colormap(gray(256)) ;
if vl_isoctave()
[c,h]=contour(M,(0:max(M(:)))+.5,'y','linewidth',3) ;
else
[c,h]=contour(M,(0:max(M(:)))+.5) ;
set(h,'color','y','linewidth',3) ;
end
axis equal ; axis off ;
vl_demo_print('mser_basic_contours') ;
% --------------------------------------------------------------------
% Run VL_MSER again
% --------------------------------------------------------------------
[r,f] = vl_mser(I,'MinDiversity',0.7,'MaxVariation',0.2,...
'Delta',10,'BrightOnDark',1,'DarkOnBright',0) ;
% adjust convention
f = vl_ertr(f) ;
% compute regions mask
M = zeros(size(I)) ;
for x=r'
s = vl_erfill(I,x) ;
M(s) = M(s) + 1;
end
figure(1) ;
hold on ;
h1 = vl_plotframe(f) ; set(h1,'color','g','linewidth',3) ;
h2 = vl_plotframe(f) ; set(h2,'color','k','linewidth',1) ;
vl_demo_print('mser_basic_frames_both') ;
figure(2) ;
if vl_isoctave()
[c,h]=contour(M,(0:max(M(:)))+.5,'y','linewidth',3) ;
else
[c,h]=contour(M,(0:max(M(:)))+.5) ;
set(h,'color','g','linewidth',3) ;
end
hold on ; axis equal ; axis off ;
vl_demo_print('mser_basic_contours_both') ;