MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->actionDICOM_Sequence, SIGNAL(triggered()), this, SLOT(DICOMseq()));
connect(ui->actionExit, SIGNAL(triggered()), this, SLOT(close()));
connect(ui->actionCanny_2, SIGNAL(triggered()), this, SLOT(canny()));
connect(ui->actionScript_window, SIGNAL(triggered()), this, SLOT(script()));
}
MainWindow::~MainWindow()
{
delete ui;
}
int MainWindow::DICOMseq()
{
typedef double InputPixelType;
//ピクセルタイプqtのitkフィルターqactionボタンへの入力としてDICOM ITKリーダー出力を与える方法?
const unsigned int InputDimension = 3;
//画像
typedef itk::Image< InputPixelType, 3 > InputImageType;
//イメージタイプ
typedef itk::ImageSeriesReader<InputImageType> ReaderType;
//イメージタイプ
ReaderType::Pointer reader = ReaderType::New();
0123のリーダーの寸法
VTKの画像データにITK画像データを変換するためITK
QDir dir("Dir");
dir = QFileDialog::getExistingDirectory(0, " ");
QFileInfoList list = dir.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
std::vector<std::string> names;
foreach(QFileInfo finfo, list)
{
std::string str = dir.path().toStdString().c_str();
str = str + "/";
names.push_back(str + finfo.fileName().toStdString().c_str());
}
reader->SetFileNames(names);
//例外処理
try
{
reader->Update();
}
catch (itk::ExceptionObject & e)
{
std::cerr << "exception in file reader " << std::endl;
std::cerr << e << std::endl;
return EXIT_FAILURE;
}
//コネクタの名前ジェネレータの//交換
typedef itk::ImageToVTKImageFilter<InputImageType > ConnectorType;
ConnectorType::Pointer connector = ConnectorType::New();
connector->SetInput(reader->GetOutput());
try
{
connector->Update();
}
catch (itk::ExceptionObject & e)
{
std::cerr << "exception in file reader " << std::endl;
std::cerr << e << std::endl;
return EXIT_FAILURE;
}
vtkImageData * image = vtkImageData::New();
image->DeepCopy(connector->GetOutput());
vtkInteractorStyleImage *style = vtkInteractorStyleImage::New();
renderWindowInteractor1->SetInteractorStyle(style);
viewer1->SetupInteractor(renderWindowInteractor1);
viewer1->SetInputData(image);
viewer1->SetSliceOrientationToXY();
viewer1->GetRenderer()->ResetCamera();
ui->qvtkWidget->SetRenderWindow(viewer1->GetRenderWindow());
ui->qvtkWidget->GetRenderWindow()->Render();
return EXIT_SUCCESS;
}
void MainWindow::canny()
{
//私はここで最初にDICOMseq()から画像出力を得るためにコードを書く必要があります。そして、canny検出のitkコード//を適用します。}