1 /*=========================================================================
2 Program: vv http://www.creatis.insa-lyon.fr/rio/vv
5 - University of LYON http://www.universite-lyon.fr/
6 - Léon Bérard cancer center http://www.centreleonberard.fr
7 - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the copyright notices for more information.
13 It is distributed under dual licence
15 - BSD See included LICENSE.txt file
16 - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ===========================================================================*/
18 /*=========================================================================
21 Module: $RCSfile: vvToolMedianFilter.cxx,v $
23 Date: $Date: 2010/10/22 07:38:05 $
24 Version: $Revision: 1.5 $
25 Author : Bharath Navalpakkam (Bharath.Navalpakkam@creatis.insa-lyon.fr)
28 Léon Bérard cancer center http://www.centreleonberard.fr
29 CREATIS http://www.creatis.insa-lyon.fr
31 This program is free software: you can redistribute it and/or modify
32 it under the terms of the GNU General Public License as published by
33 the Free Software Foundation, version 3 of the License.
35 This program is distributed in the hope that it will be useful,
36 but WITHOUT ANY WARRANTY; without even the implied warranty of
37 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
38 GNU General Public License for more details.
40 You should have received a copy of the GNU General Public License
41 along with this program. If not, see <http://www.gnu.org/licenses/>.
43 =========================================================================*/
45 #include "vvToolMedianFilter.h"
46 #include "vvSlicerManager.h"
48 #include "vvToolInputSelectorWidget.h"
49 #include "clitkMedianImageGenericFilter.h"
51 //------------------------------------------------------------------------------
52 // Create the tool and automagically
53 ADD_TOOL(vvToolMedianFilter);
54 //------------------------------------------------------------------------------
56 //------------------------------------------------------------------------------
57 vvToolMedianFilter::vvToolMedianFilter(vvMainWindowBase * parent, Qt::WindowFlags f)
58 :vvToolWidgetBase(parent,f),
59 vvToolBase<vvToolMedianFilter>(parent),
60 Ui::vvToolMedianFilter()
63 Ui_vvToolMedianFilter::setupUi(mToolWidget);
64 mFilter = new clitk::MedianImageGenericFilter<args_info_clitkMedianImageFilter>;
67 // Set how many inputs are needed for this tool
68 AddInputSelector("Select one image", mFilter);
71 //------------------------------------------------------------------------------
72 vvToolMedianFilter::~vvToolMedianFilter()
75 //------------------------------------------------------------------------------
76 void vvToolMedianFilter::Initialize()
78 SetToolName("MedianFilter");
79 SetToolMenuName("MedianFilter");
80 SetToolIconFilename(":common/icons/ducky.png");
81 SetToolTip("Make 'MedianFilter' on an image.");
82 SetToolExperimental(true);
84 //------------------------------------------------------------------------------
86 void vvToolMedianFilter::apply()
90 if (!mCurrentSlicerManager) close();
91 QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
93 clitk::MedianImageGenericFilter<args_info_clitkMedianImageFilter>::Pointer filter =
94 clitk::MedianImageGenericFilter<args_info_clitkMedianImageFilter>::New();
95 filter->SetInputVVImage(mCurrentImage);
96 filter->SetArgsInfo(mArgsInfo);
97 filter->EnableReadOnDisk(false);
100 vvImage::Pointer output = filter->GetOutputVVImage();
101 std::ostringstream osstream;
102 osstream << "MedianFiltered_" << mCurrentSlicerManager->GetSlicer(0)->GetFileName() << ".mhd";
103 AddImage(output,osstream.str());
104 QApplication::restoreOverrideCursor();
107 //------------------------------------------------------------------------------
108 void vvToolMedianFilter::GetArgsInfoFromGUI()
110 /* //KEEP THIS FOR READING GGO FROM FILE
112 std::string a = "toto";
113 char * const* argv = new char*;
115 struct cmdline_parser_params p;
116 p.check_required = 0;
117 int good = cmdline_parser_ext(argc, argv, &args_info, &p);
120 mArgsInfo.radius_given=0;
121 mArgsInfo.verbose_flag = false;
122 // mArgsInfo.radius_arg = new int[3];
123 // Required (even if not used)
124 mArgsInfo.input_given = 0;
125 mArgsInfo.output_given = 0;
126 mArgsInfo.input_arg=new char;
127 mArgsInfo.output_arg = new char;
128 mArgsInfo.config_given=0;
129 mArgsInfo.verbose_given=0;
131 //------------------------------------------------------------------------------
132 void vvToolMedianFilter::InputIsSelected(vvSlicerManager *m)
134 mCurrentSlicerManager =m;
135 // Specific for this gui
136 mArgsInfo.radius_arg = new int[3];
137 int checkdimensions=mCurrentSlicerManager->GetDimension();
138 if(checkdimensions<3) {
139 horizontalSlider_3->hide();
141 mArgsInfo.radius_arg[2]=0;
142 connect(horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(UpdateH1slider()));
143 connect(horizontalSlider_2, SIGNAL(valueChanged(int)), this, SLOT(UpdateH2slider()));
145 horizontalSlider->show();
146 horizontalSlider_2->show();
147 horizontalSlider_3->show();
148 connect(horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(UpdateH1slider()));
149 connect(horizontalSlider_2, SIGNAL(valueChanged(int)), this, SLOT(UpdateH2slider()));
150 connect(horizontalSlider_3, SIGNAL(valueChanged(int)), this, SLOT(UpdateH3slider()));
154 //-----------------------------------------------------------------------------
156 void vvToolMedianFilter::UpdateH1slider()
159 mArgsInfo.radius_arg[0]=horizontalSlider->value();
160 spinBox->setValue(mArgsInfo.radius_arg[0]);
162 void vvToolMedianFilter::UpdateH2slider()
164 mArgsInfo.radius_arg[1]=horizontalSlider_2->value();
165 spinBox_2->setValue(mArgsInfo.radius_arg[1]);
167 void vvToolMedianFilter::UpdateH3slider()
169 mArgsInfo.radius_arg[2]=horizontalSlider_3->value();
170 spinBox_3->setValue(mArgsInfo.radius_arg[2]);