vtkBMPWriter有人用过吗?从dicom生成的bmp图像失真要如何处理啊
vtk吧
全部回复
仅看楼主
level 3
nc506898727 楼主
如题,dicom文件用vtkDICOMImageReader读的,转换成bmp图像后,发现生成的图片有严重的失真,不知道这个该如何处理啊?我到网上搜索说是高位丢失,可是转换时vtkBMPWriter只接收unsigned char啊,这个该如何是好呢?
请高手赐教,O(∩_∩)O谢谢!
2014年01月11日 12点01分 1
level 12
凭直觉,应该不是高位失真的问题。
贴代码,上结果图,帮你看看~
2014年01月12日 04点01分 2
代码在下面,谢啦!
2014年01月12日 06点01分
level 3
nc506898727 楼主
vtkSmartPointer<vtkDICOMImageReader> reader =
vtkSmartPointer<vtkDICOMImageReader>::New();
//reader->SetDirectoryName(fileDir_str);
reader->SetFileName(file_name_str);
reader->SetDataOrigin(0.0,0.0,0.0);
vtkImageCast *imgcast = vtkImageCast::New();
imgcast->SetInput(reader->GetOutput());
imgcast->SetOutputScalarTypeToUnsignedChar();
vtkBMPWriter *writer = vtkBMPWriter::New();
writer->SetInput(imgcast->GetOutput());
writer->SetFileName("d://444.bmp");
writer->Write();
writer->Update();
图片就这个样子,好悲剧的。我到网上搜,遇到这个问题的人也有,但是没有找到解决问题的方法。
2014年01月12日 06点01分 3
level 12
的确是高位丢失的事情,vtkImageCast 问题出在这里。
建议:
1、换ITK 或者 DCMTK 做转换 可以设置窗宽窗位 更好一点
2、VTK有一个函数可以保存当时窗口, 先显示然后把窗口保存成bmp,这样一定没问题
3、用VTK当中的lookuptable做颜色查找表,这样的话,可以保证丢失图像数据信息
2014年01月14日 02点01分 4
谢谢啦,我还是转ITK了。
2014年01月14日 06点01分
能具体一点吗[委屈]?还是不太会
2015年08月05日 03点08分
回复
happy��
:加油~~~
2015年08月13日 23点08分
哪个类哪个函数可以把框口保存成bmp?
2015年08月28日 06点08分
level 2
图片应该是16位的,才会有高位失真的情况。先转成八位的,再保存
2016年01月05日 03点01分 5
正解~
2016年01月07日 00点01分
@rabbitbride 大神~我粉过你的百度云哟!
2016年01月07日 11点01分
@rabbitbride 两年了,大神还在用vtk吗?我表示研究生都毕业了,感慨啊,过得好快
2016年01月07日 18点01分
@smile小君94 [哈哈] 我百度云好乱好乱
2016年01月08日 00点01分
1