source: trunk/src/uvmat_doc/FUNCTIONS_DOC/probe_calib.html @ 37

Last change on this file since 37 was 37, checked in by sommeria, 14 years ago

create_grid.fig ,
uvmat_doc and all the included files added

File size: 65.3 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2                "http://www.w3.org/TR/REC-html40/loose.dtd">
3<html>
4<head>
5  <title>Description of probe_calib</title>
6  <meta name="keywords" content="probe_calib">
7  <meta name="description" content="'probe_calib': performs geometric calibration from a set of reference points">
8  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
9  <meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
10  <meta name="robots" content="index, follow">
11  <link type="text/css" rel="stylesheet" href="../m2html.css">
12</head>
13<body>
14<a name="_top"></a>
15<div><a href="../index.html">Home</a> &gt;  <a href="index.html">.</a> &gt; probe_calib.m</div>
16
17<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td>
18<td align="right"><a href="index.html">Index for .&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
19
20<h1>probe_calib
21</h1>
22
23<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
24<div class="box"><strong>'probe_calib': performs geometric calibration from a set of reference points</strong></div>
25
26<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
27<div class="box"><strong>function varargout = probe_calib(varargin) </strong></div>
28
29<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
30<div class="fragment"><pre class="comment">'probe_calib': performs geometric calibration from a set of reference points
31 PROBE_CALIB M-file for probe_calib.fig
32      PROBE_CALIB, by itself, creates a MenuCoord PROBE_CALIB or raises the existing
33      singleton*.
34
35      H = PROBE_CALIB returns the handle to a MenuCoord PROBE_CALIB or the handle to
36      the existing singleton*.
37
38      PROBE_CALIB('CALLBACK',hObject,eventData,handles,...) calls the local
39      function named CALLBACK in PROBE_CALIB.M with the given input arguments.
40
41      PROBE_CALIB('Property','Value',...) creates a MenuCoord PROBE_CALIB or raises the
42      existing singleton*.  Starting from the left, property value pairs are
43      applied to the GUI before probe_calib_OpeningFunction gets called.  An
44      unrecognized property name or invalid value makes property application
45      stop.  All inputs are passed to probe_calib_OpeningFcn via varargin.
46
47      *See GUI Options on GUIDE's Tools menu.  Choose &quot;GUI allows only one
48      instance to run (singleton)&quot;.
49
50 See also: GUIDE, GUIDATA, GUIHANDLES</pre></div>
51
52<!-- crossreference -->
53<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
54This function calls:
55<ul style="list-style-image:url(../matlabicon.gif)">
56<li><a href="cell2tab.html" class="code" title="function Tabchar=cell2tab(Tabcell,separator)">cell2tab</a>      'cell2tab': transform a Matlab cell in a character array suitable for display in a table</li><li><a href="delete_object.html" class="code" title="function delete_object(hObject)">delete_object</a>    'delete_object': delete a projection object, defined by its index in the Uvmat list or by its graphic handle</li><li><a href="name2display.html" class="code" title="function [RootPath,RootFile,field_count,str2,str_a,str_b,ext,nom_type,subdir]=name2display(fileinput)">name2display</a>    'name2display': extracts the root name and field numbers from an input filename</li><li><a href="plot_field.html" class="code" title="function [PlotType,PlotParamOut,haxes]= plot_field(Data,haxes,PlotParam,KeepLim,PosColorbar)">plot_field</a>      'plot_field': plot any field with the structure defined in the uvmat package</li><li><a href="plot_object.html" class="code" title="function [hh]=plot_object(ObjectDataIn,ProjObject,hplot,col)">plot_object</a>       'plot_object': draws a projection object (points, line, plane...)</li><li><a href="px.html" class="code" title="function [DataOut,DataOut_1]=px(Data,CalibData,Data_1,CalibData_1)%DataIn,Calib)">px</a>        'px': transform fields from physical coordinates (phys) to image (px) coordinates</li><li><a href="px_XYZ.html" class="code" title="function [X,Y]=px_XYZ(Calib,Xphys,Yphys,Zphys)">px_XYZ</a>  'px_XYZ': transform phys coordinates to image coordinates (px)</li><li><a href="struct2xml.html" class="code" title="function t=struct2xml(Object,t,root_uid)">struct2xml</a>   'struct2xml': transform a matlab structure to a xml tree.</li><li><a href="uvmat.html" class="code" title="function varargout = uvmat(varargin)">uvmat</a>      'uvmat': function associated with the GUI 'uvmat.fig' for images and data field visualization</li><li><a href="warndlg_uvmat.html" class="code" title="function hwarn=warndlg_uvmat(warntext,title)">warndlg_uvmat</a>  'warndlg_uvmat': display warning message (error, warning, confirmation) in a given figure</li></ul>
57This function is called by:
58<ul style="list-style-image:url(../matlabicon.gif)">
59</ul>
60<!-- crossreference -->
61
62<h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
63<ul style="list-style-image:url(../matlabicon.gif)">
64<li><a href="#_sub1" class="code">function probe_calib_OpeningFcn(hObject, eventdata, handles, data,pos,inputfile)</a></li><li><a href="#_sub2" class="code">function varargout = probe_calib_OutputFcn(hObject, eventdata, handles)</a></li><li><a href="#_sub3" class="code">function Phi_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub4" class="code">function import_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub5" class="code">function loadfile(handles,fileinput)</a></li><li><a href="#_sub6" class="code">function closefcn(gcbo,eventdata)</a></li><li><a href="#_sub7" class="code">function edit_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub8" class="code">function MenuCoord_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub9" class="code">function delete_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub10" class="code">function calib_offset_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub11" class="code">function calib_lin_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub12" class="code">function translation_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub13" class="code">function T_x_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub14" class="code">function T_y_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub15" class="code">function T_z_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub16" class="code">function rotation_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub17" class="code">function XImage_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub18" class="code">function YImage_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub19" class="code">function XObject_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub20" class="code">function YObject_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub21" class="code">function ZObject_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub22" class="code">function update_list(hObject, eventdata, handles)</a></li><li><a href="#_sub23" class="code">function data=read_probe_calib(handles)</a></li><li><a href="#_sub24" class="code">function ListCoord_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub25" class="code">function translation_plus_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub26" class="code">function translation_minus_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub27" class="code">function translation(handles,T)</a></li><li><a href="#_sub28" class="code">function rotation_plus_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub29" class="code">function rotation_minus_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub30" class="code">function rotation(handles,Phi)</a></li><li><a href="#_sub31" class="code">function O_x_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub32" class="code">function O_y_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub33" class="code">function O_z_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub34" class="code">function edit_append_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub35" class="code">function NEW_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub36" class="code">function HELP_Callback(hObject, eventdata, handles)</a></li><li><a href="#_sub37" class="code">function key_press_fcn(hObject,eventdata,handles)</a></li></ul>
65<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
66<div class="fragment"><pre>0001 <span class="comment">%'probe_calib': performs geometric calibration from a set of reference points</span>
670002 <a name="_sub0" href="#_subfunctions" class="code">function varargout = probe_calib(varargin)</a>
680003 <span class="comment">% PROBE_CALIB M-file for probe_calib.fig</span>
690004 <span class="comment">%      PROBE_CALIB, by itself, creates a MenuCoord PROBE_CALIB or raises the existing</span>
700005 <span class="comment">%      singleton*.</span>
710006 <span class="comment">%</span>
720007 <span class="comment">%      H = PROBE_CALIB returns the handle to a MenuCoord PROBE_CALIB or the handle to</span>
730008 <span class="comment">%      the existing singleton*.</span>
740009 <span class="comment">%</span>
750010 <span class="comment">%      PROBE_CALIB('CALLBACK',hObject,eventData,handles,...) calls the local</span>
760011 <span class="comment">%      function named CALLBACK in PROBE_CALIB.M with the given input arguments.</span>
770012 <span class="comment">%</span>
780013 <span class="comment">%      PROBE_CALIB('Property','Value',...) creates a MenuCoord PROBE_CALIB or raises the</span>
790014 <span class="comment">%      existing singleton*.  Starting from the left, property value pairs are</span>
800015 <span class="comment">%      applied to the GUI before probe_calib_OpeningFunction gets called.  An</span>
810016 <span class="comment">%      unrecognized property name or invalid value makes property application</span>
820017 <span class="comment">%      stop.  All inputs are passed to probe_calib_OpeningFcn via varargin.</span>
830018 <span class="comment">%</span>
840019 <span class="comment">%      *See GUI Options on GUIDE's Tools menu.  Choose &quot;GUI allows only one</span>
850020 <span class="comment">%      instance to run (singleton)&quot;.</span>
860021 <span class="comment">%</span>
870022 <span class="comment">% See also: GUIDE, GUIDATA, GUIHANDLES</span>
880023
890024 <span class="comment">% Edit the above text to modify the response to help probe_calib</span>
900025
910026 <span class="comment">% Last Modified by GUIDE v2.5 04-Feb-2008 15:46:42</span>
920027
930028 <span class="comment">% Begin initialization code - DO NOT EDIT</span>
940029 gui_Singleton = 1;
950030 gui_State = struct(<span class="string">'gui_Name'</span>,       mfilename, <span class="keyword">...</span>
960031                    <span class="string">'gui_Singleton'</span>,  gui_Singleton, <span class="keyword">...</span>
970032                    <span class="string">'gui_OpeningFcn'</span>, @<a href="#_sub1" class="code" title="subfunction probe_calib_OpeningFcn(hObject, eventdata, handles, data,pos,inputfile)">probe_calib_OpeningFcn</a>, <span class="keyword">...</span>
980033                    <span class="string">'gui_OutputFcn'</span>,  @<a href="#_sub2" class="code" title="subfunction varargout = probe_calib_OutputFcn(hObject, eventdata, handles)">probe_calib_OutputFcn</a>, <span class="keyword">...</span>
990034                    <span class="string">'gui_LayoutFcn'</span>,  [] , <span class="keyword">...</span>
1000035                    <span class="string">'gui_Callback'</span>,   []);
1010036 <span class="keyword">if</span> nargin &amp; isstr(varargin{1})
1020037     gui_State.gui_Callback = str2func(varargin{1});
1030038 <span class="keyword">end</span>
1040039
1050040 <span class="keyword">if</span> nargout
1060041     [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
1070042 <span class="keyword">else</span>
1080043     gui_mainfcn(gui_State, varargin{:});
1090044 <span class="keyword">end</span>
1100045 <span class="comment">% End initialization code - DO NOT EDIT</span>
1110046
1120047
1130048 <span class="comment">% --- Executes just before probe_calib is made visible.</span>
1140049 <span class="comment">%INPUT:</span>
1150050 <span class="comment">%handles: handles of the probe_calib interface elements</span>
1160051 <span class="comment">% PlotHandles: set of handles of the elements contolling the plotting</span>
1170052 <span class="comment">% parameters on the uvmat interface (obtained by 'get_plot_handle.m')</span>
1180053 <a name="_sub1" href="#_subfunctions" class="code">function probe_calib_OpeningFcn(hObject, eventdata, handles, data,pos,inputfile)</a>
1190054
1200055 <span class="comment">% Choose default command line output for probe_calib</span>
1210056 handles.output = hObject;
1220057
1230058 <span class="comment">% Update handles structure</span>
1240059 guidata(hObject, handles);
1250060
1260061 <span class="comment">%default</span>
1270062 <span class="comment">% set(hObject,'Unit','Normalized')% set the unit normalized to the screen size</span>
1280063 <span class="comment">% set(hObject,'Position',[0.7 0.1 0.25 0.5])%set the position of the probe_calib interface</span>
1290064 set(hObject,<span class="string">'DeleteFcn'</span>,@<a href="#_sub6" class="code" title="subfunction closefcn(gcbo,eventdata)">closefcn</a>)
1300065
1310066 <span class="comment">%set the position of the interface</span>
1320067 <span class="keyword">if</span> exist(<span class="string">'pos'</span>,<span class="string">'var'</span>)&amp; length(pos)&gt;2
1330068     pos_gui=get(hObject,<span class="string">'Position'</span>);
1340069     pos_gui(1)=pos(1);
1350070     pos_gui(2)=pos(2);
1360071     set(hObject,<span class="string">'Position'</span>,pos_gui);
1370072 <span class="keyword">end</span>
1380073 <span class="comment">% set(handles.XImage,'String','')</span>
1390074 <span class="comment">% set(handles.YImage,'String','')</span>
1400075 <span class="comment">% set(handles.XObject,'String','')</span>
1410076 <span class="comment">% set(handles.YObject,'String','')</span>
1420077 <span class="comment">% set(handles.ZObject,'String','')</span>
1430078 inputxml=<span class="string">''</span>;
1440079 <span class="keyword">if</span> exist(<span class="string">'inputfile'</span>,<span class="string">'var'</span>)&amp; ~isempty(inputfile)
1450080     [Path,Name,ext]=fileparts(inputfile);
1460081     <span class="keyword">if</span> isequal(ext,<span class="string">'.png'</span>)
1470082         set(hObject,<span class="string">'UserData'</span>,inputfile)
1480083         [Pathsub,RootFile,field_count,str2,str_a,str_b,ext,nom_type,subdir]=<a href="name2display.html" class="code" title="function [RootPath,RootFile,field_count,str2,str_a,str_b,ext,nom_type,subdir]=name2display(fileinput)">name2display</a>(inputfile);
1490084         inputxml=[fullfile(Pathsub,RootFile) <span class="string">'.xml'</span>];
1500085     <span class="keyword">end</span>   
1510086 <span class="keyword">end</span>
1520087 <span class="keyword">if</span> exist(inputxml,<span class="string">'file'</span>)
1530088     <a href="#_sub5" class="code" title="subfunction loadfile(handles,fileinput)">loadfile</a>(handles,inputxml)
1540089 <span class="keyword">end</span>
1550090 set(handles.ListCoord,<span class="string">'KeyPressFcn'</span>,{@<a href="#_sub37" class="code" title="subfunction key_press_fcn(hObject,eventdata,handles)">key_press_fcn</a>,handles})<span class="comment">%set keyboard action function</span>
1560091
1570092
1580093 <span class="comment">% --- Outputs from this function are returned to the command line.</span>
1590094 <a name="_sub2" href="#_subfunctions" class="code">function varargout = probe_calib_OutputFcn(hObject, eventdata, handles)</a>
1600095 <span class="comment">% varargout  cell array for returning output args (see VARARGOUT);</span>
1610096 <span class="comment">% hObject    handle to figure</span>
1620097 <span class="comment">% eventdata  reserved - to be defined in a future version of MATLAB</span>
1630098 <span class="comment">% handles    structure with handles and user data (see GUIDATA)</span>
1640099
1650100 <span class="comment">% Get default command line output from handles structure</span>
1660101 varargout{1} = handles.output;
1670102 varargout{2}=handles;
1680103
1690104 <span class="comment">%------------</span>
1700105 <a name="_sub3" href="#_subfunctions" class="code">function Phi_Callback(hObject, eventdata, handles)</a>
1710106
1720107
1730108 <span class="comment">%-----------------------------------------------------</span>
1740109 <span class="comment">% --- Executes on button press in import.</span>
1750110 <a name="_sub4" href="#_subfunctions" class="code">function import_Callback(hObject, eventdata, handles)</a>
1760111 <span class="comment">%get the object file</span>
1770112 huvmat=findobj(<span class="string">'Tag'</span>,<span class="string">'uvmat'</span>);
1780113 UvData=get(huvmat,<span class="string">'UserData'</span>);
1790114 hchild=get(huvmat,<span class="string">'Children'</span>);
1800115 hrootpath=findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'RootPath'</span>);
1810116 oldfile=get(hrootpath,<span class="string">'String'</span>);
1820117 <span class="keyword">if</span> isempty(oldfile)
1830118     oldfile=<span class="string">''</span>;
1840119 <span class="keyword">end</span>
1850120 <span class="comment">%[FileName,PathName] = uigetfile('*.civ','Select a .civ file',oldfile)</span>
1860121 [FileName, PathName, filterindex] = uigetfile( <span class="keyword">...</span>
1870122        {<span class="string">'*.xml;*.mat'</span>, <span class="string">' (*.xml,*.mat)'</span>;
1880123        <span class="string">'*.xml'</span><span class="string">'.xml files '</span>; <span class="keyword">...</span>
1890124         <span class="string">'*.mat'</span><span class="string">'.mat matlab files '</span>}, <span class="keyword">...</span>
1900125         <span class="string">'Pick a file'</span>,oldfile);
1910126 fileinput=[PathName FileName];<span class="comment">%complete file name</span>
1920127 testblank=findstr(fileinput,<span class="string">' '</span>);<span class="comment">%look for blanks</span>
1930128 <span class="keyword">if</span> ~isempty(testblank)
1940129     <a href="warndlg_uvmat.html" class="code" title="function hwarn=warndlg_uvmat(warntext,title)">warndlg_uvmat</a>(<span class="string">'forbidden input file name or path: no blank character allowed'</span>,<span class="string">'ERROR'</span>)
1950130     <span class="keyword">return</span>
1960131 <span class="keyword">end</span>
1970132 sizf=size(fileinput);
1980133 <span class="keyword">if</span> (~ischar(fileinput)|~isequal(sizf(1),1)),<span class="keyword">return</span>;<span class="keyword">end</span>
1990134 <a href="#_sub5" class="code" title="subfunction loadfile(handles,fileinput)">loadfile</a>(handles,fileinput)
2000135
2010136 <span class="comment">%--------------------------------------------------</span>
2020137 <span class="comment">%read input xml file and update the edit boxes</span>
2030138 <a name="_sub5" href="#_subfunctions" class="code">function loadfile(handles,fileinput)</a>
2040139
2050140 <span class="comment">%read the input xml file</span>
2060141 t=xmltree(fileinput);
2070142 s=convert(t);<span class="comment">%convert to matlab structure</span>
2080143
2090144 <span class="comment">%read data currently displayed on the interface</span>
2100145 PointCoord=[];
2110146 data=<a href="#_sub23" class="code" title="subfunction data=read_probe_calib(handles)">read_probe_calib</a>(handles);
2120147 Coord=[]; <span class="comment">%default</span>
2130148 <span class="keyword">if</span> isfield(data,<span class="string">'Coord'</span>)
2140149     Coord=data.Coord;
2150150 <span class="keyword">end</span>
2160151 TabChar_0=get(handles.ListCoord,<span class="string">'String'</span>);
2170152 nbcoord_0=size(TabChar_0,1);
2180153 <span class="keyword">if</span> isequal(get(handles.edit_append,<span class="string">'Value'</span>),1) <span class="comment">%edit mode</span>
2190154     val=get(handles.ListCoord,<span class="string">'Value'</span>)-1;
2200155 <span class="keyword">else</span>
2210156    val=length(TabChar_0);
2220157 <span class="keyword">end</span>
2230158 nbcoord=0;
2240159
2250160 <span class="comment">%case of calibration (ImaDoc) input file</span>
2260161 <span class="keyword">if</span> isfield(s,<span class="string">'GeometryCalib'</span>)
2270162     Calib=s.GeometryCalib;
2280163     <span class="keyword">if</span> isfield(Calib,<span class="string">'SourceCalib'</span>)
2290164         <span class="keyword">if</span> isfield(Calib.SourceCalib,<span class="string">'PointCoord'</span>)
2300165             PointCoord=Calib.SourceCalib.PointCoord;
2310166         <span class="keyword">end</span>
2320167         <span class="keyword">if</span> isfield(Calib.SourceCalib,<span class="string">'ImageCalib'</span>)
2330168             hcalib=get(handles.import,<span class="string">'parent'</span>);
2340169             set(hcalib,<span class="string">'UserData'</span>,Calib.SourceCalib.ImageCalib);<span class="comment">%store the source image name in the interface 'UserData'</span>
2350170         <span class="keyword">end</span>
2360171     <span class="keyword">end</span>
2370172     nbcoord=length(PointCoord);
2380173     <span class="keyword">if</span> ~isfield(Calib,<span class="string">'ErrorRms'</span>)&amp;~isfield(Calib,<span class="string">'ErrorMax'</span>) <span class="comment">%old convention of Gauthier (cord in mm)</span>
2390174         <span class="keyword">for</span> i=1:length(PointCoord)
2400175           line=str2num(PointCoord{i});
2410176           Coord(i+val,4:5)=line(4:5);<span class="comment">%px x</span>
2420177           Coord(i+val,1:3)=line(1:3)/10;<span class="comment">%phys x</span>
2430178         <span class="keyword">end</span>
2440179     <span class="keyword">else</span>
2450180         <span class="keyword">for</span> i=1:length(PointCoord)
2460181           line=str2num(PointCoord{i});
2470182           Coord(i,4:5)=line(4:5);<span class="comment">%px x</span>
2480183           Coord(i,1:3)=line(1:3);<span class="comment">%phys x</span>
2490184        <span class="keyword">end</span>
2500185     <span class="keyword">end</span>
2510186 <span class="keyword">end</span>
2520187
2530188 <span class="comment">%case of xml files of points</span>
2540189 <span class="keyword">if</span> isfield(s,<span class="string">'Coord'</span>)
2550190     PointCoord=s.Coord;
2560191     nbcoord=length(PointCoord);
2570192      <span class="comment">%case of image coordinates</span>
2580193     <span class="keyword">if</span> isfield(s,<span class="string">'CoordType'</span>)&amp; isequal(s.CoordType,<span class="string">'px'</span>)
2590194         <span class="keyword">for</span> i=1:nbcoord
2600195            line=str2num(PointCoord{i});
2610196            Coord(i+val,4:5)=line(1:2);
2620197         <span class="keyword">end</span>
2630198      <span class="comment">%case of  physical coordinates</span>
2640199     <span class="keyword">else</span>
2650200         <span class="keyword">for</span> i=1:nbcoord
2660201            line=str2num(PointCoord{i})
2670202            Coord(i+val,1:3)=line(1:3);
2680203            nbcolumn=size(Coord,2);
2690204            <span class="keyword">if</span> nbcolumn&lt;5
2700205                Coord(i+val,nbcolumn+1:5)=zeros(1,5-nbcolumn);
2710206            <span class="keyword">end</span>
2720207         <span class="keyword">end</span>
2730208      <span class="keyword">end</span>
2740209 <span class="keyword">end</span>
2750210 CoordCell={};
2760211 <span class="keyword">for</span> iline=1:size(Coord,1)
2770212     <span class="keyword">for</span> j=1:5
2780213         CoordCell{iline,j}=num2str(Coord(iline,j));
2790214     <span class="keyword">end</span>
2800215 <span class="keyword">end</span>
2810216         
2820217 Tabchar=<a href="cell2tab.html" class="code" title="function Tabchar=cell2tab(Tabcell,separator)">cell2tab</a>(CoordCell,<span class="string">'    |    '</span>);<span class="comment">%transform cells into table ready for display</span>
2830218 set(handles.ListCoord,<span class="string">'Value'</span>,1)
2840219 set(handles.ListCoord,<span class="string">'String'</span>,Tabchar)
2850220
2860221
2870222 <span class="comment">%----------------------------------------------------</span>
2880223 <span class="comment">% executed when closing: set the parent interface button to value 0</span>
2890224 <a name="_sub6" href="#_subfunctions" class="code">function closefcn(gcbo,eventdata)</a>
2900225 SetData=get(gcbf,<span class="string">'UserData'</span>);
2910226 <span class="keyword">if</span> isfield(SetData,<span class="string">'ParentButton'</span>) &amp; ishandle(SetData.ParentButton)
2920227     set(SetData.ParentButton, <span class="string">'Value'</span>,0)
2930228 <span class="keyword">end</span>
2940229
2950230 <span class="comment">%-----------------------------------------------------------------------</span>
2960231 <span class="comment">% --- Executes on button press in edit: PLOT the defined object and its projected field</span>
2970232 <a name="_sub7" href="#_subfunctions" class="code">function edit_Callback(hObject, eventdata, handles)</a>
2980233 <span class="comment">%hsetobject=get(hObject,'parent');</span>
2990234 <span class="comment">%SetData=get(hsetobject,'UserData');%get the hidden interface data</span>
3000235 <span class="comment">%IndexObj=SetData.IndexObj;%index of the current projection object in the list of projection objects (UvData.ProjObject)</span>
3010236 huvmat=findobj(allchild(0),<span class="string">'name'</span>,<span class="string">'uvmat'</span>);<span class="comment">%find the current uvmat interface handle</span>
3020237 UvData=get(huvmat,<span class="string">'UserData'</span>);<span class="comment">%Data associated to the current uvmat interface</span>
3030238 hplot=findobj(huvmat,<span class="string">'Tag'</span>,<span class="string">'axes3'</span>);
3040239 h_menu_coord=findobj(huvmat,<span class="string">'Tag'</span>,<span class="string">'menu_coord'</span>);
3050240 menu=get(h_menu_coord,<span class="string">'String'</span>);
3060241 choice=get(h_menu_coord,<span class="string">'Value'</span>);
3070242 <span class="keyword">if</span> iscell(menu)
3080243     option=menu{choice};
3090244 <span class="keyword">else</span>
3100245     option=<span class="string">'px'</span>; <span class="comment">%default</span>
3110246 <span class="keyword">end</span>
3120247 <span class="comment">%get axis</span>
3130248 <span class="comment">%get CoordType</span>
3140249 ObjectData=<a href="#_sub23" class="code" title="subfunction data=read_probe_calib(handles)">read_probe_calib</a>(handles);<span class="comment">%read the interface input parameters defining the object</span>
3150250 <span class="keyword">if</span> isequal(option,<span class="string">'phys'</span>)
3160251     ObjectData.Coord=ObjectData.Coord(:,[1:3]);
3170252 <span class="keyword">elseif</span> isequal(option,<span class="string">'px'</span>)
3180253     ObjectData.Coord=ObjectData.Coord(:,[4:5]);
3190254 <span class="keyword">else</span>
3200255     errordlg(<span class="string">'the choice in coord_coord must be px or phys '</span>)
3210256 <span class="keyword">end</span>
3220257 <span class="comment">% [UvData,IndexObj]=update_obj(UvData,IndexObj,ObjectData,SetData.PlotHandles);</span>
3230258 <span class="comment">% SetData.IndexObj=IndexObj;</span>
3240259 <span class="comment">% set(gcbf,'UserData',SetData)%update object index in the probe_calib interface</span>
3250260 <span class="comment">% set(huvmat,'UserData',UvData)%update the data in the uvmat interface</span>
3260261 ObjectData.ProjMode=<span class="string">'none'</span>;
3270262 <a href="plot_object.html" class="code" title="function [hh]=plot_object(ObjectDataIn,ProjObject,hplot,col)">plot_object</a>(ObjectData,[],hplot,<span class="string">'b'</span>);
3280263
3290264
3300265 <span class="comment">% --- Executes on button press in MenuCoord.</span>
3310266 <a name="_sub8" href="#_subfunctions" class="code">function MenuCoord_Callback(hObject, eventdata, handles)</a>
3320267
3330268
3340269 <span class="comment">% --- Executes on button press in delete.</span>
3350270 <a name="_sub9" href="#_subfunctions" class="code">function delete_Callback(hObject, eventdata, handles)</a>
3360271 SetData=get(gcbf,<span class="string">'UserData'</span>);<span class="comment">%get the interface data</span>
3370272 IndexObj=SetData.IndexObj;
3380273 <a href="delete_object.html" class="code" title="function delete_object(hObject)">delete_object</a>(IndexObj);
3390274
3400275 <span class="comment">% --- Executes on button press in calibrate_lin.</span>
3410276 <a name="_sub10" href="#_subfunctions" class="code">function calib_offset_Callback(hObject, eventdata, handles)</a>
3420277 Object=<a href="#_sub23" class="code" title="subfunction data=read_probe_calib(handles)">read_probe_calib</a>(handles);
3430278
3440279 <span class="comment">%make linear calibration</span>
3450280 <span class="comment">% 'calibration_lin' provides a linear transform on coordinates,</span>
3460281 X=Object.Coord(:,1);
3470282 Y=Object.Coord(:,2);
3480283 x_ima=Object.Coord(:,4);
3490284 y_ima=Object.Coord(:,5);
3500285 [<a href="px.html" class="code" title="function [DataOut,DataOut_1]=px(Data,CalibData,Data_1,CalibData_1)%DataIn,Calib)">px</a>,sx]=polyfit(X,x_ima,1);
3510286 [py,sy]=polyfit(Y,y_ima,1);
3520287 <span class="comment">%err_X1=max(abs(x1-x_ima));%error</span>
3530288 <span class="comment">%err_Y1=max(abs(y1-y_ima));%error</span>
3540289 T_x=<a href="px.html" class="code" title="function [DataOut,DataOut_1]=px(Data,CalibData,Data_1,CalibData_1)%DataIn,Calib)">px</a>(2);
3550290 T_y=py(2);
3560291 GeometryCalib.focal=1;
3570292 GeometryCalib.Tx_Ty_Tz=[T_x T_y 1];
3580293 GeometryCalib.R=[<a href="px.html" class="code" title="function [DataOut,DataOut_1]=px(Data,CalibData,Data_1,CalibData_1)%DataIn,Calib)">px</a>(1),0,0;0,py(1),0;0,0,1];
3590294 <span class="comment">%check error</span>
3600295 Calib.dpx=1;
3610296 Calib.dpy=1;
3620297 Calib.sx=1;
3630298 Calib.Cx=0;
3640299 Calib.Cy=0;
3650300 Calib.Tz=1;
3660301 Calib.kappa1=0;
3670302 Calib.f=GeometryCalib.focal;
3680303 Calib.Tx=T_x;
3690304 Calib.Ty=T_y;
3700305 Calib.R=GeometryCalib.R;
3710306 [Xpoints,Ypoints]=<a href="px_XYZ.html" class="code" title="function [X,Y]=px_XYZ(Calib,Xphys,Yphys,Zphys)">px_XYZ</a>(Calib,X,Y,0);
3720307 GeometryCalib.ErrorRms(1)=sqrt(mean((Xpoints-x_ima).*(Xpoints-x_ima)));
3730308 GeometryCalib.ErrorMax(1)=max(abs(Xpoints-x_ima));
3740309 GeometryCalib.ErrorRms(2)=sqrt(mean((Ypoints-y_ima).*(Ypoints-y_ima)));
3750310 GeometryCalib.ErrorMax(2)=max(abs(Ypoints-y_ima))
3760311 <span class="comment">%calibrate_lin calibration results and point coordinates</span>
3770312 huvmat=findobj(<span class="string">'Tag'</span>,<span class="string">'uvmat'</span>);
3780313 hchild=get(huvmat,<span class="string">'Children'</span>);
3790314 hrootpath=findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'RootPath'</span>);
3800315 hrootfile=findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'RootFile'</span>);
3810316 RootPath=<span class="string">''</span>;
3820317 RootFile=<span class="string">''</span>;
3830318 <span class="keyword">if</span> ~isempty(hrootpath)&amp; ~isempty(hrootfile)
3840319     testhandle=1;
3850320     RootPath=get(hrootpath,<span class="string">'String'</span>);
3860321     RootFile=get(hrootfile,<span class="string">'String'</span>);
3870322     filebase=fullfile(RootPath,RootFile);
3880323     outputfile=[filebase <span class="string">'.xml'</span>]
3890324 <span class="keyword">else</span>
3900325     question={<span class="string">'save the calibration data and point coordinates in'</span>};
3910326     def={fullfile(RootPath,[<span class="string">'ObjectCalib.xml'</span>])};
3920327     options.Resize=<span class="string">'on'</span>;
3930328     answer=inputdlg(question,<span class="string">'save average in a new file'</span>,1,def,options);
3940329     outputfile=answer{1};
3950330 <span class="keyword">end</span>
3960331 testappend=0;
3970332 <span class="keyword">if</span> exist(outputfile,<span class="string">'file'</span>);<span class="comment">%=1 if the output file already exists, 0 else</span>
3980333     t=xmltree(outputfile); <span class="comment">%read the file</span>
3990334     uid=find(t,<span class="string">'ImaDoc'</span>);
4000335     <span class="keyword">if</span> ~isequal(uid,1)<span class="comment">%if the xml file is not ImaDoc, delete it (after backup)</span>
4010336         backupfile=outputfile;
4020337         testexist=2;
4030338         <span class="keyword">while</span> testexist==2
4040339             backupfile=[backupfile <span class="string">'~'</span>];
4050340             testexist=exist(backupfile,<span class="string">'file'</span>);       
4060341         <span class="keyword">end</span>
4070342         [success,message]=copyfile(outputfile,backupfile);<span class="comment">%make backup</span>
4080343         <span class="keyword">if</span> isequal(success,1)
4090344             delete(outputfile)
4100345         <span class="keyword">else</span>
4110346             <span class="keyword">return</span>
4120347         <span class="keyword">end</span>
4130348     <span class="keyword">else</span>
4140349         uid_calib=find(t,<span class="string">'ImaDoc/GeometryCalib'</span>);
4150350         <span class="keyword">if</span> ~isempty(uid) <span class="comment">%if GeometryCalib already exists, delete its content</span>
4160351             backupfile=outputfile;
4170352             testexist=2;
4180353             <span class="keyword">while</span> testexist==2
4190354                 backupfile=[backupfile <span class="string">'~'</span>];
4200355                 testexist=exist(backupfile,<span class="string">'file'</span>);     
4210356             <span class="keyword">end</span>
4220357             [success,message]=copyfile(outputfile,backupfile)<span class="comment">%make backup</span>
4230358             <span class="keyword">if</span> isequal(success,1)
4240359                 delete(outputfile)
4250360             <span class="keyword">else</span>
4260361                 <span class="keyword">return</span>
4270362             <span class="keyword">end</span>
4280363             uid_child=children(t,uid_calib);
4290364             t=delete(t,uid_child);
4300365             testappend=1;
4310366         <span class="keyword">end</span>
4320367     <span class="keyword">end</span>
4330368 <span class="keyword">end</span>
4340369 <span class="keyword">if</span> ~testappend
4350370     t=xmltree;
4360371     t=set(t,1,<span class="string">'name'</span>,<span class="string">'ImaDoc'</span>);
4370372     [t,uid_calib]=add(t,1,<span class="string">'element'</span>,<span class="string">'GeometryCalib'</span>);
4380373 <span class="comment">%     t=struct2xml(GeometryCalib,t,uid_calib);</span>
4390374 <span class="keyword">end</span>
4400375 Object.Coord(:,[1:3])=Object.Coord(:,[1:3])*10; <span class="comment">%transform in</span>
4410376 GeometryCalib.SourceCalib.PointCoord=Object.Coord;
4420377 t=<a href="struct2xml.html" class="code" title="function t=struct2xml(Object,t,root_uid)">struct2xml</a>(GeometryCalib,t,uid_calib);
4430378 save(t,outputfile)
4440379
4450380 <a href="warndlg_uvmat.html" class="code" title="function hwarn=warndlg_uvmat(warntext,title)">warndlg_uvmat</a>([outputfile <span class="string">'updated with linear calibration data'</span>],<span class="string">'CONFIRMATION'</span>)
4460381
4470382 <span class="comment">%display image with new calibration in the currently opened uvmat interface</span>
4480383 Indices=get(findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'FileIndex'</span>),<span class="string">'String'</span>);
4490384 Ext=get(findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'FileExt'</span>),<span class="string">'String'</span>);
4500385 imagename=[fullfile(RootPath,RootFile) Indices Ext];
4510386 <span class="comment">% input.menu_coord=1;</span>
4520387 huvmat=<a href="uvmat.html" class="code" title="function varargout = uvmat(varargin)">uvmat</a>(imagename,1);<span class="comment">%open uvmat, set phys coord (Value 1)</span>
4530388
4540389
4550390
4560391 <span class="comment">% --- Executes on button press in calibrate_lin.</span>
4570392 <a name="_sub11" href="#_subfunctions" class="code">function calib_lin_Callback(hObject, eventdata, handles)</a>
4580393 Object=<a href="#_sub23" class="code" title="subfunction data=read_probe_calib(handles)">read_probe_calib</a>(handles);
4590394
4600395 <span class="comment">%make linear calibration</span>
4610396 <span class="comment">% 'calibration_lin' provides a linear transform on coordinates,</span>
4620397 X=Object.Coord(:,1);
4630398 Y=Object.Coord(:,2);
4640399 x_ima=Object.Coord(:,4);
4650400 y_ima=Object.Coord(:,5);
4660401 XY_mat=[ones(size(X)) X Y];
4670402 a_X1=XY_mat\x_ima; <span class="comment">%transformation matrix for X</span>
4680403 x1=XY_mat*a_X1;<span class="comment">%reconstruction</span>
4690404 err_X1=max(abs(x1-x_ima));<span class="comment">%error</span>
4700405 a_Y1=XY_mat\y_ima;<span class="comment">%transformation matrix for X</span>
4710406 y1=XY_mat*a_Y1;
4720407 err_Y1=max(abs(y1-y_ima));<span class="comment">%error</span>
4730408 T_x=a_X1(1);
4740409 T_y=a_Y1(1);
4750410 GeometryCalib.focal=1;
4760411 GeometryCalib.Tx_Ty_Tz=[T_x T_y 1];
4770412 GeometryCalib.R=[a_X1(2),a_X1(3),0;a_Y1(2),a_Y1(3),0;0,0,1];
4780413
4790414 <span class="comment">%check error</span>
4800415 GeometryCalib.ErrorRms(1)=sqrt(mean((x1-x_ima).*(x1-x_ima)));
4810416 GeometryCalib.ErrorMax(1)=max(abs(x1-x_ima));
4820417 GeometryCalib.ErrorRms(2)=sqrt(mean((y1-y_ima).*(y1-y_ima)));
4830418 GeometryCalib.ErrorMax(2)=max(abs(y1-y_ima))
4840419
4850420 <span class="comment">%calibrate_lin calibration results and point coordinates</span>
4860421 huvmat=findobj(<span class="string">'Tag'</span>,<span class="string">'uvmat'</span>);
4870422 hchild=get(huvmat,<span class="string">'Children'</span>);
4880423 hrootpath=findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'RootPath'</span>);
4890424 hrootfile=findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'RootFile'</span>);
4900425 RootPath=<span class="string">''</span>;
4910426 RootFile=<span class="string">''</span>;
4920427 <span class="keyword">if</span> ~isempty(hrootpath)&amp; ~isempty(hrootfile)
4930428     testhandle=1;
4940429     RootPath=get(hrootpath,<span class="string">'String'</span>);
4950430     RootFile=get(hrootfile,<span class="string">'String'</span>);
4960431     filebase=fullfile(RootPath,RootFile);
4970432     outputfile=[filebase <span class="string">'.xml'</span>];
4980433 <span class="keyword">else</span>
4990434     question={<span class="string">'save the calibration data and point coordinates in'</span>};
5000435     def={fullfile(RootPath,[<span class="string">'ObjectCalib.xml'</span>])};
5010436     options.Resize=<span class="string">'on'</span>;
5020437     answer=inputdlg(question,<span class="string">'save average in a new file'</span>,1,def,options);
5030438     outputfile=answer{1};
5040439 <span class="keyword">end</span>
5050440 testappend=0;
5060441 <span class="keyword">if</span> exist(outputfile,<span class="string">'file'</span>);<span class="comment">%=1 if the output file already exists, 0 else</span>
5070442     t=xmltree(outputfile); <span class="comment">%read the file</span>
5080443     uid=find(t,<span class="string">'ImaDoc'</span>);
5090444     <span class="keyword">if</span> ~isequal(uid,1)<span class="comment">%if the xml file is not ImaDoc, delete it (after backup)</span>
5100445         backupfile=outputfile;
5110446         testexist=2;
5120447         <span class="keyword">while</span> testexist==2
5130448             backupfile=[backupfile <span class="string">'~'</span>];
5140449             testexist=exist(backupfile,<span class="string">'file'</span>);       
5150450         <span class="keyword">end</span>
5160451         [success,message]=copyfile(outputfile,backupfile)<span class="comment">%make backup</span>
5170452         <span class="keyword">if</span> isequal(success,1);
5180453             delete(outputfile)
5190454         <span class="keyword">else</span>
5200455             <span class="keyword">return</span>
5210456         <span class="keyword">end</span>
5220457     <span class="keyword">else</span>
5230458         uid_calib=find(t,<span class="string">'ImaDoc/GeometryCalib'</span>);
5240459         <span class="keyword">if</span> ~isempty(uid) <span class="comment">%if GeometryCalib already exists, delete its content</span>
5250460             backupfile=outputfile;
5260461             testexist=2;
5270462             <span class="keyword">while</span> testexist==2
5280463                 backupfile=[backupfile <span class="string">'~'</span>];
5290464                 testexist=exist(backupfile,<span class="string">'file'</span>);     
5300465             <span class="keyword">end</span>
5310466             [success,message]=copyfile(outputfile,backupfile)<span class="comment">%make backup</span>
5320467             <span class="keyword">if</span> isequal(success,1)
5330468                 delete(outputfile)
5340469             <span class="keyword">else</span>
5350470                 <span class="keyword">return</span>
5360471             <span class="keyword">end</span>
5370472             uid_child=children(t,uid_calib);
5380473             t=delete(t,uid_child);
5390474             testappend=1;
5400475         <span class="keyword">end</span>
5410476     <span class="keyword">end</span>
5420477 <span class="keyword">end</span>
5430478 <span class="keyword">if</span> ~testappend
5440479     t=xmltree;
5450480     t=set(t,1,<span class="string">'name'</span>,<span class="string">'ImaDoc'</span>);
5460481     [t,uid_calib]=add(t,1,<span class="string">'element'</span>,<span class="string">'GeometryCalib'</span>);
5470482 <span class="comment">%     t=struct2xml(GeometryCalib,t,uid_calib);</span>
5480483 <span class="keyword">end</span>
5490484 <span class="comment">% Object.Coord(:,[1:3])=Object.Coord(:,[1:3]); %transform in</span>
5500485 GeometryCalib.SourceCalib.PointCoord=Object.Coord;
5510486 t=<a href="struct2xml.html" class="code" title="function t=struct2xml(Object,t,root_uid)">struct2xml</a>(GeometryCalib,t,uid_calib);
5520487 save(t,outputfile)
5530488
5540489 <a href="warndlg_uvmat.html" class="code" title="function hwarn=warndlg_uvmat(warntext,title)">warndlg_uvmat</a>([outputfile <span class="string">'updated with linear calibration data'</span>],<span class="string">'CONFIRMATION'</span>)
5550490
5560491 <span class="comment">%display image with new calibration in the currently opened uvmat interface</span>
5570492 Indices=get(findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'FileIndex'</span>),<span class="string">'String'</span>);
5580493 Ext=get(findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'FileExt'</span>),<span class="string">'String'</span>);
5590494 imagename=[fullfile(RootPath,RootFile) Indices Ext];
5600495 <span class="comment">% input.menu_coord=1;</span>
5610496 <span class="keyword">if</span> exist(imagename,<span class="string">'file'</span>)
5620497     huvmat=<a href="uvmat.html" class="code" title="function varargout = uvmat(varargin)">uvmat</a>(imagename,1);<span class="comment">%open uvmat, set phys coord (Value 1)</span>
5630498 <span class="keyword">else</span>
5640499     huvmat=<a href="uvmat.html" class="code" title="function varargout = uvmat(varargin)">uvmat</a>;
5650500 <span class="keyword">end</span>
5660501
5670502
5680503 <span class="comment">% --- Executes on button press in translation.</span>
5690504 <a name="_sub12" href="#_subfunctions" class="code">function translation_Callback(hObject, eventdata, handles)</a>
5700505
5710506
5720507 <a name="_sub13" href="#_subfunctions" class="code">function T_x_Callback(hObject, eventdata, handles)</a>
5730508 <span class="comment">% hObject    handle to T_x (see GCBO)</span>
5740509 <span class="comment">% eventdata  reserved - to be defined in a future version of MATLAB</span>
5750510 <span class="comment">% handles    structure with handles and user data (see GUIDATA)</span>
5760511
5770512 <span class="comment">% Hints: get(hObject,'String') returns contents of T_x as text</span>
5780513 <span class="comment">%        str2double(get(hObject,'String')) returns contents of T_x as a double</span>
5790514
5800515
5810516
5820517
5830518
5840519 <a name="_sub14" href="#_subfunctions" class="code">function T_y_Callback(hObject, eventdata, handles)</a>
5850520 <span class="comment">% hObject    handle to T_y (see GCBO)</span>
5860521 <span class="comment">% eventdata  reserved - to be defined in a future version of MATLAB</span>
5870522 <span class="comment">% handles    structure with handles and user data (see GUIDATA)</span>
5880523
5890524 <span class="comment">% Hints: get(hObject,'String') returns contents of T_y as text</span>
5900525 <span class="comment">%        str2double(get(hObject,'String')) returns contents of T_y as a double</span>
5910526
5920527
5930528 <a name="_sub15" href="#_subfunctions" class="code">function T_z_Callback(hObject, eventdata, handles)</a>
5940529 <span class="comment">% hObject    handle to T_z (see GCBO)</span>
5950530 <span class="comment">% eventdata  reserved - to be defined in a future version of MATLAB</span>
5960531 <span class="comment">% handles    structure with handles and user data (see GUIDATA)</span>
5970532
5980533 <span class="comment">% Hints: get(hObject,'String') returns contents of T_z as text</span>
5990534 <span class="comment">%        str2double(get(hObject,'String')) returns contents of T_z as a double</span>
6000535
6010536
6020537 <span class="comment">% --- Executes on button press in rotation.</span>
6030538 <a name="_sub16" href="#_subfunctions" class="code">function rotation_Callback(hObject, eventdata, handles)</a>
6040539 angle_rot=(pi/180)*str2num(get(handles.Phi,<span class="string">'String'</span>))
6050540 data=<a href="#_sub23" class="code" title="subfunction data=read_probe_calib(handles)">read_probe_calib</a>(handles)
6060541 data.Coord(:,1)=cos(angle_rot)*data.Coord(:,1)+sin(angle_rot)*data.Coord(:,2);
6070542 data.Coord(:,1)=-sin(angle_rot)*data.Coord(:,1)+cos(angle_rot)*data.Coord(:,2);
6080543 set(handles.XObject,<span class="string">'String'</span>,num2str(data.Coord(:,1)));
6090544 set(handles.YObject,<span class="string">'String'</span>,num2str(data.Coord(:,2)));
6100545
6110546
6120547 <a name="_sub17" href="#_subfunctions" class="code">function XImage_Callback(hObject, eventdata, handles)</a>
6130548 <a href="#_sub22" class="code" title="subfunction update_list(hObject, eventdata, handles)">update_list</a>(hObject, eventdata,handles)
6140549
6150550 <a name="_sub18" href="#_subfunctions" class="code">function YImage_Callback(hObject, eventdata, handles)</a>
6160551 <a href="#_sub22" class="code" title="subfunction update_list(hObject, eventdata, handles)">update_list</a>(hObject, eventdata,handles)
6170552
6180553 <a name="_sub19" href="#_subfunctions" class="code">function XObject_Callback(hObject, eventdata, handles)</a>
6190554 <a href="#_sub22" class="code" title="subfunction update_list(hObject, eventdata, handles)">update_list</a>(hObject, eventdata,handles)
6200555
6210556 <a name="_sub20" href="#_subfunctions" class="code">function YObject_Callback(hObject, eventdata, handles)</a>
6220557 <a href="#_sub22" class="code" title="subfunction update_list(hObject, eventdata, handles)">update_list</a>(hObject, eventdata,handles)
6230558
6240559 <a name="_sub21" href="#_subfunctions" class="code">function ZObject_Callback(hObject, eventdata, handles)</a>
6250560 <a href="#_sub22" class="code" title="subfunction update_list(hObject, eventdata, handles)">update_list</a>(hObject, eventdata,handles)
6260561
6270562 <a name="_sub22" href="#_subfunctions" class="code">function update_list(hObject, eventdata, handles)</a>
6280563 str4=get(handles.XImage,<span class="string">'String'</span>);
6290564 str5=get(handles.YImage,<span class="string">'String'</span>);
6300565 str1=get(handles.XObject,<span class="string">'String'</span>);
6310566 tt=double(str1);
6320567 str2=get(handles.YObject,<span class="string">'String'</span>);
6330568 str3=get(handles.ZObject,<span class="string">'String'</span>);
6340569 <span class="keyword">if</span> ~isempty(str1) &amp; ~isequal(double(str1),32) &amp; (isempty(str3)|isequal(double(str3),32))
6350570     str3=<span class="string">'0'</span>;<span class="comment">%put z to 0 by default</span>
6360571 <span class="keyword">end</span>
6370572 strline=[str1 <span class="string">'    |    '</span> str2 <span class="string">'    |    '</span> str3 <span class="string">'    |    '</span> str4 <span class="string">'    |    '</span> str5];
6380573 Coord=get(handles.ListCoord,<span class="string">'String'</span>);
6390574 testappend=get(handles.edit_append,<span class="string">'Value'</span>);
6400575 <span class="keyword">if</span> isequal(testappend,1); <span class="comment">%edit mode</span>
6410576     val=get(handles.ListCoord,<span class="string">'Value'</span>);
6420577     Coord{val}=strline;
6430578 <span class="keyword">else</span>
6440579     val=length(get(handles.ListCoord,<span class="string">'String'</span>));
6450580     Coord{val+1}=strline;
6460581     set(handles.ListCoord,<span class="string">'Value'</span>,val+1)
6470582 <span class="comment">% if val+1&lt;=length(Coord)</span>
6480583 <span class="comment">%     set(handles.ListCoord,'Value',val+1)</span>
6490584 <span class="comment">%     ListCoord_Callback(hObject, eventdata, handles)</span>
6500585 <span class="keyword">end</span>
6510586 set(handles.ListCoord,<span class="string">'String'</span>,Coord)
6520587 <span class="comment">%set(handles.ListCoord,'Value',val+1)</span>
6530588
6540589 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>
6550590 <a name="_sub23" href="#_subfunctions" class="code">function data=read_probe_calib(handles)</a>
6560591 data_XIma=[];
6570592 data_YIma=[];
6580593 data_XObject=[];
6590594 data_YObject=[];
6600595 data_ZObject=[];
6610596 Coord=get(handles.ListCoord,<span class="string">'String'</span>);
6620597 <span class="comment">% XImage=get(handles.XImage,'String');</span>
6630598 <span class="comment">% YImage=get(handles.YImage,'String');</span>
6640599 <span class="comment">% XObject=get(handles.XObject,'String');</span>
6650600 <span class="comment">% YObject=get(handles.YObject,'String');</span>
6660601 <span class="comment">% ZObject=get(handles.ZObject,'String');</span>
6670602 <span class="comment">% if ischar(Xcolumn)</span>
6680603 <span class="comment">%     Xcolumn={Xcolumn};</span>
6690604 <span class="comment">% end</span>
6700605 nb_defining_points=length(Coord);
6710606 iline=0;
6720607 <span class="keyword">for</span> i=1:nb_defining_points
6730608     coord_str=Coord{i};<span class="comment">%character string of line number i</span>
6740609     k=findstr(<span class="string">'|'</span>,coord_str);<span class="comment">%find separators '|'</span>
6750610     data1=str2num(coord_str(1:k(1)-5));
6760611     data2=str2num(coord_str(k(1)+5:k(2)-5));
6770612     data3=str2num(coord_str(k(2)+5:k(3)-5));
6780613     data4=str2num(coord_str(k(3)+5:k(4)-5));
6790614     data5=str2num(coord_str(k(4)+5:end));
6800615     <span class="keyword">if</span> ~isempty(data1)|~isempty(data2)|~isempty(data3)|~isempty(data4)|~isempty(data5)
6810616         iline=iline+1;
6820617         <span class="keyword">if</span> ~isempty(data1)
6830618             data.Coord(iline,1)=data1;
6840619         <span class="keyword">end</span>   
6850620         <span class="keyword">if</span> ~isempty(data2)
6860621             data.Coord(iline,2)=data2;
6870622         <span class="keyword">end</span>
6880623         <span class="keyword">if</span> ~isempty(data3)
6890624             data.Coord(iline,3)=data3;
6900625         <span class="keyword">end</span>
6910626         <span class="keyword">if</span> ~isempty(data4)
6920627             data.Coord(iline,4)=data4;
6930628         <span class="keyword">end</span>
6940629         <span class="keyword">if</span> isempty(data5)
6950630             data.Coord(iline,5)=0;
6960631         <span class="keyword">else</span>
6970632             data.Coord(iline,5)=data5;
6980633         <span class="keyword">end</span>
6990634     <span class="keyword">end</span>
7000635 <span class="keyword">end</span>
7010636 data.Style=<span class="string">'points'</span>;
7020637
7030638
7040639 <span class="comment">% --- Executes on selection change in ListCoord.</span>
7050640 <a name="_sub24" href="#_subfunctions" class="code">function ListCoord_Callback(hObject, eventdata, handles)</a>
7060641 <span class="comment">% hObject    handle to ListCoord (see GCBO)</span>
7070642 <span class="comment">% eventdata  reserved - to be defined in a future version of MATLAB</span>
7080643 <span class="comment">% handles    structure with handles and user data (see GUIDATA)</span>
7090644
7100645 <span class="comment">% Hints: contents = get(hObject,'String') returns ListCoord contents as cell array</span>
7110646 <span class="comment">%        contents{get(hObject,'Value')} returns selected item from ListCoord</span>
7120647 set(handles.edit_append,<span class="string">'Value'</span>,1); <span class="comment">%set to edit mode</span>
7130648 Coord=get(handles.ListCoord,<span class="string">'String'</span>);
7140649 val=get(handles.ListCoord,<span class="string">'Value'</span>);
7150650 <span class="keyword">if</span> length(Coord)&gt;0
7160651 coord_str=Coord{val};
7170652 k=findstr(<span class="string">'|'</span>,coord_str);
7180653 set(handles.XObject,<span class="string">'String'</span>,coord_str(1:k(1)-5))
7190654 set(handles.YObject,<span class="string">'String'</span>,coord_str(k(1)+5:k(2)-5))
7200655 set(handles.ZObject,<span class="string">'String'</span>,coord_str(k(2)+5:k(3)-5))
7210656 set(handles.XImage,<span class="string">'String'</span>,coord_str(k(3)+5:k(4)-5))
7220657 set(handles.YImage,<span class="string">'String'</span>,coord_str(k(4)+5:end))
7230658 <span class="keyword">end</span>
7240659
7250660 <span class="comment">%------------------------------------------------------</span>
7260661 <span class="comment">% --- Executes on button press in translation_plus.</span>
7270662 <a name="_sub25" href="#_subfunctions" class="code">function translation_plus_Callback(hObject, eventdata, handles)</a>
7280663
7290664 T=[0 0 0];
7300665 T_x=get(handles.T_x,<span class="string">'String'</span>)
7310666 T_y=get(handles.T_y,<span class="string">'String'</span>)
7320667 T_z=get(handles.T_z,<span class="string">'String'</span>)
7330668 <span class="keyword">if</span> ~isempty(T_x)
7340669     T(1)=str2num(T_x);
7350670 <span class="keyword">end</span>
7360671 <span class="keyword">if</span> ~isempty(T_y)
7370672     T(2)=str2num(T_y);
7380673 <span class="keyword">end</span>
7390674 <span class="keyword">if</span> ~isempty(T_z)
7400675     T(3)=str2num(T_z);
7410676 <span class="keyword">end</span>
7420677 <a href="#_sub27" class="code" title="subfunction translation(handles,T)">translation</a>(handles,T)
7430678
7440679
7450680
7460681 <span class="comment">% --- Executes on button press in translation_minus.</span>
7470682 <a name="_sub26" href="#_subfunctions" class="code">function translation_minus_Callback(hObject, eventdata, handles)</a>
7480683
7490684 T=[0 0 0];
7500685 T_x=get(handles.T_x,<span class="string">'String'</span>)
7510686 T_y=get(handles.T_y,<span class="string">'String'</span>)
7520687 T_z=get(handles.T_z,<span class="string">'String'</span>)
7530688 <span class="keyword">if</span> ~isempty(T_x)
7540689     T(1)=-str2num(T_x);
7550690 <span class="keyword">end</span>
7560691 <span class="keyword">if</span> ~isempty(T_y)
7570692     T(2)=-str2num(T_y);
7580693 <span class="keyword">end</span>
7590694 <span class="keyword">if</span> ~isempty(T_z)
7600695     T(3)=-str2num(T_z);
7610696 <span class="keyword">end</span>
7620697 <a href="#_sub27" class="code" title="subfunction translation(handles,T)">translation</a>(handles,T)
7630698
7640699
7650700 <span class="comment">%%%--------------------------------------</span>
7660701 <a name="_sub27" href="#_subfunctions" class="code">function translation(handles,T)</a>
7670702 data=<a href="#_sub23" class="code" title="subfunction data=read_probe_calib(handles)">read_probe_calib</a>(handles);
7680703 data.Coord(:,1)=T(1)+data.Coord(:,1);
7690704 data.Coord(:,2)=T(2)+data.Coord(:,2);
7700705 data.Coord(:,3)=T(3)+data.Coord(:,3);
7710706 data.Coord(:,[4 5])=data.Coord(:,[4 5]);
7720707 <span class="keyword">for</span> i=1:size(data.Coord,1)
7730708     <span class="keyword">for</span> j=1:5
7740709           Coord{i,j}=num2str(data.Coord(i,j));<span class="comment">%phys x,y,z</span>
7750710    <span class="keyword">end</span>
7760711 <span class="keyword">end</span>
7770712 Tabchar=<a href="cell2tab.html" class="code" title="function Tabchar=cell2tab(Tabcell,separator)">cell2tab</a>(Coord,<span class="string">'    |    '</span>);
7780713 set(handles.ListCoord,<span class="string">'String'</span>,Tabchar)
7790714
7800715 <span class="comment">%----------------------------------------------------</span>
7810716 <span class="comment">% --- Executes on button press in rotation_plus.</span>
7820717 <a name="_sub28" href="#_subfunctions" class="code">function rotation_plus_Callback(hObject, eventdata, handles)</a>
7830718 Phi=0;
7840719 Phi=get(handles.Phi,<span class="string">'String'</span>)
7850720 <span class="keyword">if</span> ~isempty(Phi)
7860721     Phi=str2num(Phi);
7870722 <span class="keyword">end</span>
7880723 <a href="#_sub30" class="code" title="subfunction rotation(handles,Phi)">rotation</a>(handles,Phi)
7890724
7900725 <span class="comment">%-------------------------------------------------</span>
7910726 <span class="comment">% --- Executes on button press in rotation_minus.</span>
7920727 <a name="_sub29" href="#_subfunctions" class="code">function rotation_minus_Callback(hObject, eventdata, handles)</a>
7930728 Phi=0;
7940729 Phi=get(handles.Phi,<span class="string">'String'</span>)
7950730 <span class="keyword">if</span> ~isempty(Phi)
7960731     Phi=-str2num(Phi);
7970732 <span class="keyword">end</span>
7980733 <a href="#_sub30" class="code" title="subfunction rotation(handles,Phi)">rotation</a>(handles,Phi)
7990734
8000735 <span class="comment">%-----------------------------------------------------</span>
8010736 <span class="comment">%rotation</span>
8020737 <a name="_sub30" href="#_subfunctions" class="code">function rotation(handles,Phi)</a>
8030738 O_x=str2num(get(handles.O_x,<span class="string">'String'</span>));
8040739 O_y=str2num(get(handles.O_y,<span class="string">'String'</span>));
8050740 <span class="keyword">if</span> isempty(O_x)
8060741     O_x=0;<span class="comment">%default</span>
8070742 <span class="keyword">end</span>
8080743 <span class="keyword">if</span> isempty(O_y)
8090744     O_y=0;<span class="comment">%default</span>
8100745 <span class="keyword">end</span>
8110746 data=<a href="#_sub23" class="code" title="subfunction data=read_probe_calib(handles)">read_probe_calib</a>(handles);
8120747 r1=cos(pi*Phi/180);
8130748 r2=-sin(pi*Phi/180);
8140749 r3=sin(pi*Phi/180);
8150750 r4=cos(pi*Phi/180);
8160751 data.Coord(:,1)=r1*data.Coord(:,1)+r2*data.Coord(:,2);
8170752 data.Coord(:,2)=r3*data.Coord(:,1)+r4*data.Coord(:,2);
8180753 <span class="comment">% data.Coord(:,[4 5])=data.Coord(:,[4 5]);</span>
8190754 <span class="keyword">for</span> i=1:size(data.Coord,1)
8200755     <span class="keyword">for</span> j=1:5
8210756           Coord{i,j}=num2str(data.Coord(i,j));<span class="comment">%phys x,y,z</span>
8220757    <span class="keyword">end</span>
8230758 <span class="keyword">end</span>
8240759 Tabchar=<a href="cell2tab.html" class="code" title="function Tabchar=cell2tab(Tabcell,separator)">cell2tab</a>(Coord,<span class="string">'    |    '</span>);
8250760 set(handles.ListCoord,<span class="string">'String'</span>,Tabchar)
8260761
8270762 <a name="_sub31" href="#_subfunctions" class="code">function O_x_Callback(hObject, eventdata, handles)</a>
8280763 <span class="comment">% hObject    handle to O_x (see GCBO)</span>
8290764 <span class="comment">% eventdata  reserved - to be defined in a future version of MATLAB</span>
8300765 <span class="comment">% handles    structure with handles and user data (see GUIDATA)</span>
8310766
8320767 <span class="comment">% Hints: get(hObject,'String') returns contents of O_x as text</span>
8330768 <span class="comment">%        str2double(get(hObject,'String')) returns contents of O_x as a double</span>
8340769
8350770
8360771
8370772 <a name="_sub32" href="#_subfunctions" class="code">function O_y_Callback(hObject, eventdata, handles)</a>
8380773 <span class="comment">% hObject    handle to O_y (see GCBO)</span>
8390774 <span class="comment">% eventdata  reserved - to be defined in a future version of MATLAB</span>
8400775 <span class="comment">% handles    structure with handles and user data (see GUIDATA)</span>
8410776
8420777 <span class="comment">% Hints: get(hObject,'String') returns contents of O_y as text</span>
8430778 <span class="comment">%        str2double(get(hObject,'String')) returns contents of O_y as a double</span>
8440779
8450780
8460781 <a name="_sub33" href="#_subfunctions" class="code">function O_z_Callback(hObject, eventdata, handles)</a>
8470782 <span class="comment">% hObject    handle to O_z (see GCBO)</span>
8480783 <span class="comment">% eventdata  reserved - to be defined in a future version of MATLAB</span>
8490784 <span class="comment">% handles    structure with handles and user data (see GUIDATA)</span>
8500785
8510786 <span class="comment">% Hints: get(hObject,'String') returns contents of O_z as text</span>
8520787 <span class="comment">%        str2double(get(hObject,'String')) returns contents of O_z as a double</span>
8530788
8540789
8550790
8560791
8570792
8580793
8590794
8600795 <span class="comment">% --- Executes on selection change in edit_append.</span>
8610796 <a name="_sub34" href="#_subfunctions" class="code">function edit_append_Callback(hObject, eventdata, handles)</a>
8620797 val=get(handles.edit_append,<span class="string">'Value'</span>);
8630798 <span class="keyword">if</span> isequal(val,2); <span class="comment">%append mode</span>
8640799     <span class="comment">%appeler mouse</span>
8650800 <span class="keyword">end</span>
8660801
8670802
8680803 <a name="_sub35" href="#_subfunctions" class="code">function NEW_Callback(hObject, eventdata, handles)</a>
8690804 <span class="comment">%A METTRE SOUS UN BOUTON</span>
8700805 huvmat=findobj(<span class="string">'name'</span>,<span class="string">'uvmat'</span>);
8710806 hchild=get(huvmat,<span class="string">'children'</span>);
8720807 hcoord=findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'menu_coord'</span>)
8730808 coordtype=get(hcoord,<span class="string">'Value'</span>)
8740809 haxes=findobj(hchild,<span class="string">'Tag'</span>,<span class="string">'axes3'</span>);
8750810 AxeData=get(haxes,<span class="string">'UserData'</span>);
8760811 <span class="keyword">if</span> ~isequal(hcoord,2)
8770812     set(hcoord,<span class="string">'Value'</span>,2)
8780813     huvmat=<a href="uvmat.html" class="code" title="function varargout = uvmat(varargin)">uvmat</a>(AxeData)
8790814     <span class="string">'relancer uvmat'</span>
8800815 <span class="keyword">end</span>
8810816 <span class="keyword">if</span> ~isfield(AxeData,<span class="string">'ZoomAxes'</span>)
8820817     <a href="warndlg_uvmat.html" class="code" title="function hwarn=warndlg_uvmat(warntext,title)">warndlg_uvmat</a>(<span class="string">'first draw a window around a grid marker'</span>,<span class="string">'ERRROR'</span>)
8830818     <span class="keyword">return</span>
8840819 <span class="keyword">end</span> 
8850820 XLim=get(AxeData.ZoomAxes,<span class="string">'XLim'</span>);
8860821 YLim=get(AxeData.ZoomAxes,<span class="string">'YLim'</span>);
8870822 np=size(AxeData.A);
8880823 ind_sub_x=round(XLim)
8890824 ind_sub_y=np(1)-round(YLim)
8900825 Mfiltre=AxeData.A([ind_sub_y(2):ind_sub_y(1)] ,ind_sub_x,:);
8910826 Mfiltre_norm=double(Mfiltre);
8920827 Mfiltre_norm=Mfiltre_norm/sum(sum(Mfiltre_norm));
8930828 Mfiltre_norm=100*(Mfiltre_norm-mean(mean(Mfiltre_norm)));
8940829 Atype=class(AxeData.A)
8950830 Data.NbDim=2;
8960831 Data.A=filter2(Mfiltre_norm,double(AxeData.A));
8970832 Data.A=feval(Atype,Data.A);
8980833 Data.AName=<span class="string">'image'</span>;
8990834 Data.AX=AxeData.AX;
9000835 Data.AY=AxeData.AY;
9010836 Data.CoordType=<span class="string">'px'</span>;
9020837 <a href="plot_field.html" class="code" title="function [PlotType,PlotParamOut,haxes]= plot_field(Data,haxes,PlotParam,KeepLim,PosColorbar)">plot_field</a>(Data)
9030838 
9040839
9050840 <span class="comment">% --- Executes on button press in HELP.</span>
9060841 <a name="_sub36" href="#_subfunctions" class="code">function HELP_Callback(hObject, eventdata, handles)</a>
9070842 <span class="comment">% hObject    handle to HELP (see GCBO)</span>
9080843 <span class="comment">% eventdata  reserved - to be defined in a future version of MATLAB</span>
9090844 <span class="comment">% handles    structure with handles and user data (see GUIDATA)</span>
9100845 path_to_uvmat=which (<span class="string">'uvmat'</span>);<span class="comment">% check the path of uvmat</span>
9110846 pathelp=fileparts(path_to_uvmat);
9120847 helpfile=fullfile(pathelp,<span class="string">'UVMAT_DOC'</span>,<span class="string">'uvmat_doc.html'</span>);
9130848 <span class="keyword">if</span> isempty(dir(helpfile)), errordlg(<span class="string">'Please put the help file uvmat_doc.html in the directory UVMAT/UVMAT_DOC'</span>)
9140849 <span class="keyword">else</span>
9150850    web([helpfile <span class="string">'#probe_calib'</span>])
9160851 <span class="keyword">end</span>
9170852
9180853 <span class="comment">%'move_key:' function activated when a key is pressed on the keyboard</span>
9190854 <span class="comment">%-----------------------------------</span>
9200855 <a name="_sub37" href="#_subfunctions" class="code">function key_press_fcn(hObject,eventdata,handles)</a>
9210856 hh=get(hObject,<span class="string">'parent'</span>)
9220857 xx=double(get(hh,<span class="string">'CurrentCharacter'</span>)) <span class="comment">%get the keyboard character</span>
9230858
9240859 <span class="keyword">if</span> isequal(xx,8)<span class="comment">%move arrow right</span>
9250860    data=<a href="#_sub23" class="code" title="subfunction data=read_probe_calib(handles)">read_probe_calib</a>(handles);
9260861     Coord=[]; <span class="comment">%default</span>
9270862     <span class="keyword">if</span> isfield(data,<span class="string">'Coord'</span>)
9280863         Coord=data.Coord
9290864     <span class="keyword">end</span>
9300865     val=get(handles.ListCoord,<span class="string">'Value'</span>);
9310866     Coord(val,:)=[];
9320867     CoordCell={};
9330868     <span class="keyword">for</span> iline=1:size(Coord,1)
9340869         <span class="keyword">for</span> j=1:5
9350870             CoordCell{iline,j}=num2str(Coord(iline,j));
9360871         <span class="keyword">end</span>
9370872     <span class="keyword">end</span>
9380873     Tabchar=<a href="cell2tab.html" class="code" title="function Tabchar=cell2tab(Tabcell,separator)">cell2tab</a>(CoordCell,<span class="string">'    |    '</span>);<span class="comment">%transform cells into table ready for display</span>
9390874     val=min(size(Coord,1),val);
9400875     set(handles.ListCoord,<span class="string">'Value'</span>,max(val,1))
9410876     set(handles.ListCoord,<span class="string">'String'</span>,Tabchar) 
9420877 <span class="keyword">end</span></pre></div>
943<hr><address>Generated on Fri 13-Nov-2009 11:17:03 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
944</body>
945</html>
Note: See TracBrowser for help on using the repository browser.