[vtkusers] re: vtkIterativeClosestPoint
Moti Freiman
freiman at cs.huji.ac.il
Sun Jan 16 13:00:13 EST 2005
Hi!
you should add after your ICPTransform code section this lines:
ICPTransform->Update();
vtkMatrix4x4 * mat = vtkMatrix4x4::New();
mat->DeepCopy (ICPTransform->GetMatrix());
on this stage you got the transfrom matrix, then you should apply it to your data using vtkTransfrom, and vtkTransformPolyDataFilter.
hope it helps
--
Moti Freiman, Graduate Student.
Medical Image Processing and Computer-Assisted Surgery Laboratory.
School of Computer Science and Engineering.
The Hebrew University of Jerusalem Givat Ram, Jerusalem 91904, Israel
Phone: +(972)-2-658-5371 (laboratory)
E-mail: freiman at cs.huji.ac.il
WWW site: http://www.cs.huji.ac.il/~freiman
Hi,
I'm new to this vtk and i need your help...I want to register two images
together using Iterative Closest Point Transform...How do i transform the
resulting ICP to my data or setting it to user's transform...I think i am
missing something out..Any help is appreaciated..Thx..Below is my source
code..
//Declaring all the variables needed
#include "vtkPolyDataMapper.h" //maps polygonal data to graphics
#include "vtkActor.h" //represents an object (geometry & properties)
in a rendered scene
#include "vtkProperty.h" //represent surface properties of a geometric
object
#include "vtkRenderWindow.h" //create a window for renderers to draw into
#include "vtkRenderer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkCamera.h"
#include "vtkIterativeClosestPointTransform.h"
#include "vtkSTLReader.h"
#include "vtkPolyDataNormals.h"
#include "vtkLODActor.h"
#include "vtkOBJReader.h"
#include "vtkPolyData.h"
main()
{
//Create a rendering window and the renderer
vtkRenderWindow * renWin = vtkRenderWindow::New();
vtkRenderer * ren1 = vtkRenderer::New();
//Adding the renderers inside the rendering window
renWin->AddRenderer(ren1);
//Input the ctForehead image(.stl)
vtkSTLReader * ctForehead = vtkSTLReader::New();
ctForehead->SetFileName("C:/Documents and
Settings/Khatijah/Desktop/examples/ctForehead.stl");
vtkPolyDataNormals * foreheadnormals = vtkPolyDataNormals::New();
foreheadnormals->SetInput(ctForehead->GetOutput());
vtkPolyDataMapper * foreheadMapper = vtkPolyDataMapper::New();
foreheadMapper->SetInput(foreheadnormals->GetOutput());
vtkLODActor * foreheadActor = vtkLODActor::New();
foreheadActor->SetMapper(foreheadMapper);
//Reading .obj image
vtkOBJReader * inspeckForehead = vtkOBJReader::New();
inspeckForehead->SetFileName("C:/Documents and
Settings/Khatijah/Desktop/examples/initinspeckForehead.obj");
vtkPolyDataNormals * forehead2normals = vtkPolyDataNormals::New();
forehead2normals->SetInput(inspeckForehead->GetOutput());
vtkPolyDataMapper * forehead2Mapper = vtkPolyDataMapper::New();
forehead2Mapper->SetInput(forehead2normals->GetOutput());
vtkLODActor * forehead2Actor = vtkLODActor::New();
forehead2Actor->SetMapper(forehead2Mapper);
//vtkIterativeClosestPoint function
vtkIterativeClosestPointTransform *ICPTransform =
vtkIterativeClosestPointTransform::New();
ICPTransform->SetSource(inspeckForehead->GetOutput());
ICPTransform->SetTarget(ctForehead->GetOutput());
ICPTransform->SetCheckMeanDistance(1);
ICPTransform->SetMaximumMeanDistance(0.001);
ICPTransform->SetMaximumNumberOfIterations(30);
ICPTransform->SetMaximumNumberOfLandmarks(500);
//assign actor to the renderer
ren1->AddActor(foreheadActor);
ren1->AddActor(forehead2Actor);
renWin->SetSize(800,400);
// Now we loop over 360 degreeees and render the cone each time.
int i;
for (i = 0; i < 360; ++i)
{
// render the image
renWin->Render();
// rotate the active camera by one degree
ren1->GetActiveCamera()->Azimuth(0.1);
}
//Begin mouse interaction
vtkRenderWindowInteractor * iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
iren->Initialize();
iren->Start();
return 0;
}
_________________________________________________________________
Keep track of Singapore & Malaysia stock prices.
http://www.msn.com.sg/money/
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.300 / Virus Database: 265.6.12 - Release Date: 14/01/2005
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.300 / Virus Database: 265.6.12 - Release Date: 14/01/2005
More information about the vtkusers
mailing list