OTB  9.0.0
Orfeo Toolbox
otbOpeningClosingMorphologicalFilter.hxx
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005-2022 Centre National d'Etudes Spatiales (CNES)
3  *
4  * This file is part of Orfeo Toolbox
5  *
6  * https://www.orfeo-toolbox.org/
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 #ifndef otbOpeningClosingMorphologicalFilter_hxx
22 #define otbOpeningClosingMorphologicalFilter_hxx
23 
25 #include "itkGrayscaleMorphologicalOpeningImageFilter.h"
26 #include "itkGrayscaleMorphologicalClosingImageFilter.h"
27 #include "itkProgressAccumulator.h"
28 
29 namespace otb
30 {
34 template <class TInputImage, class TOutputImage, class TKernel>
36 {
37  m_Kernel.SetRadius(1);
38  m_Kernel.CreateStructuringElement();
39 }
41 
45 template <class TInputImage, class TOutputImage, class TKernel>
47 {
48  // Filters Typedefs (this class is actually a composite filter)
49  typedef itk::GrayscaleMorphologicalOpeningImageFilter<InputImageType, OutputImageType, KernelType> OpenFilterType;
50  typedef itk::GrayscaleMorphologicalClosingImageFilter<InputImageType, OutputImageType, KernelType> CloseFilterType;
51  // Filters initialization
52  typename OpenFilterType::Pointer opening = OpenFilterType::New();
53  typename CloseFilterType::Pointer closing = CloseFilterType::New();
54  // Set the kernel
55  opening->SetKernel(this->GetKernel());
56  closing->SetKernel(this->GetKernel());
57  // Progression report management
58  itk::ProgressAccumulator::Pointer progress = itk::ProgressAccumulator::New();
59  progress->SetMiniPipelineFilter(this);
60  progress->RegisterInternalFilter(opening, .5f);
61  progress->RegisterInternalFilter(closing, .5f);
62  // Internal Pipeline connection
63  closing->SetInput(this->GetInput());
64  opening->SetInput(closing->GetOutput());
65  // Output connection
66  opening->GraftOutput(this->GetOutput());
67  opening->Update();
68  this->GraftOutput(opening->GetOutput());
69 }
70 
otb
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.
Definition: otbJoinContainer.h:32
otb::OpeningClosingMorphologicalFilter::GenerateData
void GenerateData() override
otb::OpeningClosingMorphologicalFilter::OpeningClosingMorphologicalFilter
OpeningClosingMorphologicalFilter()
otbOpeningClosingMorphologicalFilter.h