1 /*=========================================================================
3 Module: $RCSfile: bbvtkSegmentationConnectivity.cxx,v $
5 Date: $Date: 2010/04/08 14:37:59 $
6 Version: $Revision: 1.6 $
7 =========================================================================*/
9 /* ---------------------------------------------------------------------
11 * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
12 * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
14 * This software is governed by the CeCILL-B license under French law and
15 * abiding by the rules of distribution of free software. You can use,
16 * modify and/ or redistribute the software under the terms of the CeCILL-B
17 * license as circulated by CEA, CNRS and INRIA at the following URL
18 * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
19 * or in the file LICENSE.txt.
21 * As a counterpart to the access to the source code and rights to copy,
22 * modify and redistribute granted by the license, users are provided only
23 * with a limited warranty and the software's author, the holder of the
24 * economic rights, and the successive licensors have only limited
27 * The fact that you are presently reading this means that you have had
28 * knowledge of the CeCILL-B license and that you accept its terms.
29 * ------------------------------------------------------------------------ */
38 #include "bbvtkSegmentationConnectivity.h"
39 #include "bbvtkPackage.h"
43 BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,SegmentationConnectivity);
44 BBTK_BLACK_BOX_IMPLEMENTATION(SegmentationConnectivity,
45 bbtk::AtomicBlackBox);
47 // --------------------------------------------------------------
49 void SegmentationConnectivity::bbUserSetDefaultValues()
57 std::vector<int> position;
58 position.push_back(0);
59 position.push_back(0);
60 position.push_back(0);
61 bbSetInputPositionXYZ(position);
62 std::vector<int> threshold;
63 threshold.push_back(0);
64 threshold.push_back(0);
65 bbSetInputThresholdMinMax(threshold);
69 // --------------------------------------------------------------
71 void SegmentationConnectivity::bbUserInitializeProcessing()
73 thresh2 = vtkImageThreshold::New();
74 thresh2->SetInValue(255);
75 thresh2->SetOutputScalarTypeToUnsignedShort();
76 thresh2->SetOutValue(0);
77 cast2 = vtkImageCast::New();
78 cast2->SetInput(thresh2->GetOutput());
79 cast2->SetOutputScalarTypeToUnsignedChar();
80 connect2 = vtkImageSeedConnectivity::New();
81 connect2->SetInput(cast2->GetOutput());
82 connect2->SetInputConnectValue(255);
83 connect2->SetOutputConnectedValue(255);
84 connect2->SetOutputUnconnectedValue(0);
85 cast4 = vtkImageCast::New();
86 cast4->SetInput(connect2->GetOutput());
87 cast4->SetOutputScalarTypeToUnsignedShort();
90 // --------------------------------------------------------------
92 void SegmentationConnectivity::bbUserFinalizeProcessing()
116 // --------------------------------------------------------------
118 void SegmentationConnectivity::DoProcess()
120 vtkImageData *imagedata = bbGetInputIn();
121 imagedata->UpdateInformation();
122 imagedata->SetUpdateExtent(imagedata->GetWholeExtent());
124 thresh2->ThresholdBetween(3000, 3001);
125 thresh2->SetInput(imagedata);
126 thresh2->ThresholdBetween(bbGetInputThresholdMinMax()[0], bbGetInputThresholdMinMax()[1]);
129 connect2->RemoveAllSeeds ();
130 connect2->AddSeed( bbGetInputPositionXYZ()[0] , bbGetInputPositionXYZ()[1] , bbGetInputPositionXYZ()[2] );
134 bbSetOutputOut(cast4->GetOutput() );
137 }// EO namespace bbvtk