itk::Image在使用时的注意事项

ITK::image在使用时的注意事项

1. ITK::Image的三种Region

ITK::Image在使用的时候有三个相关的Region需要注意:LargestPossibleRegion, RequestedRegion, BufferRegion。

在ITK的官方定义中,三种Region的定义如下:

  • LargestPossibleRegion defines the size and starting index of the image dataset. The entire image dataset, however, may not be resident in memory.

  • BufferRegion is the region of the image that is resident in memory. The Buffer is a contiguous block of memory.

  • RequestedRegion is used by the pipeline execution model to define what a filter is requested to produce.

2. Invalid RequestedRegion Error

ITK::Image VerifyRequestedRegion()

在PipeLine中对图像进行处理时,最经常使用的就是RequestedRegion

在对图像进行处理时,最常见的Exception就是”Invalid RequestedRegion Error”,造成这种情况的主要原因就是RequestedRegion 的索引范围超过了 LargestPossibleRegion

要避免这种问题,可以在使用RequestedRegion之前,首先对itk::image使用VerifyRequestedRegion进行检验。

ITK::ImageToImageFilter UpdateLargestPossibleRegion()

在使用itk::ImageToImgaeFilter对图像进行处理时,常见的问题就是当Filter中Image的Size发生变化时,RequestedRegion并没有发生变化。在这种情况下,对Filter进行Update()获得图像输出时,就会出现Invalid RequestedRegion Error的错误。

避免这种错误的方法就是将Filter的Update()换成UpdateLargestPossibleRegion()。这样在运行PipeLine的时候,可以自动更新Filter中的ImageSize。

值得注意的是,在ITK中的itk::ImageToVTKImageFitler中,却不需要上述的转换,直接使用Update()即可。

3. ITK::Image 初始化时的操作

此外,在对itk::Image进行初始化的时候(调用Intialize())时,只是对image allocated memory进行了清理,但是image的Size等都没有进行更新。这个时候,要调用UpdateOutputInformation()来对image中的其他参数进行更新,包括size, origin, spacing等等。


参考文档:

  1. http://www.itk.org/Wiki/ITK/Tutorials/DOs_and_DONTs
  2. http://itk.org/ITKExamples/src/Core/Common/ReRunPipelineWithChangingLargestPossibleRegion/Documentation.html
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值