Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "Step6.h"
00019
00020 #include "QmitkRenderWindow.h"
00021 #include "QmitkSliceWidget.h"
00022
00023 #include "mitkDataNodeFactory.h"
00024 #include "mitkProperties.h"
00025 #include "mitkRenderingManager.h"
00026
00027 #include "mitkGlobalInteraction.h"
00028 #include "mitkPointSet.h"
00029 #include "mitkPointSetInteractor.h"
00030
00031 #include "mitkImageAccessByItk.h"
00032
00033 #include "mitkRenderingManager.h"
00034
00035 #include <QHBoxLayout>
00036 #include <QVBoxLayout>
00037 #include <QPushButton>
00038 #include <QLabel>
00039 #include <QLineEdit>
00040 #include <QPushButton>
00041
00042
00043
00044 Step6::Step6(int argc, char* argv[], QWidget *parent)
00045 : QWidget(parent)
00046 {
00047
00048
00049
00050 Load(argc, argv);
00051 }
00052
00053 void Step6::Initialize()
00054 {
00055
00056
00057 this->SetupWidgets();
00058
00059
00060 QWidget *controlsParent = new QWidget(this);
00061 this->layout()->addWidget(controlsParent);
00062
00063 QHBoxLayout* hlayout = new QHBoxLayout(controlsParent);
00064 hlayout->setSpacing(2);
00065
00066 QLabel *labelThresholdMin = new QLabel("Lower Threshold:", controlsParent);
00067 hlayout->addWidget(labelThresholdMin);
00068
00069 m_LineEditThresholdMin = new QLineEdit("-1000", controlsParent);
00070 hlayout->addWidget(m_LineEditThresholdMin);
00071
00072 QLabel *labelThresholdMax = new QLabel("Upper Threshold:", controlsParent);
00073 hlayout->addWidget(labelThresholdMax);
00074
00075 m_LineEditThresholdMax = new QLineEdit("-400", controlsParent);
00076 hlayout->addWidget(m_LineEditThresholdMax);
00077
00078
00079
00080 QPushButton* startButton = new QPushButton("start region growing",
00081 controlsParent);
00082 hlayout->addWidget(startButton);
00083
00084 connect(startButton, SIGNAL(clicked()), this, SLOT(StartRegionGrowing()));
00085 if (m_FirstImage.IsNull())
00086 startButton->setEnabled(false);
00087
00088
00089
00090 m_Seeds = mitk::PointSet::New();
00091 mitk::DataNode::Pointer pointSetNode = mitk::DataNode::New();
00092 pointSetNode->SetData(m_Seeds);
00093 pointSetNode->SetProperty("layer", mitk::IntProperty::New(2));
00094 m_DataStorage->Add(pointSetNode);
00095 mitk::GlobalInteraction::GetInstance()->AddInteractor(
00096 mitk::PointSetInteractor::New("pointsetinteractor", pointSetNode));
00097 }
00098
00099 int Step6::GetThresholdMin()
00100 {
00101 return m_LineEditThresholdMin->text().toInt();
00102 }
00103
00104 int Step6::GetThresholdMax()
00105 {
00106 return m_LineEditThresholdMax->text().toInt();
00107 }
00108
00109 void Step6::StartRegionGrowing()
00110 {
00111 AccessByItk_1(m_FirstImage, RegionGrowing, this);
00112
00113 mitk::RenderingManager::GetInstance()->RequestUpdateAll();
00114 }
00115
00116 void Step6::Load(int argc, char* argv[])
00117 {
00118
00119
00120
00121
00122 m_DataStorage = mitk::StandaloneDataStorage::New();
00123
00124
00125
00126
00127 int i;
00128 for (i = 1; i < argc; ++i)
00129 {
00130
00131 if (strcmp(argv[i], "-testing") == 0)
00132 continue;
00133
00134
00135
00136 mitk::DataNodeFactory::Pointer nodeReader =
00137 mitk::DataNodeFactory::New();
00138 const char * filename = argv[i];
00139 try
00140 {
00141 nodeReader->SetFileName(filename);
00142 nodeReader->Update();
00143
00144
00145
00146
00147
00148
00149 mitk::DataNode::Pointer node = nodeReader->GetOutput();
00150 m_DataStorage->Add(node);
00151
00152 mitk::Image::Pointer image =
00153 dynamic_cast<mitk::Image*> (node->GetData());
00154 if ((m_FirstImage.IsNull()) && (image.IsNotNull()))
00155 m_FirstImage = image;
00156 } catch (...)
00157 {
00158 fprintf(stderr, "Could not open file %s \n\n", filename);
00159 exit(2);
00160 }
00161 }
00162 }
00163
00164 void Step6::SetupWidgets()
00165 {
00166
00167
00168
00169
00170
00171 QVBoxLayout* vlayout = new QVBoxLayout(this);
00172 vlayout->setMargin(0);
00173 vlayout->setSpacing(2);
00174
00175
00176 QWidget* viewParent = new QWidget(this);
00177 vlayout->addWidget(viewParent);
00178
00179 QHBoxLayout* hlayout = new QHBoxLayout(viewParent);
00180 hlayout->setMargin(0);
00181 hlayout->setSpacing(2);
00182
00183
00184
00185
00186
00187
00188 QmitkRenderWindow* renderWindow = new QmitkRenderWindow(viewParent);
00189 hlayout->addWidget(renderWindow);
00190
00191
00192 renderWindow->GetRenderer()->SetDataStorage(m_DataStorage);
00193
00194
00195 renderWindow->GetRenderer()->SetMapperID(mitk::BaseRenderer::Standard3D);
00196
00197
00198
00199
00200
00201
00202
00203 QmitkSliceWidget *view2 = new QmitkSliceWidget(viewParent);
00204 hlayout->addWidget(view2);
00205
00206
00207
00208 view2->SetDataStorage(m_DataStorage);
00209 mitk::DataStorage::SetOfObjects::ConstPointer rs = m_DataStorage->GetAll();
00210 view2->SetData(rs->Begin(), mitk::SliceNavigationController::Transversal);
00211
00212
00213
00214 m_DataStorage->Add(view2->GetRenderer()->GetCurrentWorldGeometry2DNode());
00215
00216
00217
00218
00219
00220
00221
00222 QmitkSliceWidget *view3 = new QmitkSliceWidget(viewParent);
00223 hlayout->addWidget(view3);
00224
00225
00226
00227 view3->SetDataStorage(m_DataStorage);
00228 view3->SetData(rs->Begin(), mitk::SliceNavigationController::Sagittal);
00229
00230
00231
00232 m_DataStorage->Add(view3->GetRenderer()->GetCurrentWorldGeometry2DNode());
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244 }
00245