3d 无法理解.inr文件格式

3d 无法理解.inr文件格式,3d,file-format,cgal,3d,File Format,Cgal,我正在尝试为cgal库创建灰度.inr图像,但文件格式有问题。 ,但它看起来并不完整,只讨论标题,而不是数据本身。 ,但不幸的是它是用法语写的 我要做的是将一个对象表示为一个充满布尔值的3D数组,因此如果一个位置位于对象内部,则该位置的值为1,如果该位置位于对象外部,则该位置的值为0 基于第二个链接(如果理解正确的话),我现在所做的是在标题后面写一行上的每个z平面,下一个z平面在新行上。 所以我有一行上的列的x值,代表第一行,然后是同一行上第二行的x值,就像y乘以最后一行一样。然后我为新的z平面

我正在尝试为cgal库创建灰度.inr图像,但文件格式有问题。
,但它看起来并不完整,只讨论标题,而不是数据本身。
,但不幸的是它是用法语写的

我要做的是将一个对象表示为一个充满布尔值的3D数组,因此如果一个位置位于对象内部,则该位置的值为1,如果该位置位于对象外部,则该位置的值为0

基于第二个链接(如果理解正确的话),我现在所做的是在标题后面写一行上的每个z平面,下一个z平面在新行上。
所以我有一行上的列的x值,代表第一行,然后是同一行上第二行的x值,就像y乘以最后一行一样。然后我为新的z平面跳转一行,并以同样的方式写入数据

,但当我尝试对其进行网格划分时,结果是一个立方体而不是圆柱体,就好像cgal(我使用了mesh_optimization_lloyd_示例)不关心布尔值,只对整个体积进行网格划分一样

我试着查看示例中提供的.inr文件(如skull_2.9.inr),但尽管标题非常清晰,但没有文本编辑器可以读取图像数据,这让我认为可能不仅仅是写0或1


是因为.inr的问题吗?或者可能我使用cgal时出错了?

我终于设法让它工作起来了,下面是在帮助别人时需要做的事情

Header:它必须是256字节的倍数,包括Header结尾后的回车,下面是一个示例

#INRIMAGE-4#{ // format type
XDIM=150 // x dimension
YDIM=200 // y dimension
ZDIM=100 // z dimension
VDIM=1 // dimension of the data, here 1 for scalar or 3 for thing like RGB values
VX=5 // voxel size in x
VY=5 // voxel size in y
VZ=5 // voxel size in z
// a higher voxel size results in a more precise 3D mesh
TYPE=unsigned fixed // type of data written, can float, signed fixed or unsigned fixed, unclear if it makes a difference in my case
SCALE=2**0 // not used by most programs apparently
PIXSIZE=8 bits // size of a char, can be 8, 16, 32 or 64
CPU=pc // the type of cpu for little/big endianness, pc is little endian

// Fill with carriage returns until the header is a multiple of 256 bytes, including the end of the header (4 bytes including the line break)

##} // the line break is included in the header count
现在数据本身:
不管文档似乎暗示了什么,文档中没有换行符,所有内容都是连续的。 数据必须用二进制写,而不是ASCII(所以在我的C++中,这将是静态的)(空间[i] [j] [k]),用你所使用的数据类型替换字符。p> 最后一个怪癖是,文件似乎是按列主顺序排列的,因此,如果在C中有一个3d数组(行主),则需要在写入(x,y)平面之前转置它们