SetBackgroundValue(0);
SetForegroundValue(1);
+ // Default values
+ ExtractStation_8_SetDefaultValues();
+ ExtractStation_3P_SetDefaultValues();
+
// Station 7
SetFuzzyThreshold(0.5);
SetStation7Filename("station7.mhd");
//--------------------------------------------------------------------
-//--------------------------------------------------------------------
-template <class TImageType>
-template <class ArgsInfoType>
-void
-clitk::ExtractLymphStationsFilter<TImageType>::
-SetArgsInfo(ArgsInfoType & argsinfo) {
- DD("SetArgsInfo");
-}
-//--------------------------------------------------------------------
-
-
//--------------------------------------------------------------------
template <class TImageType>
void
// Get inputs
LoadAFDB();
m_Input = dynamic_cast<const ImageType*>(itk::ProcessObject::GetInput(0));
- m_Support = GetAFDB()->template GetImage <MaskImageType>("mediastinum");
-
- //
- typedef clitk::BooleanOperatorLabelImageFilter<MaskImageType> BFilter;
- BFilter::Pointer merge = BFilter::New();
+ m_Mediastinum = GetAFDB()->template GetImage <MaskImageType>("Mediastinum");
+
+ // Extract Station8
+ StartNewStep("Station 8");
+ StartSubStep();
+ ExtractStation_8();
+ StopSubStep();
+
+ // Extract Station3P
+ StartNewStep("Station 3P");
+ StartSubStep();
+ ExtractStation_3P();
+ StopSubStep();
- // Extract Station7
- ExtractStation_7();
- m_Output = m_Station7;
+ if (0) { // temporary suppress
+ // Extract Station7
+ StartNewStep("Station 7");
+ StartSubStep();
+ ExtractStation_7();
+ StopSubStep();
- // Extract Station4RL
- ExtractStation_4RL();
+ // Extract Station4RL
+ StartNewStep("Station 4RL");
+ StartSubStep();
+ //ExtractStation_4RL();
+ StopSubStep();
+ }
- writeImage<MaskImageType>(m_Station4RL, "s4rl.mhd");
+
+ //
+ // typedef clitk::BooleanOperatorLabelImageFilter<MaskImageType> BFilter;
+ //BFilter::Pointer merge = BFilter::New();
// writeImage<MaskImageType>(m_Output, "ouput.mhd");
//writeImage<MaskImageType>(m_Working_Support, "ws.mhd");
/*merge->SetInput1(m_Station7);
- merge->SetInput2(m_Station4RL); // support
- merge->SetOperationType(BFilter::AndNot); CHANGE OPERATOR
- merge->SetForegroundValue(4);
- merge->Update();
- m_Output = merge->GetOutput();
+ merge->SetInput2(m_Station4RL); // support
+ merge->SetOperationType(BFilter::AndNot); CHANGE OPERATOR
+ merge->SetForegroundValue(4);
+ merge->Update();
+ m_Output = merge->GetOutput();
*/
}
//--------------------------------------------------------------------
void
clitk::ExtractLymphStationsFilter<TImageType>::
GenerateInputRequestedRegion() {
- DD("GenerateInputRequestedRegion (nothing?)");
+ //DD("GenerateInputRequestedRegion (nothing?)");
}
//--------------------------------------------------------------------
DD("GenerateData, graft output");
// Final Step -> graft output (if SetNthOutput => redo)
- this->GraftOutput(m_Output);
+ this->GraftOutput(m_ListOfStations["8"]);
}
//--------------------------------------------------------------------
+//--------------------------------------------------------------------
+template <class TImageType>
+bool
+clitk::ExtractLymphStationsFilter<TImageType>::
+CheckForStation(std::string station)
+{
+ // Compute Station name
+ std::string s = "Station"+station;
+
+
+ // Check if station already exist in DB
+ bool found = false;
+ if (GetAFDB()->TagExist(s)) {
+ m_ListOfStations[station] = GetAFDB()->template GetImage<MaskImageType>(s);
+ found = true;
+ }
+
+ // Define the starting support
+ if (found && GetComputeStation(station)) {
+ std::cout << "Station " << station << " already exists, but re-computation forced." << std::endl;
+ }
+ if (!found || GetComputeStation(station)) {
+ m_Working_Support = m_Mediastinum = GetAFDB()->template GetImage<MaskImageType>("Mediastinum", true);
+ return true;
+ }
+ else {
+ std::cout << "Station " << station << " found. I used it" << std::endl;
+ return false;
+ }
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template <class TImageType>
+bool
+clitk::ExtractLymphStationsFilter<TImageType>::
+GetComputeStation(std::string station)
+{
+ return (m_ComputeStationMap.find(station) != m_ComputeStationMap.end());
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template <class TImageType>
+void
+clitk::ExtractLymphStationsFilter<TImageType>::
+AddComputeStation(std::string station)
+{
+ m_ComputeStationMap[station] = true;
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template <class TImageType>
+void
+clitk::ExtractLymphStationsFilter<TImageType>::
+ExtractStation_8()
+{
+ if (CheckForStation("8")) {
+ ExtractStation_8_SI_Limits();
+ ExtractStation_8_Post_Limits();
+ ExtractStation_8_Ant_Sup_Limits();
+ ExtractStation_8_Ant_Inf_Limits();
+ ExtractStation_8_LR_1_Limits();
+ ExtractStation_8_LR_2_Limits();
+ ExtractStation_8_LR_Limits();
+ ExtractStation_8_Ant_Injected_Limits();
+ ExtractStation_8_Single_CCL_Limits();
+ ExtractStation_8_Remove_Structures();
+ // Store image filenames into AFDB
+ writeImage<MaskImageType>(m_ListOfStations["8"], "seg/Station8.mhd");
+ GetAFDB()->SetImageFilename("Station8", "seg/Station8.mhd");
+ WriteAFDB();
+ }
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template <class TImageType>
+void
+clitk::ExtractLymphStationsFilter<TImageType>::
+ExtractStation_3P()
+{
+ if (CheckForStation("3P")) {
+ ExtractStation_3P_SI_Limits();
+ ExtractStation_3P_Remove_Structures();
+ ExtractStation_3P_Ant_Limits();
+ ExtractStation_3P_Post_Limits();
+ ExtractStation_3P_LR_sup_Limits();
+ ExtractStation_3P_LR_inf_Limits();
+ // Store image filenames into AFDB
+ writeImage<MaskImageType>(m_ListOfStations["3P"], "seg/Station3P.mhd");
+ GetAFDB()->SetImageFilename("Station3P", "seg/Station3P.mhd");
+ WriteAFDB();
+ }
+}
+//--------------------------------------------------------------------
+
+
//--------------------------------------------------------------------
template <class TImageType>
void
clitk::ExtractLymphStationsFilter<TImageType>::
ExtractStation_7() {
- DD("ExtractStation_7");
+ if (m_ListOfStations["7"]) {
+ DD("Station 7 support already exist -> use it");
+ m_Working_Support = m_ListOfStations["7"];
+ }
+ else m_Working_Support = m_Mediastinum;
ExtractStation_7_SI_Limits();
ExtractStation_7_RL_Limits();
ExtractStation_7_Posterior_Limits();
void
clitk::ExtractLymphStationsFilter<TImageType>::
ExtractStation_4RL() {
- DD("ExtractStation_4RL");
- writeImage<MaskImageType>(m_Support, "essai.mhd"); // OK
-
/*
WARNING ONLY 4R FIRST !!! (not same inf limits)
- */
-
+ */
ExtractStation_4RL_SI_Limits();
ExtractStation_4RL_LR_Limits();
-
+ ExtractStation_4RL_AP_Limits();
}
//--------------------------------------------------------------------
+//--------------------------------------------------------------------
+
+
#endif //#define CLITKBOOLEANOPERATORLABELIMAGEFILTER_TXX