读书人

ITK里边的数据类型有点乱

发布时间: 2013-08-04 18:26:15 作者: rapoo

ITK里面的数据类型有点乱
ITK编程的一个重要步骤就是定义图片对吧,比如:
typedef itk::Image< PixelType, 2 > ImageType;
但是,我发现这里的PixelType居然可以是char型的,这里的PixelType不应该是像素的类型吗?像素能是char行的吗?求解释。。。。

[解决办法]
我还是觉得你的 reader 用错了,和你另一个帖子 (http://bbs.csdn.net/topics/390525479?page=1#post-395114444) 里面的问题类似。这页 (http://www.itk.org/Doxygen/html/classitk_1_1Image.html) 说

"The data in an image is arranged in a 1D array as [][][][slice][row][col] with the column index varying most rapidly"

这么看的话,itk::Image 实际上是个密集存储的多维数组,因此我猜它对应的 reader/writer 也期待很平凡的文件格式,类似于 bmp 这样每个像素点都存储的(实际上应该比 bmp 更平凡)。这样的话,jpg 就不行,因为其是压缩存储格式,需要解码才能变成像素点阵的,这也解释了 itk 为什么还需要提供一个 itk::JPEGImageIO 类。

你可能对于 itk::Image 的理解有些出入,image 这个词有图片的意思,比如大家都说 jpeg is an image format. 但在这里 image 没有这么广义的意思,根据 itk 的应用背景以及目标领域(医学成像),所谓的 image 是指临床医学中通过成像仪器(CT,MRI)采集生成的原生数据格式,这种数据也叫 volume data,一般情况下就是一个三维数据体。有些仪器把一个 volume data 分成很多个扫描平面存储,这样每一个平面对应一个二维数据面,其存储结构类似于矩阵或二维数组。人们统称这类三维数据体或二维数据面为 image,因为这些东西一般是人体的断层扫描,每一个扫描层看起来就像一张图片。

读书人网 >C++

热点推荐