Bonjour,
Je travaille depuis peu sur des images m�dicales et je d�couvre les librairies itk, vtk, mitk.
J'arrive � appliquer des algorithmes simples sur des itk::image comme le seuil au niveau des pixels.
Mais pour les images que je veux analyser, j'ai besoin d'une interface graphique comme MITK. J'ai donc compil� la version 0.12.2 et j'ajoute du code � l'aide notamment de QT.
Mais mon probl�me est que mes algorithmes ne s'appliquent qu'� des itk::images et le render que j'ai via MITK sont des mitk::images incompatibles avec les fonctions des itk::images.
J'ai cherch� des fonctions de cast comme "CastToItkImage (mitkimage,itkimage)" mais � la compilation on me dit:
"error: no matching function for call to �CastToItkImage(mitk::Image*&, Image2DType*&)�
"
Quelle librairie faut il utiliser pour acc�der � cette fonction? Ou n'existe-t-il pas un autre moyen de convertir des mitk::images en itk::images?
voici mon code pour un seuil de 200:
Image2DType est un typedef venant de "myLibrary.h" qui se pr�sente comme suit:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 void QmitkMainTemplate::fileThreshold(){ int umbral = 200; mitk::LevelWindowManager::Pointer lwman = mitk::LevelWindowManager::New(); QmitkLevelWindowWidget * lwinw; mitk::Image * mimage = mitk::Image::New(); Image2DType * image = Image2DType::New();// QmitkStdMultiWidget * mainwin = this->GetMultiWidget(); QmitkRenderWindow * win; vtkRenderWindow * renwin = vtkRenderWindow::New(); vtkRenderer *ren1 = vtkRenderer::New(); ConnectorType::Pointer connector = ConnectorType::New(); vtkImageViewer2 * viewer = vtkImageViewer2::New(); vtkImageActor * imageActor = viewer->GetImageActor (); vtkRenderWindowInteractor * renderWindowInteractor = vtkRenderWindowInteractor::New(); win=mainwin->mitkWidget1; renwin= win->GetRenderWindow(); lwinw= mainwin->levelWindowWidget; lwman=lwinw->GetManager(); mimage=lwman->GetCurrentImage(); CastToItkImage (mimage,image);//??????????? IteratorType it( image, image->GetRequestedRegion () );// it.GoToBegin(); while( !it.IsAtEnd() ) { if(image->GetPixel(it.GetIndex ())<umbral){ image->SetPixel(it.GetIndex(), 0); } else{ image->SetPixel(it.GetIndex(), 255); } ++it; } connector->SetInput( image); viewer->SetInput( connector->GetOutput() ); imageActor = viewer->GetImageActor (); imageActor->SetOrigin( imageActor->GetCenter() ); imageActor->RotateX( 180 ) ; ren1->AddActor(imageActor); renwin->AddRenderer(ren1); renwin->Render(); QApplication::setOverrideCursor( QCursor(Qt::WaitCursor) ); QApplication::restoreOverrideCursor(); }
Merci pour vos r�ponses.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #ifndef __myLibrary_h #define __myLibrary_h using namespace std; #include <iostream> #include <itkImage.h> #include <itkImageRegionIterator.h> #include <itkImageFileWriter.h> #include <itkImageFileReader.h> //#include "itkImageIOBase.h" #include <itkRGBPixel.h> #include <itkImageToVTKImageFilter.h> #include <vtkImageViewer2.h> #include <vtkImageActor.h> #include <vtkRenderWindowInteractor.h> #include "vtkAlgorithmOutput.h" typedef unsigned char PixelType; typedef itk::Image< PixelType, Dimension > Image2DType; typedef itk::ImageRegionIterator< Image2DType> IteratorType; typedef itk::ImageFileWriter< Image2DType > WriterType; typedef itk::ImageFileReader<Image2DType> ReaderType; typedef itk::ImageToVTKImageFilter< Image2DType> ConnectorType; #endif![]()
Partager