Commit 52e1b0c0 authored by Gaetano Raffaele's avatar Gaetano Raffaele
Browse files

WIP: implemented mask option

No related merge requests found
Showing with 22 additions and 9 deletions
+22 -9
...@@ -78,37 +78,50 @@ private: ...@@ -78,37 +78,50 @@ private:
void DoExecute() override void DoExecute() override
{ {
LabelImageType::Pointer maskIn;
LabelImageType::Pointer maskedIn;
LabelImageType::Pointer labelIn = GetParameterUInt32Image("in"); LabelImageType::Pointer labelIn = GetParameterUInt32Image("in");
m_MaskFilter = BandMathFilterType::New();
if (HasValue("mask")) {
maskIn = GetParameterUInt32Image("mask");
m_MaskFilter->SetNthInput(0, labelIn);
m_MaskFilter->SetNthInput(1, maskIn);
m_MaskFilter->SetExpression("b2!=0 ? b1 : 0");
maskedIn = m_MaskFilter->GetOutput();
}
else maskedIn = labelIn;
m_StatsFilter = StatsFilterType::New(); m_StatsFilter = StatsFilterType::New();
m_StatsFilter->SetInput(labelIn); m_StatsFilter->SetInput(maskedIn);
m_StatsFilter->Update(); m_StatsFilter->Update();
long unsigned M = m_StatsFilter->GetMaximum(); long unsigned M = m_StatsFilter->GetMaximum();
std::cout << "Hole numbering starts at : " << 1 + M << std::endl; std::cout << "Hole numbering starts at : " << 1 + M << std::endl;
m_BandMathFilter = BandMathFilterType::New(); m_BandMathFilter = BandMathFilterType::New();
m_BandMathFilter->SetNthInput(0, labelIn); m_BandMathFilter->SetNthInput(0, maskedIn);
if (HasValue("mask")) { if (HasValue("mask")) {
LabelImageType::Pointer maskIn = GetParameterUInt32Image("mask");
m_BandMathFilter->SetNthInput(1, maskIn); m_BandMathFilter->SetNthInput(1, maskIn);
m_BandMathFilter->SetExpression("b1==0 && b2!=0"); m_BandMathFilter->SetExpression("b1==0 && b2!=0");
} } else m_BandMathFilter->SetExpression("b1==0");
else {
m_BandMathFilter->SetExpression("b1==0");
}
m_CCLFilter = CCLFIlterType::New(); m_CCLFilter = CCLFIlterType::New();
m_CCLFilter->SetInput(m_BandMathFilter->GetOutput()); m_CCLFilter->SetInput(m_BandMathFilter->GetOutput());
m_OutBandMathFilter = BandMathFilterType::New(); m_OutBandMathFilter = BandMathFilterType::New();
m_OutBandMathFilter->SetNthInput(0, labelIn); m_OutBandMathFilter->SetNthInput(0, maskedIn);
m_OutBandMathFilter->SetNthInput(1, m_CCLFilter->GetOutput()); m_OutBandMathFilter->SetNthInput(1, m_CCLFilter->GetOutput());
std::string expr = "b1==0 ? " + std::to_string(M) + " + b2 : b1"; std::string expr;
if (HasValue("mask")) {
m_OutBandMathFilter->SetNthInput(2, maskIn);
expr = "b1==0 && b3!=0 ? " + std::to_string(M) + " + b2 : b1";
} else expr = "b1==0 ? " + std::to_string(M) + " + b2 : b1";
m_OutBandMathFilter->SetExpression(expr); m_OutBandMathFilter->SetExpression(expr);
SetParameterOutputImage("out", m_OutBandMathFilter->GetOutput()); SetParameterOutputImage("out", m_OutBandMathFilter->GetOutput());
} }
BandMathFilterType::Pointer m_MaskFilter;
CCLFIlterType::Pointer m_CCLFilter; CCLFIlterType::Pointer m_CCLFilter;
BandMathFilterType::Pointer m_BandMathFilter; BandMathFilterType::Pointer m_BandMathFilter;
StatsFilterType::Pointer m_StatsFilter; StatsFilterType::Pointer m_StatsFilter;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment