Skip to content

Commit

Permalink
git-svn-id: svn+ssh://orchestra.med.harvard.edu/svn/megason/Code/GoFi…
Browse files Browse the repository at this point in the history
…gure2@1075 ef826fda-c0ae-4237-af8e-f8dcbcf7929c
  • Loading branch information
agouaillard committed Mar 24, 2009
1 parent 1b0a87c commit 5bcb90a
Show file tree
Hide file tree
Showing 6 changed files with 2,486 additions and 0 deletions.
29 changes: 29 additions & 0 deletions trunk/Testing/Examples/vtkLSM/CMakeLists.txt
@@ -0,0 +1,29 @@
ADD_EXECUTABLE( lsm2jpg
lsm2jpg.cxx
vtkLSMReader.cxx
)
TARGET_LINK_LIBRARIES( lsm2jpg
vtkIO
vtkImaging
)

ADD_EXECUTABLE( lsm2mha
lsm2mha.cxx
vtkLSMReader.cxx
)
TARGET_LINK_LIBRARIES( lsm2mha
vtkIO
vtkImaging
)

ADD_EXECUTABLE( lsmColorVizu
lsmColorVizu.cxx
vtkLSMReader.cxx
)
TARGET_LINK_LIBRARIES( lsmColorVizu
vtkIO
vtkImaging
vtkRendering
vtkRenderingAddOn2
)

148 changes: 148 additions & 0 deletions trunk/Testing/Examples/vtkLSM/lsm2jpg.cxx
@@ -0,0 +1,148 @@
#include "vtkLSMReader.h"
#include <iostream>
#include <sstream>
#include "vtkJPEGWriter.h"
#include "vtkImageAppendComponents.h"
#include "vtkIndent.h"
#include "vtkImageData.h"

int main(int argc,char* argv[])
{
if (argc<3 || argc>4)
{
std::cout << "Usage: ";
std::cout << "(exe) FileName IsChannelToBeBlended";
std::cout << std::endl;
return 0;
}

if( !( atoi(argv[2]) == 0 || atoi(argv[2]) == 1 ) )
{
std::cout << "Second argument must be either 0 or 1." << std::endl;
return 0;
}

//read the LSM file:
vtkLSMReader* reader=vtkLSMReader::New();
reader->SetFileName(argv[1]);
reader->Update();

int NumberOfTimePoints = reader->GetNumberOfTimePoints();
int NumberOfChannels = reader->GetNumberOfChannels();

reader->PrintSelf(std::cout, vtkIndent(0));

vtkJPEGWriter * writer = vtkJPEGWriter::New();
writer->SetFileDimensionality( 2 );

for( int timePoint = 0;timePoint < NumberOfTimePoints; timePoint++)
{
if( atoi(argv[2]) == 0 || NumberOfChannels == 1 )
{
for( int channel = 0; channel < NumberOfChannels; channel++)
{
vtkLSMReader* treader=vtkLSMReader::New();
treader->SetFileName(argv[1]);
treader->SetUpdateTimePoint( timePoint );
treader->SetUpdateChannel( channel );
treader->Update();

std::stringstream namebuffer;
namebuffer << argv[1];
namebuffer << "_T_" << timePoint;
namebuffer << "_Ch_" << channel;
std::cout << namebuffer.str();
namebuffer << "_Z_ ";
writer->SetFilePrefix(namebuffer.str().c_str());
writer->SetInputConnection( treader->GetOutputPort( ) );
writer->SetFilePattern( "%s%d.jpg");
writer->Write();
}
}
else
{
// read the first channel, then Append other channel as components
// of myImage. Finally, write it.
// note that jpgwriter only handles 1 or 3 comp images.
// if only one channel, no compositing
// if two channel, compose with a dummy (empty) third channel
// if three channels, no problem
// if more than three channel, we should blend (TBD)
if( NumberOfChannels < 4 )
{
vtkImageData* myImage_ch1;
vtkImageData* myImage_ch2;
vtkImageData* myImage_ch3;

{
vtkLSMReader* treader=vtkLSMReader::New();
treader->SetFileName(argv[1]);
treader->SetUpdateTimePoint( timePoint );
treader->SetUpdateChannel( 0 );
treader->Update();
myImage_ch1 = treader->GetOutput();
}

{
vtkLSMReader* treader=vtkLSMReader::New();
treader->SetFileName(argv[1]);
treader->SetUpdateTimePoint( timePoint );
treader->SetUpdateChannel( 1 );
treader->Update();
myImage_ch2 = treader->GetOutput();
}

{
vtkLSMReader* treader=vtkLSMReader::New();
treader->SetFileName(argv[1]);
treader->SetUpdateTimePoint( timePoint );
treader->SetUpdateChannel( 2 );
treader->Update();
std::cout << "Third reader done." << std::endl;
int * dimensions = treader->GetDimensions();
int flatindex = dimensions[0] * dimensions[1] * dimensions[2];
myImage_ch3 = treader->GetOutput();
if( NumberOfChannels == 2 ) // dummy third channel
{
// here we suppose the type to be char
// to be improved
char *ptr = (char*)( myImage_ch3->GetScalarPointer());
for( int k=0; k < flatindex; k++ )
{
*ptr++ = 0;
}
}
std::cout << "third channel ready." << std::endl;
}

vtkImageAppendComponents* appendFilter1 = vtkImageAppendComponents::New();
appendFilter1->AddInput( myImage_ch1 );
appendFilter1->AddInput( myImage_ch2 );
appendFilter1->Update();
std::cout << "Two first channel composed." << std::endl;

vtkImageAppendComponents* appendFilter2 = vtkImageAppendComponents::New();
appendFilter2->AddInput( appendFilter1->GetOutput() );
appendFilter2->AddInput( myImage_ch3 );
appendFilter2->Update();
std::cout << "Third channel composed." << std::endl;

std::stringstream namebuffer;
namebuffer << argv[1];
namebuffer << "_T_" << timePoint;
std::cout << namebuffer.str();
namebuffer << "_Z_ ";
writer->SetFilePrefix(namebuffer.str().c_str());
writer->SetInput( appendFilter2->GetOutput( ) );
writer->SetFilePattern( "%s%d.jpg");
writer->Write();
}
else
{
// num of channel > 3
// TBD
}
}
}
return 1;
}
54 changes: 54 additions & 0 deletions trunk/Testing/Examples/vtkLSM/lsm2mha.cxx
@@ -0,0 +1,54 @@
#include "vtkLSMReader.h"
#include <iostream>
#include <sstream>
#include "vtkMetaImageWriter.h"
#include "vtkImageAppendComponents.h"
#include "vtkIndent.h"
#include "vtkImageData.h"

int main(int argc,char* argv[])
{
if (argc != 2)
{
std::cout << "Usage: ";
std::cout << "(exe) FileName";
std::cout << std::endl;
return 0;
}

//read the LSM file:
vtkLSMReader* reader=vtkLSMReader::New();
reader->SetFileName(argv[1]);
reader->Update();

int NumberOfTimePoints = reader->GetNumberOfTimePoints();
int NumberOfChannels = reader->GetNumberOfChannels();

vtkMetaImageWriter * writer = vtkMetaImageWriter::New();
writer->SetFileDimensionality( 3 );

for( int timePoint = 0;timePoint < NumberOfTimePoints; timePoint++)
{
for( int channel = 0; channel < NumberOfChannels; channel++)
{
vtkLSMReader* treader=vtkLSMReader::New();
treader->SetFileName(argv[1]);
treader->SetUpdateTimePoint( timePoint );
treader->SetUpdateChannel( channel );
treader->Update();

std::stringstream namebuffer;
namebuffer << argv[1];
namebuffer << "_T_" << timePoint;
namebuffer << "_Ch_" << channel;
namebuffer << ".mha";

std::cout << namebuffer.str() << std::endl;;

writer->SetFileName( namebuffer.str().c_str() );
writer->SetInputConnection( treader->GetOutputPort( ) );
writer->Write();
}
}
return EXIT_SUCCESS;
}
113 changes: 113 additions & 0 deletions trunk/Testing/Examples/vtkLSM/lsmColorVizu.cxx
@@ -0,0 +1,113 @@
#include "vtkLSMReader.h"
#include "vtkImageAppendComponents.h"
#include "vtkImageViewer2.h"
#include "vtkIndent.h"
#include "vtkImageData.h"
#include "vtkViewImage.h"
#include "vtkViewColorImage.h"

int main(int argc,char* argv[])
{
if (argc != 2)
{
std::cout << "Usage: ";
std::cout << "(exe) FileName";
std::cout << std::endl;
return 0;
}

//read the LSM file:
vtkLSMReader* reader=vtkLSMReader::New();
reader->SetFileName(argv[1]);
reader->Update();

int NumberOfTimePoints = reader->GetNumberOfTimePoints();
int NumberOfChannels = reader->GetNumberOfChannels();

for( int timePoint = 0;timePoint < NumberOfTimePoints; timePoint++)
{
{
{
vtkImageData* myImage_ch1;
vtkImageData* myImage_ch2;
vtkImageData* myImage_ch3;

myImage_ch1 = reader->GetOutput();

{
vtkLSMReader* treader=vtkLSMReader::New();
treader->SetFileName(argv[1]);
treader->SetUpdateTimePoint( timePoint );
treader->SetUpdateChannel( 1 );
treader->Update();
int * dimensions = treader->GetDimensions();
int flatindex = dimensions[0] * dimensions[1] * dimensions[2];
myImage_ch2 = treader->GetOutput();
if( NumberOfChannels == 1 )
{
char *ptr = (char*)( myImage_ch2->GetScalarPointer());
for( int k=0; k < flatindex; k++ )
{
*ptr++ = 0;
}
}
}

{
vtkLSMReader* treader=vtkLSMReader::New();
treader->SetFileName(argv[1]);
treader->SetUpdateTimePoint( timePoint );
treader->SetUpdateChannel( 2 );
treader->Update();
int * dimensions = treader->GetDimensions();
int flatindex = dimensions[0] * dimensions[1] * dimensions[2];
myImage_ch3 = treader->GetOutput();
if( NumberOfChannels == 2 ) // dummy third channel
{
char *ptr = (char*)( myImage_ch3->GetScalarPointer());
for( int k=0; k < flatindex; k++ )
{
*ptr++ = 0;
}
}
}

vtkImageAppendComponents* appendFilter1 = vtkImageAppendComponents::New();
appendFilter1->AddInput( myImage_ch1 );
appendFilter1->AddInput( myImage_ch2 );
appendFilter1->Update();

vtkImageAppendComponents* appendFilter2 = vtkImageAppendComponents::New();
appendFilter2->AddInput( appendFilter1->GetOutput() );
appendFilter2->AddInput( myImage_ch3 );
appendFilter2->Update();

{
std::cout << "vtkImageViewer2.: << std::endl;
vtkImageViewer2 * viewer = vtkImageViewer2::New();
viewer->SetInput( appendFilter2->GetOutput() );
viewer->Render();
char buffer;
cin >> buffer;
}
{
std::cout << "vtkViewImage.: << std::endl;
vtkViewImage * viewer = vtkViewImage::New();
viewer->SetInput( appendFilter2->GetOutput() );
viewer->Render();
char buffer;
cin >> buffer;
}
{
std::cout << "vtkViewColorImage.: << std::endl;
vtkViewColorImage * viewer = vtkViewColorImage::New();
viewer->SetInput( appendFilter2->GetOutput() );
viewer->Render();
char buffer;
cin >> buffer;
}
}
}
}
return 1;
}

0 comments on commit 5bcb90a

Please sign in to comment.