/*========================================================================= Program: bbtk Module: $RCSfile: bbvtkSegmentationConnectivity.cxx,v $ Language: C++ Date: $Date: 2008/04/24 14:11:31 $ Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ /** * \file * \brief */ #ifdef _USE_VTK_ #include "bbvtkSegmentationConnectivity.h" #include "bbvtkPackage.h" namespace bbvtk { BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,SegmentationConnectivity) BBTK_BLACK_BOX_IMPLEMENTATION(SegmentationConnectivity,bbtk::AtomicBlackBox); void SegmentationConnectivity::bbUserConstructor() { bbSetInputIn(NULL); std::vector position; position.push_back(0); position.push_back(0); position.push_back(0); bbSetInputPositionXYZ(position); std::vector threshold; threshold.push_back(0); threshold.push_back(0); bbSetInputThresholdMinMax(threshold); bbSetOutputOut(NULL); thresh2 = vtkImageThreshold::New(); thresh2->SetInValue(255); thresh2->SetOutputScalarTypeToUnsignedShort(); thresh2->SetOutValue(0); cast2 = vtkImageCast::New(); cast2->SetInput(thresh2->GetOutput()); cast2->SetOutputScalarTypeToUnsignedChar(); connect2 = vtkImageSeedConnectivity::New(); connect2->SetInput(cast2->GetOutput()); connect2->SetInputConnectValue(255); connect2->SetOutputConnectedValue(255); connect2->SetOutputUnconnectedValue(0); cast4 = vtkImageCast::New(); cast4->SetInput(connect2->GetOutput()); cast4->SetOutputScalarTypeToUnsignedShort(); } void SegmentationConnectivity::DoProcess() { vtkImageData *imagedata = bbGetInputIn(); imagedata->UpdateInformation(); imagedata->SetUpdateExtent(imagedata->GetWholeExtent()); imagedata->Update(); thresh2->ThresholdBetween(3000, 3001); thresh2->SetInput(imagedata); thresh2->ThresholdBetween(bbGetInputThresholdMinMax()[0], bbGetInputThresholdMinMax()[1]); thresh2->Update(); cast2->Update(); connect2->RemoveAllSeeds (); connect2->AddSeed( bbGetInputPositionXYZ()[0] , bbGetInputPositionXYZ()[1] , bbGetInputPositionXYZ()[2] ); connect2->Update(); cast4->Update(); bbSetOutputOut(cast4->GetOutput() ); } }// EO namespace bbvtk #endif //_USE_VTK_