1 /*=========================================================================
4 Module: $RCSfile: vvToolMedianFilter.cxx,v $
6 Date: $Date: 2010/10/22 07:38:05 $
7 Version: $Revision: 1.5 $
8 Author : Bharath Navalpakkam (Bharath.Navalpakkam@creatis.insa-lyon.fr)
11 Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
12 CREATIS http://www.creatis.insa-lyon.fr
14 This program is free software: you can redistribute it and/or modify
15 it under the terms of the GNU General Public License as published by
16 the Free Software Foundation, version 3 of the License.
18 This program is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details.
23 You should have received a copy of the GNU General Public License
24 along with this program. If not, see <http://www.gnu.org/licenses/>.
26 =========================================================================*/
28 #include "vvToolMedianFilter.h"
29 #include "vvSlicerManager.h"
31 #include "vvToolInputSelectorWidget.h"
32 #include "clitkMedianImageGenericFilter.h"
34 //------------------------------------------------------------------------------
35 // Create the tool and automagically
36 ADD_TOOL(vvToolMedianFilter);
37 //------------------------------------------------------------------------------
39 //------------------------------------------------------------------------------
40 vvToolMedianFilter::vvToolMedianFilter(vvMainWindowBase * parent, Qt::WindowFlags f)
41 :vvToolWidgetBase(parent,f),
42 vvToolBase<vvToolMedianFilter>(parent),
43 Ui::vvToolMedianFilter()
46 Ui_vvToolMedianFilter::setupUi(mToolWidget);
47 mFilter = new clitk::MedianImageGenericFilter<args_info_clitkMedianImageFilter>;
50 // Set how many inputs are needed for this tool
51 AddInputSelector("Select one image", mFilter);
54 //------------------------------------------------------------------------------
55 vvToolMedianFilter::~vvToolMedianFilter()
58 //------------------------------------------------------------------------------
59 void vvToolMedianFilter::Initialize()
61 SetToolName("MedianFilter");
62 SetToolMenuName("MedianFilter");
63 SetToolIconFilename(":common/icons/ducky.png");
64 SetToolTip("Make 'MedianFilter' on an image.");
65 SetToolExperimental(true);
67 //------------------------------------------------------------------------------
69 void vvToolMedianFilter::apply()
73 if (!mCurrentSlicerManager) close();
74 QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
76 clitk::MedianImageGenericFilter<args_info_clitkMedianImageFilter>::Pointer filter =
77 clitk::MedianImageGenericFilter<args_info_clitkMedianImageFilter>::New();
78 filter->SetInputVVImage(mCurrentImage);
79 filter->SetArgsInfo(mArgsInfo);
80 filter->EnableReadOnDisk(false);
83 vvImage::Pointer output = filter->GetOutputVVImage();
84 std::ostringstream osstream;
85 osstream << "MedianFiltered_" << mCurrentSlicerManager->GetSlicer(0)->GetFileName() << ".mhd";
86 AddImage(output,osstream.str());
87 QApplication::restoreOverrideCursor();
90 //------------------------------------------------------------------------------
91 void vvToolMedianFilter::GetArgsInfoFromGUI()
93 /* //KEEP THIS FOR READING GGO FROM FILE
95 std::string a = "toto";
96 char * const* argv = new char*;
98 struct cmdline_parser_params p;
100 int good = cmdline_parser_ext(argc, argv, &args_info, &p);
103 mArgsInfo.radius_given=0;
104 mArgsInfo.verbose_flag = false;
105 // mArgsInfo.radius_arg = new int[3];
106 // Required (even if not used)
107 mArgsInfo.input_given = 0;
108 mArgsInfo.output_given = 0;
109 mArgsInfo.input_arg=new char;
110 mArgsInfo.output_arg = new char;
111 mArgsInfo.config_given=0;
112 mArgsInfo.verbose_given=0;
114 //------------------------------------------------------------------------------
115 void vvToolMedianFilter::InputIsSelected(vvSlicerManager *m)
117 mCurrentSlicerManager =m;
118 // Specific for this gui
119 mArgsInfo.radius_arg = new int[3];
120 int checkdimensions=mCurrentSlicerManager->GetDimension();
121 if(checkdimensions<3) {
122 horizontalSlider_3->hide();
124 mArgsInfo.radius_arg[2]=0;
125 connect(horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(UpdateH1slider()));
126 connect(horizontalSlider_2, SIGNAL(valueChanged(int)), this, SLOT(UpdateH2slider()));
128 horizontalSlider->show();
129 horizontalSlider_2->show();
130 horizontalSlider_3->show();
131 connect(horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(UpdateH1slider()));
132 connect(horizontalSlider_2, SIGNAL(valueChanged(int)), this, SLOT(UpdateH2slider()));
133 connect(horizontalSlider_3, SIGNAL(valueChanged(int)), this, SLOT(UpdateH3slider()));
137 //-----------------------------------------------------------------------------
139 void vvToolMedianFilter::UpdateH1slider()
142 mArgsInfo.radius_arg[0]=horizontalSlider->value();
143 spinBox->setValue(mArgsInfo.radius_arg[0]);
145 void vvToolMedianFilter::UpdateH2slider()
147 mArgsInfo.radius_arg[1]=horizontalSlider_2->value();
148 spinBox_2->setValue(mArgsInfo.radius_arg[1]);
150 void vvToolMedianFilter::UpdateH3slider()
152 mArgsInfo.radius_arg[2]=horizontalSlider_3->value();
153 spinBox_3->setValue(mArgsInfo.radius_arg[2]);