<html>
<body>
Radim,<br><br>
Did you link against the vtkHybrid library?<br><br>
- Amy<br><br>
At 01:54 PM 3/5/2004, =?iso-8859-2?B?UmFkaW0gS29s4fg=?= wrote:<br>
<blockquote type=cite class=cite cite><font face="arial" size=2>Please
help me with this:<br>
I get these error messages, when I'm linking application under
Borland.<br>
</font>&nbsp;<br>
<font face="arial" size=2>&nbsp; [Linker Error] Unresolved external
'vtkThinPlateSplineTransform::New()' referenced from C:\PROGRAM
FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ<br>
&nbsp; [Linker Error] Unresolved external
'vtkThinPlateSplineTransform::SetSourceLandmarks(vtkPoints *)' referenced
from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ<br>
&nbsp; [Linker Error] Unresolved external
'vtkThinPlateSplineTransform::SetTargetLandmarks(vtkPoints *)' referenced
from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ<br>
&nbsp; [Linker Error] Unresolved external
'vtkThinPlateSplineTransform::SetBasis(int)' referenced from C:\PROGRAM
FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ<br>
&nbsp; [Linker Error] Unresolved external 'vtkTransformToGrid::New()'
referenced from C:\PROGRAM
FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ<br>
&nbsp; [Linker Error] Unresolved external 'vtkGridTransform::New()'
referenced from C:\PROGRAM
FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ<br>
&nbsp; [Linker Error] Unresolved external
'vtkGridTransform::SetInterpolationMode(int)' referenced from C:\PROGRAM
FILES\BORLAND\CBUILDER6\PROJECTS\WARP\UNIT1.OBJ<br>
Where is the problem please?<br>
Thanks, Radim<br>
</font>&nbsp;<br>
<font face="arial" size=2>Here is my simple code:<br>
</font>&nbsp;<br>
<font face="arial" size=2>//---------------------------------------------------------------------------<br>
#include &quot;vtkPolyData.h&quot;<br>
#include &quot;vtkTransform.h&quot;<br>
#include &quot;vtkTransformPolyDataFilter.h&quot;<br>
#include &quot;vtkWarpScalar.h&quot;<br>
#include &quot;vtkBMPReader.h&quot;<br>
#include &quot;vtkImageReslice.h&quot;<br>
#include &quot;vtkGridTransform.h&quot;<br>
#include &quot;vtkTransformToGrid.h&quot;<br>
#include &quot;vtkThinPlateSplineTransform.h&quot;<br>
#include &quot;vtkPoints.h&quot;<br>
#include &quot;vtkImageBlend.h&quot;<br>
#include &quot;vtkImageMapToColors.h&quot;<br>
#include &quot;vtkLookupTable.h&quot;<br>
#include &quot;vtkImageGridSource.h&quot;<br>
#include &quot;vtkImageViewer.h&quot;<br>
</font>&nbsp;<br>
<font face="arial" size=2>#include &lt;stdio.h&gt;<br>
#include &lt;vcl.h&gt;<br>
#pragma hdrstop<br>
</font>&nbsp;<br>
<font face="arial" size=2>//---------------------------------------------------------------------------<br>
</font>&nbsp;<br>
<font face="arial" size=2>#pragma argsused<br>
int main(int argc, char* argv[])<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //# first, create an image to
warp<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkImageGridSource *imageGrid
= vtkImageGridSource::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
imageGrid-&gt;SetGridSpacing( 16, 16, 0);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
imageGrid-&gt;SetGridOrigin( 0, 0, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
imageGrid-&gt;SetDataExtent( 0, 255, 0, 255, 0, 0);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
imageGrid-&gt;SetDataScalarTypeToUnsignedChar();<br>
</font>&nbsp;<br>
<font face="arial" size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
vtkLookupTable *table = vtkLookupTable::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
table-&gt;SetTableRange( 0, 1 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
table-&gt;SetValueRange( 1.0, 0.0);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
table-&gt;SetSaturationRange( 0.0, 0.0);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
table-&gt;SetHueRange( 0.0, 0.0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
table-&gt;SetAlphaRange( 0.0, 1.0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
table-&gt;Build();<br>
</font>&nbsp;<br>
<font face="arial" size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
vtkImageMapToColors *alpha = vtkImageMapToColors::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
alpha-&gt;SetInput( imageGrid-&gt;GetOutput() );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
alpha-&gt;SetLookupTable( table );<br>
</font>&nbsp;<br>
<font face="arial" size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
vtkBMPReader *reader1 = vtkBMPReader::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
reader1-&gt;SetFileName(
&quot;c:/Data/Retina/3D/105939/L/105939l000.bmp&quot; );<br>
</font>&nbsp;<br>
<font face="arial" size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
vtkImageBlend *blend = vtkImageBlend::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
blend-&gt;SetInput( 0, reader1-&gt;GetOutput() );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
blend-&gt;SetInput( 1, alpha-&gt;GetOutput() );<br>
</font>&nbsp;<br>
<font face="arial" size=2>//# next, create a ThinPlateSpline
transform<br>
</font>&nbsp;<br>
<font face="arial" size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
vtkPoints *p1=vtkPoints::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p1-&gt;SetNumberOfPoints( 8 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p1-&gt;SetPoint( 0, 0, 0, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p1-&gt;SetPoint( 1, 0, 255, 0);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p1-&gt;SetPoint( 2, 255, 0, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p1-&gt;SetPoint( 3, 255, 255, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p1-&gt;SetPoint( 4, 96, 96, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p1-&gt;SetPoint( 5, 96, 159, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p1-&gt;SetPoint( 6, 159, 159, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p1-&gt;SetPoint( 7, 159, 96, 0 );<br>
</font>&nbsp;<br>
<font face="arial" size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
vtkPoints *p2=vtkPoints::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p2-&gt;SetNumberOfPoints( 8 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p2-&gt;SetPoint( 0, 0, 0, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p2-&gt;SetPoint( 1, 0, 255, 0);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p2-&gt;SetPoint( 2, 255, 0, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p2-&gt;SetPoint( 3, 255, 255, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p2-&gt;SetPoint( 7, 96, 96, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p2-&gt;SetPoint( 5, 96, 159, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p2-&gt;SetPoint( 5, 159, 159, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p2-&gt;SetPoint( 6, 159, 96, 0 );<br>
</font>&nbsp;<br>
<font face="arial" size=2><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkThinPlateSplineTransform
*thinPlate = vtkThinPlateSplineTransform::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
thinPlate-&gt;SetSourceLandmarks( p2 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
thinPlate-&gt;SetTargetLandmarks( p1 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
thinPlate-&gt;SetBasisToR2LogR();<br>
&nbsp;<br>
//# convert the thin plate spline into a grid<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkTransformToGrid
*transformToGrid = vtkTransformToGrid::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
transformToGrid-&gt;SetInput( thinPlate );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
transformToGrid-&gt;SetGridSpacing( 16, 16, 1 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
transformToGrid-&gt;SetGridOrigin( -0.5, -0.5, 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
transformToGrid-&gt;SetGridExtent(0, 16, 0, 16, 0, 0);<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkGridTransform *transform =
vtkGridTransform::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
transform-&gt;SetDisplacementGrid( transformToGrid-&gt;GetOutput()
);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
transform-&gt;SetInterpolationModeToCubic();<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //# you must invert the
transform before passing it to vtkImageReslice<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transform-&gt;Inverse();<br>
&nbsp;<br>
//# apply the grid warp to the image<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkImageReslice *reslice =
vtkImageReslice::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
reslice-&gt;SetInput( blend-&gt;GetOutput() );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
reslice-&gt;SetResliceTransform( transform );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
reslice-&gt;SetInterpolationModeToLinear();<br>
&nbsp;<br>
//# set the window/level to 255.0/127.5 to view full range<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vtkImageViewer *viewer =
vtkImageViewer::New();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
viewer-&gt;SetInput( reslice-&gt;GetOutput() );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
viewer-&gt;SetColorWindow( 255.0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
viewer-&gt;SetColorLevel( 127.5 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
viewer-&gt;SetZSlice( 0 );<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
viewer-&gt;Render();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getchar();<br>
&nbsp;<br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>
}<br>
//---------------------------------------------------------------------------<br>
</font>&nbsp;<br>
&nbsp;<br>
<font face="arial" size=2>======================================================<br>
Department of Biomedical Engineering<br>
Faculty of Electrical Engineering and Communication<br>
Brno University of Technology<br>
Purkynova 118<br>
61200 Brno, Czech Republic<br>
tel: 541 149 551<br>
fax: 541 149 542<br>
mail: 
<a href="mailto:kolarr@feec.vutbr.cz">kolarr@feec.vutbr.cz</a><br>
Visit BIOSIGNAL 2004 web site:
<a href="http://www.feec.vutbr.cz/UBMI/bs2004.html">http://www.feec.vutbr.cz/UBMI/bs2004.html</a><br>
======================================================</font></blockquote></body>
</html>