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:
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();
}
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
#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
Merci pour vos réponses.