OTB  9.0.0
Orfeo Toolbox
otbClosingOpeningMorphologicalFilter.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 otbClosingOpeningMorphologicalFilter_hxx
22 #define otbClosingOpeningMorphologicalFilter_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 }
40 
44 template <class TInputImage, class TOutputImage, class TKernel>
46 {
47  // Filters Typedefs (this class is actually a composite filter)
48  typedef itk::GrayscaleMorphologicalOpeningImageFilter<InputImageType, OutputImageType, KernelType> OpenFilterType;
49  typedef itk::GrayscaleMorphologicalClosingImageFilter<InputImageType, OutputImageType, KernelType> CloseFilterType;
50  // Filters initialization
51  typename OpenFilterType::Pointer opening = OpenFilterType::New();
52  typename CloseFilterType::Pointer closing = CloseFilterType::New();
53  // Set the kernel
54  opening->SetKernel(this->GetKernel());
55  closing->SetKernel(this->GetKernel());
56  // Progression report management
57  itk::ProgressAccumulator::Pointer progress = itk::ProgressAccumulator::New();
58  progress->SetMiniPipelineFilter(this);
59  progress->RegisterInternalFilter(closing, .5f);
60  progress->RegisterInternalFilter(opening, .5f);
61  // Internal Pipeline connection
62  opening->SetInput(this->GetInput());
63  closing->SetInput(opening->GetOutput());
64  // Output connection
65  closing->GraftOutput(this->GetOutput());
66  closing->Update();
67  this->GraftOutput(closing->GetOutput());
68 }
69 
otb::ClosingOpeningMorphologicalFilter::ClosingOpeningMorphologicalFilter
ClosingOpeningMorphologicalFilter()
otb
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.
Definition: otbJoinContainer.h:32
otbClosingOpeningMorphologicalFilter.h
otb::ClosingOpeningMorphologicalFilter::GenerateData
void GenerateData() override