]> Creatis software - clitk.git/commitdiff
check upper/lower threshold validity
authordsarrut <dsarrut>
Fri, 23 Jul 2010 14:13:35 +0000 (14:13 +0000)
committerdsarrut <dsarrut>
Fri, 23 Jul 2010 14:13:35 +0000 (14:13 +0000)
segmentation/clitkExtractLungFilter.txx
vv/vvToolExtractLung.cxx
vv/vvToolExtractLung.h

index 55e9e6cbcefc0efa015a2f6047a886917f4904f5..4baee45296f5555d49b1748195b19d3757106e13 100644 (file)
@@ -164,8 +164,8 @@ void
 clitk::ExtractLungFilter<ImageType, MaskImageType>::
 GenerateOutputInformation() 
 { 
-  Superclass::GenerateOutputInformation(); // Needed  ??
-  this->GetOutput(0)->SetRequestedRegion(this->GetOutput(0)->GetLargestPossibleRegion());
+  Superclass::GenerateOutputInformation();
+  //this->GetOutput(0)->SetRequestedRegion(this->GetOutput(0)->GetLargestPossibleRegion());
 
   // Get input pointers
   patient = dynamic_cast<const MaskImageType*>(itk::ProcessObject::GetInput(1));
@@ -187,6 +187,13 @@ GenerateOutputInformation()
   //--------------------------------------------------------------------
   //--------------------------------------------------------------------
   StartNewStepOrStop("Remove Air");
+  // Check threshold
+  if (m_UseLowerThreshold) {
+    if (m_LowerThreshold > m_UpperThreshold) {
+      this->SetLastError("ERROR: lower threshold cannot be greater than upper threshold.");
+      return;
+    }
+  }
   // Threshold to get air
   typedef itk::BinaryThresholdImageFilter<ImageType, InternalImageType> InputBinarizeFilterType; 
   typename InputBinarizeFilterType::Pointer binarizeFilter=InputBinarizeFilterType::New();
@@ -458,7 +465,7 @@ GenerateOutputInformation()
       --it;
     }
     if (it.IsAtEnd()) {
-      this->SetLastError("ERROR: first point in the skeleton not found ! Abord");
+      this->SetLastError("ERROR: first point in the skeleton not found ! Abort");
       return;
     }
     DD(skeleton->GetLargestPossibleRegion().GetIndex());
index 1bf0d3296672e24da4f3c5d0302fa862508dcd33..c976b8c65570ea767c34c109a7864dc1d5686352 100644 (file)
@@ -44,13 +44,14 @@ vvToolExtractLung::vvToolExtractLung(vvMainWindowBase * parent, Qt::WindowFlags
   // GUI
   Ui_vvToolExtractLung::setupUi(mToolWidget);
   mMaskLoaderBox->setEnabled(false);
-  //mOptionsBox->setEnabled(false);
+  mOptionsBox->setEnabled(false);
   mPatientMaskInputWidget->SetText("Patient mask");
   connect(mPatientMaskInputWidget, SIGNAL(accepted()), this, SLOT(PatientMaskInputIsSelected()));
 
   // Default values
   mArgsInfo = new ArgsInfoType;
   cmdline_parser_clitkExtractLung_init(mArgsInfo);
+  SetGUIFromArgsInfo();
   m_IsThreadInterrupted = false;
 
   // Create a new ExtractLung filter
@@ -109,7 +110,25 @@ void vvToolExtractLung::PatientMaskInputIsSelected()
   }
    
   mMaskLoaderBox->setEnabled(false);
-  //mOptionsBox->setEnabled(true);
+  mOptionsBox->setEnabled(true);
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvToolExtractLung::SetGUIFromArgsInfo() 
+{
+  mAirUpperThresholdSlider->SetText("Upper threshold for air");
+  mAirUpperThresholdSlider->SetMinimum(-1200);
+  mAirUpperThresholdSlider->SetMaximum(2000);
+  DD(mArgsInfo->upper_arg);
+  mAirUpperThresholdSlider->SetValue(mArgsInfo->upper_arg);
+
+  mAirLowerThresholdSlider->SetText("Lower threshold for air");
+  mAirLowerThresholdSlider->SetMinimum(-1200);
+  mAirLowerThresholdSlider->SetMaximum(2000);
+  mAirLowerThresholdSlider->SetValue(mArgsInfo->lower_arg);
+
 }
 //------------------------------------------------------------------------------
 
@@ -117,15 +136,19 @@ void vvToolExtractLung::PatientMaskInputIsSelected()
 //------------------------------------------------------------------------------
 void vvToolExtractLung::GetArgsInfoFromGUI() 
 {
-  mArgsInfo->patientBG_arg = 0; //mPatientBackgroundValueSpinBox->value();
-  mArgsInfo->verboseOption_flag = false;
-  mArgsInfo->verboseStep_flag = false;
+  mArgsInfo->patientBG_arg = mPatientMaskInputWidget->GetBackgroundValue();
+  mArgsInfo->verboseOption_flag = true; // DEBUG. TO CHANGE
+  mArgsInfo->verboseStep_flag = true; // DEBUG. TO CHANGE
   mArgsInfo->writeStep_flag = false;
   mArgsInfo->input_given = 0;
   mArgsInfo->patient_given = 0;
   mArgsInfo->output_given = 0;
   mArgsInfo->outputTrachea_given = 0;
   mArgsInfo->remove1_given = 0;
+  
+  mArgsInfo->upper_arg = mAirUpperThresholdSlider->GetValue();
+  mArgsInfo->lower_arg = mAirLowerThresholdSlider->GetValue();
+  if (mRadioButtonLowerThan->isChecked()) mArgsInfo->lower_given = 1;
 }
 //------------------------------------------------------------------------------
 
@@ -138,6 +161,15 @@ void vvToolExtractLung::apply()
   
   // Read options from GUI and put it in the ArgsInfo struct
   GetArgsInfoFromGUI();
+  
+  // Check options
+  if (mArgsInfo->lower_given) {
+    if (mArgsInfo->lower_arg > mArgsInfo->upper_arg) {    
+      QApplication::restoreOverrideCursor(); 
+      QMessageBox::information(this,tr("Error"), "Lower threshold cannot be greater than upper threshold.");
+      return;
+    }
+  }
 
   // Create new filter
   if (mFilter) delete mFilter;
index 6ea8010ca0886c626c2c6b49eb16e0ad4176963c..24d81d5c3da9965cf7bbc8e276297a85c5a5ea7c 100644 (file)
@@ -47,6 +47,7 @@ class vvToolExtractLung:
   static void Initialize();
   virtual void InputIsSelected(vvSlicerManager *m);
   void GetArgsInfoFromGUI();
+  void SetGUIFromArgsInfo();
 
   //-----------------------------------------------------
 public slots: