医站点医维基

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 386|回复: 0

VTK图像类型转换

[复制链接]

109

主题

23

回帖

3550

积分

管理员

积分
3550
发表于 2021-4-14 10:05:53 | 显示全部楼层 |阅读模式

5.3.3 图像类型转换

1.vtkImageCast

图像数据类型转换在数字图像处理中会频繁用到。一些常用的图像算子(例如梯度算子)在计算时出于精度的考虑,会将结果存储为float 或double 类型,但在图像显示时,一般要求图像为unsigned char 类型,这时就需要对数据类型进行转换。VTK 中最简单的类型转换Filter就是vtkImageCast,其使用方法如下:

  • vtkSmartPointer<vtkImageCast> imageCast =  
  • vtkSmartPointer<vtkImageCast>::New();  
  • imageCast->SetInput((vtkDataObject *)reader->GetOutput());  
  • imageCast->SetOutputScalarTypeToFloat();  
  • imageCast->Update();

只需要把SetOutputScalarTypeTo×××()设置成相应的输出类型即可。另外,该类中还有一个变量ClampOverflow,用来标识是否需要截断数据。默认情况下,该变量值为0。当设置其值为1 时,输出的像素值不能超过输出类型的***值,超过时自动截断至***值。该类在进行类型转换时,只是将数据进行强制转换,而没有进行比例的缩放,因此使用比较受限制,VTK 中也不推荐使用该类。例如一幅double 类型的图像,其数值范围为[-1, 1],如果需要将图像转换为unsigned char 类,则无法使用该Filter 进行转换。这时就需要用到vtkImageShiftScale。

2.vtkImageShiftScale

vtkImageShiftScale 可以指定偏移和比例参数来对输入图像数据进行操作,例如一幅double 类型的图像,其数值范围为[-1, 1],如果将其转换为unsigned char 类型,需要设置shift值为+1,比例系数设置为127.5,那么输入数据-1 映射为(-1+1)×127.5=0,而+1 则会映射为(+1+1)×127.5=255。对应代码如下:

  • vtkSmartPointer<vtkImageShiftScale> shiftScaleFilter =  
  • vtkSmartPointer<vtkImageShiftScale>::New();  
  • shiftScaleFilter->SetInputConnection(image->GetProducerPort());  
  • shiftScaleFilter->SetOutputScalarTypeToUnsignedChar();  
  • shiftScaleFilter->SetShift(1);  
  • shiftScaleFilter->SetScale(127.5);  
  • shiftScaleFilter->Update();

vtkImageShiftScale::SetShift()用于设置偏移量Shift,vtkImageShiftScale::SetScale()用于设置放缩值Scale , 如果源图像的像素值为Val , 那么输出值为(Val+shift) × Scale 。SetOutputScalarTypeToUnsignedChar()用于设置输出类型为unsigned char,当然,该类也提供了其他输出类型的设置函数。另外需要注意的是,该类中也有一个变量ClampOverflow,当其值为1 时,如果输出值超过输出类型的***值时,则自动截断。例如,输出类型为unsigned char,数值范围为0~255,当输出像素值为257 时,该类会自动截断取值为255。默认情况下,变量ClampOverflow 的值为0,此时,当输出值为257,输出类型为unsigned char 时,该类不会将其截断,而是会产生溢出,***取值为2。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于我们|医维基|网站地图|Archiver|手机版|医疗之家 ( 沪ICP备2023001278号-1 )  

GMT+8, 2024-5-7 11:41 , Processed in 0.111692 second(s), 22 queries .

Designed by Medical BBS

快速回复 返回顶部 返回列表