赞
踩
VTK读取dcm文件(医学影像文件)的一个核心的知识点就是,窗宽窗位。
知识点:
窗宽/窗位的概念
窗宽是图像显示的灰度范围。一般显示器的灰度范围为256级,而医学图像的灰度范围则远远大于该范围,因此通过显示器显示时不能显示所有灰度级,需要使用窗宽来定义欲显示的灰度范围。灰度值高于该范围的最大值时:白影。低于:黑影。比如,窗宽200,窗位100,则可视范围:0-200;窗位500,可视范围:400-600
QDialog *dlg = new QDialog(); dlg->resize(600, 600); vtkSmartPointer<vtkImageViewer2> imageView = vtkSmartPointer<vtkImageViewer2>::New(); vtkSmartPointer<vtkRenderer> render = vtkSmartPointer<vtkRenderer>::New(); vtkSmartPointer<vtkGenericOpenGLRenderWindow> renderwindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New(); QVTKOpenGLWidget *vtkWidget = new QVTKOpenGLWidget(dlg); vtkWidget->resize(600, 600); vtkWidget->SetRenderWindow(renderwindow); vtkWidget->GetRenderWindow()->AddRenderer(render); vtkSmartPointer<vtkDICOMImageReader> reader = vtkSmartPointer<vtkDICOMImageReader>::New(); reader->SetFileName("C:\\Users\\admin\\Desktop\\VTK\\0000.dcm"); reader->Update(); imageView->SetInputConnection(reader->GetOutputPort()); imageView->SetRenderWindow(vtkWidget->GetRenderWindow()); imageView->SetRenderer(render); imageView->SetupInteractor(vtkWidget->GetRenderWindow()->GetInteractor()); imageView->SetColorLevel(11414); //核心部分,如果不设置的话。可能会出现白色或者黑色 imageView->SetColorWindow(21822); qDebug() << "colorLevel : "<<imageView->GetColorLevel()<<" colorWindow:"<<imageView->GetColorWindow(); render->ResetCamera(); render->DrawOn(); vtkWidget->GetRenderWindow()->Render();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。