00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00037 #ifdef _USE_VTK_
00038
00039
00040 #include "bbvtkSegmentationConnectivity.h"
00041 #include "bbvtkPackage.h"
00042
00043 namespace bbvtk
00044 {
00045
00046 BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,SegmentationConnectivity);
00047 BBTK_BLACK_BOX_IMPLEMENTATION(SegmentationConnectivity,
00048 bbtk::AtomicBlackBox);
00049
00050
00051 void SegmentationConnectivity::bbUserConstructor()
00052 {
00053 bbSetInputIn(NULL);
00054 std::vector<int> position;
00055 position.push_back(0);
00056 position.push_back(0);
00057 position.push_back(0);
00058 bbSetInputPositionXYZ(position);
00059 std::vector<int> threshold;
00060 threshold.push_back(0);
00061 threshold.push_back(0);
00062 bbSetInputThresholdMinMax(threshold);
00063 bbSetOutputOut(NULL);
00064 thresh2 = vtkImageThreshold::New();
00065 thresh2->SetInValue(255);
00066 thresh2->SetOutputScalarTypeToUnsignedShort();
00067 thresh2->SetOutValue(0);
00068 cast2 = vtkImageCast::New();
00069 cast2->SetInput(thresh2->GetOutput());
00070 cast2->SetOutputScalarTypeToUnsignedChar();
00071 connect2 = vtkImageSeedConnectivity::New();
00072 connect2->SetInput(cast2->GetOutput());
00073 connect2->SetInputConnectValue(255);
00074 connect2->SetOutputConnectedValue(255);
00075 connect2->SetOutputUnconnectedValue(0);
00076 cast4 = vtkImageCast::New();
00077 cast4->SetInput(connect2->GetOutput());
00078 cast4->SetOutputScalarTypeToUnsignedShort();
00079 }
00080
00081
00082 void SegmentationConnectivity::bbUserDestructor()
00083 {
00084 thresh2->Delete();
00085 cast2->Delete();
00086 connect2->Delete();
00087 cast4->Delete();
00088 }
00089
00090 void SegmentationConnectivity::DoProcess()
00091 {
00092 vtkImageData *imagedata = bbGetInputIn();
00093 imagedata->UpdateInformation();
00094 imagedata->SetUpdateExtent(imagedata->GetWholeExtent());
00095 imagedata->Update();
00096 thresh2->ThresholdBetween(3000, 3001);
00097 thresh2->SetInput(imagedata);
00098 thresh2->ThresholdBetween(bbGetInputThresholdMinMax()[0], bbGetInputThresholdMinMax()[1]);
00099 thresh2->Update();
00100 cast2->Update();
00101 connect2->RemoveAllSeeds ();
00102 connect2->AddSeed( bbGetInputPositionXYZ()[0] , bbGetInputPositionXYZ()[1] , bbGetInputPositionXYZ()[2] );
00103 connect2->Update();
00104 cast4->Update();
00105
00106 bbSetOutputOut(cast4->GetOutput() );
00107 }
00108
00109
00110 }
00111
00112
00113 #endif //_USE_VTK_
00114
00115
00116
00117
00118