<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">


<META content="MSHTML 6.00.2800.1276" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>Monica, </FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff size=2>The 
issue with the AddImageFilter is that it relies on the NumericTraits class to 
define a</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff size=2>type 
for accumulating the results.&nbsp; For instance, if you are adding to char 
images, you would use an accumulate type of short to avoid overflow during the 
accumulation.</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>There is not specialization for 
NumericTraits&lt;Vector&lt;T&gt;&gt;.&nbsp; You might try putting one in your 
code (you can use one of the existing specializations to see what traits need to 
be defined). But I don't think this will work given the class heirarchy for 
NumericTraits.</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff size=2>We 
could add another algorithm to specifically add two vector 
images.</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>However, looking back at your original question, it sounds like your two 
deformation fields are at different resolutions. So the smaller one would need 
to be interpolated.&nbsp; You could something like</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>typedef itk::VectorLinearInterpolateImageFunction&lt;SmallImageType&gt; 
VectorInterpolatorType;</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>VectorInterpolatorType::Pointer interpolator = 
VectorInterpolatorType::New();</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>interpolator-&gt;SetInputImage( smallField );</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>OutputIteratorType outIt = OutputIteratorType(cumulativeField, 
region);</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>LargeInputIteratorType inIt = LargeInputIteratorType(largeField, 
region);</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>VectorType v1, v2;</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>PointType p;</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>while (!inIt.IsAtEnd())</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>{</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff size=2>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp;&nbsp; largeField-&gt;TransfromIndexToPhysicalPoint( 
inIt.GetIndex(), p );</FONT></SPAN></DIV>&nbsp;&nbsp;&nbsp; v1 = 
inIt.Get();</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp;&nbsp; // interpolate a vector from the&nbsp;smaller image at 
this physical position&nbsp;&nbsp;&nbsp; </FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp;&nbsp; v2 = interpolator-&gt;Evaluate(p);</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp; // set the output vector as the sum of the two 
vectors</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004>&nbsp;&nbsp;&nbsp; <FONT face=Verdana 
color=#0000ff size=2>outIt.Set( v1 + v2 );</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004>&nbsp;&nbsp;&nbsp;<FONT face=Verdana 
color=#0000ff size=2>&nbsp;++inIt;</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp; ++outIt;</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>}</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff size=2>I 
trust that adding deformation is what you really want to do.&nbsp; In 
particular, you are </FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>looking to add two vectors at the same physical position.&nbsp; This is 
what the above code does. If you are looking to "concatenate" or "compose" to 
vector fields, where you apply one vector field to a set of positions, then 
apply another vector field, then you&nbsp;use inner loop code that looks 
like&nbsp;</FONT></SPAN></DIV><SPAN class=596342912-13082004></SPAN><FONT 
face=Tahoma><FONT face=Verdana color=#0000ff size=2></FONT><FONT face=Verdana 
color=#0000ff size=2></FONT>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>{</FONT></SPAN></DIV><SPAN class=596342912-13082004>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp;&nbsp; largeField-&gt;TransfromIndexToPhysicalPoint( 
inIt.GetIndex(), p );</FONT></SPAN></DIV>
<DIV><FONT face=Verdana color=#0000ff size=2>&nbsp;&nbsp;&nbsp; v1 = 
inIt.Get();</FONT></DIV>
<DIV><FONT face=Verdana color=#0000ff size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Verdana color=#0000ff size=2><SPAN 
class=596342912-13082004>&nbsp;&nbsp;&nbsp; // to compose the vector fields, 
apply the first vector field to the position</SPAN></FONT></DIV>
<DIV></SPAN><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp;&nbsp; newp&nbsp;= p + v1;</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp;&nbsp; </FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp;&nbsp; // interpolate the vector to compose with from the 
smaller image</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp;&nbsp; v2 = 
interpolator-&gt;Evaluate(newp);</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp;&nbsp; // apply the second vector field to 
position</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004>&nbsp;&nbsp;&nbsp; <FONT face=Verdana 
color=#0000ff size=2>newp += v2;</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp;&nbsp; // composite vector is the difference between the 
original point and the moved point</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004>&nbsp;&nbsp;&nbsp; <FONT face=Verdana 
color=#0000ff size=2>outIt.Set(&nbsp;newp - p&nbsp;);</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=596342912-13082004>&nbsp;&nbsp;&nbsp;<FONT face=Verdana 
color=#0000ff size=2>&nbsp;++inIt;</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>&nbsp;&nbsp; &nbsp;++outIt;</FONT></SPAN></DIV>
<DIV><SPAN class=596342912-13082004><FONT face=Verdana color=#0000ff 
size=2>}</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Verdana color=#0000ff size=2><SPAN class=596342912-13082004>If 
you want, you can put in a feature request on the ITK bug tracker for a filter 
that will composite two vector fields.</SPAN></FONT></DIV>
<DIV><FONT face=Verdana color=#0000ff size=2></FONT>&nbsp;</DIV>
<DIV><BR><FONT size=2><SPAN class=596342912-13082004><FONT face=Verdana 
color=#0000ff>[Jim Miller]&nbsp;</FONT></SPAN></FONT></DIV>
<DIV><FONT size=2><SPAN 
class=596342912-13082004></SPAN></FONT>&nbsp;</DIV></FONT></BODY></HTML>