我想更好地理解dicom卷的渲染。從.dcm文件生成和讀取.vtk文件並修改模型
我有一組DICOM圖像的,從中我已經能夠提取軸向,冠狀和矢狀切,如下:
我首先想從頭開始生成3D模型,但似乎太難了。
所以我聽說VTK/ITK,和我一直在使用這個代碼來生成從我組圖像.vtk文件:
http://www.itk.org/Doxygen46/html/IO_2DicomSeriesReadImageWrite2_8cxx-example.html
它的工作原理,但我需要一些解釋:
當我打開與paraview包這個文件,我得到以下結果:
首先,這可能是一個愚蠢的問題,但爲什麼它是藍色的?
有沒有辦法切割和看到模型的內部?
我的目標不是使用ParaView,而且我想製作自己的.vtk讀卡器,我發現這個代碼我不記得在哪裏,我認爲這是應該工作的,但是我只能使用它是什麼都沒有的綠色背景:
#include <vtkPolyDataReader.h>
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
int main (int argc, char *argv[]) {
// Parse command line arguments
if (argc != 2) {
std::cerr << "Usage: " << argv[0] << " Filename(.vtk)" << std::endl;
return EXIT_FAILURE;
}
std::string filename = argv[1];
// Read all the data from the file
vtkSmartPointer<vtkPolyDataReader> reader = vtkSmartPointer<vtkPolyDataReader>::New();
reader->SetFileName(filename.c_str());
reader->Update();
// Visualize
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(reader->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderer->AddActor(actor);
renderer->SetBackground(.3, .6, .3); // Background color green
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
任何想法爲什麼?我在ParaView中看到我必須激活「音量」模式才能看到我的模型,這裏有類似的東西嗎?
最後一件事,這是非常重要的:是否有可能修改.vtk文件內的3D卷?例如,如果我想改變模型的特定部分的顏色,VTK是否提供允許這樣的工具?
謝謝您的回答,我想你讓我很快樂:DI有關於新的問題了一千了,但我會先了解這段代碼是如何工作的:)事實上,編輯模型中的值現在不是現在,但我只需要知道它是否可能:)再次感謝! – Charrette