Code covered by the BSD License  

Highlights from
Gravity Measurement Case Study

image thumbnail

Gravity Measurement Case Study

by

 

08 Jul 2003 (Updated )

Scientific imaging case study with MATLAB and toolboxes.

select_region.m
% select_region.m

% Copyright 2003-2010 The MathWorks, Inc.

f = squeeze(uint8(mean(f,3)));  %RGB color to grayscale conversion
avg = mean(f,3);                %composite leaves traces of moving objects
bg = median(double(f),3);       %ensemble median average minimizes motion

%difference image highlights circular path of motion
arcPath = imabsdiff(avg,bg);
figure, imshow(arcPath,[])
title('Click-drag-release to select region of interest')

% %user select region
% h=msgbox('Select region of interest.','ROI');
% set(h,'WindowStyle','Modal')
% waitfor(h)
  
done=false;
while ~done
  [subIm,roi]=imcrop;
  %wait for user to select region of interest (click-drag rubberband box)

  %determine corners of selected region
  x1=roi(1);  x2=roi(1)+roi(3);  xx=[x1 x1 x2 x2 x1];
  y1=roi(2);  y2=roi(2)+roi(4);  yy=[y1 y2 y2 y1 y1];
  %draw rectangle to indicate selected region
  hLine=line(xx,yy);
  title('Click inside to keep, outside to select again')
  pt=ginput(1);
  %wait for user to keep or discard selected region

  % check: is point inside region?
  if pt(1)>=roi(1) & pt(1)<=roi(1)+roi(3) & pt(2)>=roi(2) & pt(2)<=roi(2)+roi(4)
    done=true;  %exit loop
  else
    delete(hLine)   %remove previous selection
    title('Click-drag-release to select region of interest')
    %loop around to select another region
  end
end

% %display cropped region
% imshow(subIm,'notruesize')
% title('Selected region of interest')

% %convert RGB color frames to grayscale
% f = squeeze(mean(f,3));

%crop all frames; display cropped footage
f2 = zeros([size(subIm,1) size(subIm,2) nFrames]);  %allocate for cropped footage
shg, set(gcf,'doublebuffer','on')
for i=1:nFrames
  f2(:,:,i)=imcrop(f(:,:,i),roi);
  imshow(uint8(f2(:,:,i)))
  title(sprintf('Frame %d, t = %.2f sec',i,t(i)))
  drawnow, pause(0.1)
end
set(gcf,'doublebuffer','off')

f=f2; clear f2

Contact us