source: trunk/src/uvmat_doc/FUNCTIONS_DOC/px.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: 10.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 px</title>
6  <meta name="keywords" content="px">
7  <meta name="description" content="'px': transform fields from physical coordinates (phys) to image (px) coordinates">
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; px.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>px
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>'px': transform fields from physical coordinates (phys) to image (px) coordinates</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 [DataOut,DataOut_1]=px(Data,CalibData,Data_1,CalibData_1)%DataIn,Calib) </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">'px': transform fields from physical coordinates (phys) to image (px) coordinates</pre></div>
31
32<!-- crossreference -->
33<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
34This function calls:
35<ul style="list-style-image:url(../matlabicon.gif)">
36<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></ul>
37This function is called by:
38<ul style="list-style-image:url(../matlabicon.gif)">
39<li><a href="geometry_calib.html" class="code" title="function varargout = geometry_calib(varargin)">geometry_calib</a> 'geometry_calib': performs geometric calibration from a set of reference points</li><li><a href="probe_calib.html" class="code" title="function varargout = probe_calib(varargin)">probe_calib</a>      'probe_calib': performs geometric calibration from a set of reference points</li></ul>
40<!-- crossreference -->
41
42<h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
43<ul style="list-style-image:url(../matlabicon.gif)">
44<li><a href="#_sub1" class="code">function DataOut=px_1(Data,Calib)</a></li></ul>
45<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
46<div class="fragment"><pre>0001 <span class="comment">%'px': transform fields from physical coordinates (phys) to image (px) coordinates</span>
470002
480003 <span class="comment">% OUTPUT:</span>
490004 <span class="comment">% DataOut:   structure of modified data (transforms DataIn)</span>
500005 <span class="comment">%       DataOut.CoordType='px': labels image coordinates</span>
510006 <span class="comment">%       DataOut.CoordUnit= 'px' : units of output coordinates</span>
520007 <span class="comment">%       DataOut.X and .Y arrays of image coordinates X, Y</span>
530008 <span class="comment">%       DataOut.U, .V velocity in pixel displacement on the image (unit=px), if velocity exists as input</span>
540009 <span class="comment">%</span>
550010 <span class="comment">%INPUT:</span>
560011 <span class="comment">% DataIn:  structure of possible input data (like UvData) or cell of structures (several fields):</span>
570012 <span class="comment">%      DataIn.CoordType='phys': allows transform to px, else no transform   (DataOut=DataIn)</span>
580013 <span class="comment">%      DataIn.X and .Y arrays of physical coordinates X, Y</span>
590014 <span class="comment">%      DataIn.Z corresponding array of Z coordinates (=0 by default)</span>
600015 <span class="comment">%      DataIn.U, V corresponding array of velocity components</span>
610016 <span class="comment">%      DataIn.W corresponding array of the third velocity component in 3D case</span>
620017 <span class="comment">%      DataIn.dt: time interval of the image pair used for velocity measurement (NEEDED TO GET OUTPUT RESULT))</span>
630018 <span class="comment">%      DataIn.A, AX, AY : image or scalar input -&gt; EMPTY  CORRESPONDING OUTPUT (A REVOIR)</span>
640019 <span class="comment">%      Other fields in DataIn: copied to DataOut without modification</span>
650020 <span class="comment">% Calib: structure containing the calibration parameters (Tsai) or containing a subtree Calib.GeometryCalib with these parameters</span>
660021 <span class="comment">%</span>
670022 <span class="comment">% call the functions phys_XYZ or px_XYZ (case of images) for pointwise coordinate transforms</span>
680023
690024 <a name="_sub0" href="#_subfunctions" class="code">function [DataOut,DataOut_1]=px(Data,CalibData,Data_1,CalibData_1)</a><span class="comment">%DataIn,Calib)</span>
700025 <span class="comment">% A FAIRE: 1- verifier si DataIn est une 'field structure'(.ListVarName'):</span>
710026 <span class="comment">% chercher ListVarAttribute, for each field (cell of variables):</span>
720027 <span class="comment">%   .CoordType: 'phys' or 'px'   (default==px, no transform)</span>
730028 <span class="comment">%   .scale_factor: =dt (to transform displacement into velocity) default=1</span>
740029 <span class="comment">%   .covariance: 'scalar', 'coord', 'D_i': covariant (like velocity), 'D^i': contravariant (like gradient), 'D^jD_i' (like strain tensor)</span>
750030 <span class="comment">%   (default='coord' if .Role='coord_x,_y...,</span>
760031 <span class="comment">%            'D_i' if '.Role='vector_x,...',</span>
770032 <span class="comment">%              'scalar', else (thenno change except scale factor)</span>
780033 <span class="keyword">if</span>  ~(exist(<span class="string">'CalibData'</span>,<span class="string">'var'</span>) &amp;&amp; isfield(CalibData,<span class="string">'GeometryCalib'</span>))
790034     DataOut=Data;
800035 <span class="keyword">else</span>
810036     DataOut=<a href="#_sub1" class="code" title="subfunction DataOut=px_1(Data,Calib)">px_1</a>(Data,CalibData.GeometryCalib);
820037 <span class="keyword">end</span>
830038 <span class="keyword">if</span> exist(<span class="string">'Data_1'</span>,<span class="string">'var'</span>)
840039     <span class="keyword">if</span> ~(exist(<span class="string">'CalibData_1'</span>,<span class="string">'var'</span>) &amp;&amp; isfield(CalibData_1,<span class="string">'GeometryCalib'</span>))
850040         DataOut_1=Data_1;
860041     <span class="keyword">else</span>
870042         DataOut_1=<a href="#_sub1" class="code" title="subfunction DataOut=px_1(Data,Calib)">px_1</a>(Data_1,CalibData_1.GeometryCalib);
880043     <span class="keyword">end</span>
890044 <span class="keyword">else</span>
900045     DataOut_1=[];
910046 <span class="keyword">end</span>
920047
930048
940049 <span class="comment">%------------------------------------------------</span>
950050 <a name="_sub1" href="#_subfunctions" class="code">function DataOut=px_1(Data,Calib)</a>
960051 DataOut=Data;<span class="comment">%default</span>
970052
980053 <span class="comment">%Act only if .CoordType=phys, and Calib defined</span>
990054 <span class="keyword">if</span> isfield(Data,<span class="string">'CoordType'</span>)&amp; isequal(Data.CoordType,<span class="string">'phys'</span>)&amp; ~isempty(Calib)
1000055     DataOut.CoordType=<span class="string">'px'</span>; <span class="comment">%put flag for pixel coordinates</span>
1010056     DataOut.CoordUnit=<span class="string">'px'</span>;
1020057     <span class="comment">%transform of X,Y coordinates</span>
1030058     <span class="keyword">if</span> isfield(Data,<span class="string">'Z'</span>)&amp;~isempty(Data.Z)
1040059         Z=Data.Z;
1050060     <span class="keyword">else</span>
1060061         Z=0;
1070062     <span class="keyword">end</span>
1080063     <span class="keyword">if</span> isfield(Data,<span class="string">'X'</span>) &amp; isfield(Data,<span class="string">'Y'</span>)
1090064         [DataOut.X,DataOut.Y]=<a href="px_XYZ.html" class="code" title="function [X,Y]=px_XYZ(Calib,Xphys,Yphys,Zphys)">px_XYZ</a>(Calib,Data.X,Data.Y,Z);
1100065         <span class="keyword">if</span> isfield(Data,<span class="string">'U'</span>)&amp;isfield(Data,<span class="string">'V'</span>)&amp; isfield(Data,<span class="string">'dt'</span>)&amp; ~isequal(Data.dt,0)
1110066             Data.U=Data.U*Data.dt;
1120067             Data.V=Data.V*Data.dt;
1130068             <span class="keyword">if</span> isfield(Data,<span class="string">'W'</span>)
1140069                 W=Data.W*Data.dt;
1150070             <span class="keyword">else</span>
1160071                 W=0;
1170072             <span class="keyword">end</span>
1180073             [XOut_1,YOut_1]=<a href="px_XYZ.html" class="code" title="function [X,Y]=px_XYZ(Calib,Xphys,Yphys,Zphys)">px_XYZ</a>(Calib,Data.X-Data.U/2,Data.Y-Data.V/2,Z-W/2);
1190074             [XOut_2,YOut_2]=<a href="px_XYZ.html" class="code" title="function [X,Y]=px_XYZ(Calib,Xphys,Yphys,Zphys)">px_XYZ</a>(Calib,Data.X+Data.U/2,Data.Y+Data.V/2,Z+W/2);
1200075             DataOut.U=XOut_2-XOut_1;
1210076             DataOut.V=YOut_2-YOut_1;
1220077         <span class="keyword">end</span>
1230078     <span class="keyword">end</span>
1240079     <span class="comment">%transform of an image</span>
1250080     <span class="keyword">if</span> isfield(Data,<span class="string">'A'</span>)&amp;isfield(Data,<span class="string">'AX'</span>)&amp;~isempty(Data.AX) &amp; isfield(Data,<span class="string">'AY'</span>)&amp;<span class="keyword">...</span>
1260081                                    isfield(Data,<span class="string">'AY'</span>)&amp;~isempty(Data.AY)&amp;length(Data.A)&gt;1
1270082 <span class="comment">%         if isfield(Data,'Field')&amp;isequal(Data.Field,'images')</span>
1280083           <span class="comment">%NO TRANSFORM FROM phys to px for images</span>
1290084             DataOut.A=[];<span class="comment">%</span>
1300085     <span class="keyword">end</span>
1310086 <span class="keyword">end</span>
1320087</pre></div>
133<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>
134</body>
135</html>
Note: See TracBrowser for help on using the repository browser.