Code covered by the BSD License  

Highlights from
Grab 2D points

image thumbnail
from Grab 2D points by Nassim Khaled
This code is used to digitize 2d figures that you find in publications, journals, or simply scanned

grabbing(varargin)
function varargout = grabbing(varargin)
% GRABBING M-file for grabbing.fig
%      GRABBING, by itself, creates a new GRABBING or raises the existing
%      singleton*.
%
%      H = GRABBING returns the handle to a new GRABBING or the handle to
%      the existing singleton*.
%
%      GRABBING('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in GRABBING.M with the given input arguments.
%
%      GRABBING('Property','Value',...) creates a new GRABBING or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before grabbing_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to grabbing_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Copyright 2002-2003 The MathWorks, Inc.

% Edit the above text to modify the response to help grabbing

% Last Modified by GUIDE v2.5 08-Jun-2007 17:47:51

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @grabbing_OpeningFcn, ...
                   'gui_OutputFcn',  @grabbing_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before grabbing is made visible.
function grabbing_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to grabbing (see VARARGIN)

% Choose default command line output for grabbing
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes grabbing wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = grabbing_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;



function xmin_Callback(hObject, eventdata, handles)
% hObject    handle to xmin (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of xmin as text
%        str2double(get(hObject,'String')) returns contents of xmin as a double


% --- Executes during object creation, after setting all properties.
function xmin_CreateFcn(hObject, eventdata, handles)
% hObject    handle to xmin (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end


% --- Executes on button press in Press_when_done.
function Press_when_done_Callback(hObject, eventdata, handles)
% hObject    handle to Press_when_done (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% imshow(a)
% load h
close
button=0;
X=[];
Y=[];
while button~=3
    [x,y,button]=ginput(1);
    plot(x,y,'g+');
    if button~=3
        X=[X,x];
        Y=[Y,y];
    end
    plot(X,Y,'LineWidth',4);
end

load x_min
load x_max
load y_min
load y_max
load x_xaxis_origin
load y_yaxis_origin
load x_xaxis_maximum
load y_yaxis_maximum


Lx=(x_max-x_min)/(x_xaxis_maximum-x_xaxis_origin);
Ly=(y_max-y_min)/(y_yaxis_maximum-y_yaxis_origin);
X=x_min+Lx.*(X-x_xaxis_origin);
Y=y_min+Ly.*(Y-y_yaxis_origin);
save X
save Y
V=[X;Y]';
save V
GRABBED=sort_first_column_permute_second(V);
X=GRABBED(:,1);
Y=GRABBED(:,2);
save GRABBED X Y ;
clear x_min x_max y_min y_max x_xaxis_origin y_yaxis_origin x_xaxis_maximum y_yaxis_maximum
figure
plot(X,Y);
figure(gcf)






Contact us at files@mathworks.com