itk::InvalidRequestedRegionError
来源:互联网 发布:windows 10 fall 推送 编辑:程序博客网 时间:2024/05/16 10:22
计算机系统:Win8.1 (64 bit)
ITK:4.7.2 (64bit)
1 问题描述
本人使用ITK进行CT序列图像的分割,使用的是3D区域生长法。由于总体序列图像的容量比较大,因此希望通过对这些序列图像进行分组分割,从而节约计算机内存。在分组的时候,前面的组的序列图像张数是一样的,只有最后一组序列图像的的数量可能会比前面组要少。
当所有组的序列图像的张数一样时,分割过程并没有出现错误;但是,当最后一组序列图像数目少于前面的组别的时候,就发生了一下错误:
itk::InvalidRequestedRegionError (00000083A57FF308)
Location: "void __cdecl itk::DataObject::PropagateRequestedRegion(void)"
File: E:\ITK\InsightToolkit-4.7.2\Modules\Core\Common\src\itkDataObject.cxx
Line: 393
Description: Requested region is (at least partially) outside the largest possible region.
2 错误分析
上面的错误是由itk::SeriesWriter引起的。由于第一次调用itk::SeriesWriter时设定了序列图像的范围(假如:0~100,共101张图像)。在循环过程中,就算改变序列图像的索引起始和结束值(例如:100~200,共101张图像),只要其范围没有变,是不会出现上述错误的;然而,当将序列图像索引的范围变化时(例如:200~250,共51张图像),将会引发上述问题。
根据第1章问题描述中红色字体的错误信息的最后一行提示:所请求的区域不在最大可能的范围之内!因此可以猜测,在第一次设定序列图像索引的同时,也设定了最大允许请求范围,而再次改变索引范围时,这个最大允许请求范围并没有同步改变。
3 解决方法根据第2章的分析,我们需要做的就是在改变索引范围的同时,也要改变其最大允许请求范围。方法就是在调用itk::SeriesWriter:Update()之前,先调用下面的函数:
itk::SeriesWriter::UpdateLargestPossibleRegion()如果itkSeriesWriter的输入对象有这个函数,也应该在调用itkSeriesWriter:Update()之前先调用,例如图像类型转换器itk::CastImageFilter。
4 拓展
itk::SeriesWriter的设置也同理。
参考资料
[1]SphinxExamples/src/Core/Common/ReRunPipelineWithChangingLargestPossibleRegion/Code.cxx
- itk::InvalidRequestedRegionError
- ITK 数据源
- ITK介绍
- itk::ConfidenceConnectedImageFilter
- ITK+2010
- ITK 安装
- ITK编译
- 安装itk
- itk运行
- 安装itk
- 【ITK】VS2008 (VS2012) 配置 ITK
- ITK简介与ITK Pipeline
- ITK学习——ITK编程步骤
- itk的各种配制
- ITK 编译安装
- ITK 编程步骤示例
- Linux 下配置 ITK
- itk库依赖关系
- UIView属性
- 如何提升你的能力?给年轻程序员的几条建议
- C#多线程编程实战(从入门到精通系列)第三篇 正确终止线程
- 网狐平台游戏开发
- imp 遇到ORA-12899错误,解决方法
- itk::InvalidRequestedRegionError
- 欢迎使用CSDN-markdown编辑器
- Struts1.2基本配置入门
- SVN优化(一) SVN的忽略maven项目的target
- Navicat连接Oracle出现ORA-28457错误的解决方案
- 疯狂Java学习笔记(76)------------NIO.2第二篇
- 序列帧动画
- java android 按拼音排序
- oracle查询 :一个角色包括的系统权限,对象权限,Oracle有多少种角色,某个用户有什么角色