参考資料 1C
2010/12/15

ボクセルファイルの構成


ボクセルファイルは、3つのパートから構成されたファイルで、拡張子は、.vxl を用いる。

ボクセルファイルのデータ部は、1ボクセルあたり1、2、3、4バイトの何れかのバイト数からなり、
ヘッダー部、コメント部(任意)、データ部から構成されている。

ファイルヘッダー部
typedef struct VOXELHEADER {  // Ver 0.1
int vxType; // int 4byte "VXL\0" 0x004C5856
int vxSize; // int 4byte ファイル全体の大きさ[byte]
int vxOffByte; // int 4byte ファイルの先頭からVoxelデータまでのオフセット(Byte)
int vxLatitude; // int 4byte 1 Voxelの横
int vxLongitude; // int 4byte 1 Voxelの縦
int vxAltitude; // int 4byte 1 Voxel の高さ
int vxBitCount; // int 4byte 1 Voxelのデータを表現するビット数
int vxSizeImage; // int 4byte Voxelデータのバイト数 lx*ly*lz*sizeof(VOXEL)
} VOXELHEADER ;
vxBitCount が 12 で、vxLatitude, vxLongitude, vxAltitude が 10、vxSizeImage が 4,000 の場合
   1 voxel は、4バイト【 4,000/(10x10x10) 】で構成されていおり、32ビット(4バイト)中の下位 12ビットを
   使用して、ボクセル毎のデータが格納されている。
   上位20ビットの値は不定だが、ビットがクリア (0) されていることを強く推奨する。
   vxBitCount がマイナス(例、-12) の場合は、ビッグエンディアンでデータが格納されている
コメント部(任意)
"<xml>",("<xml ....>"属性定義のある場合を含む)で始まり "</xml>"、で終了しているか、
"<html>",("<html ....>"属性定義のある場合を含む)で始まり "</html>" で終了して
いなければならない
コメント部は、ファイルの先頭からヘッダーの大きさ、sizeof(VOXELHEADER)バイト、をスキップ
したアドレスから、ヘッダーの vxOffByte が示すアドレスまでである。
コメントのバイト数は、VOXELHEADER.vxOffByte - sizeof(VOXELHEADER) として算出できる
データ部
横方向を表すデータが座標の小さな値方向(0)から、増加する方向に vxLatitude 個並ぶ。
vxLatitude の横方向のデータが、縦方向の座標の小さな方向(0)から、増加する方向に
vxLongitude 個並ぶ。 これにより、最初の高さ方向が0のデータが一層分並んだ事になる。
この並びが、vxAltitude 個分連続する方式で ボクセルデータは格納されている。
データ部はボクセルデータが連続して格納されている。
(BMPファイルの様に、1行分の長さを調整するダミーデータは、使用していない)


コメント部は、showVoxelHeaderを使って確認できます。 (windows 環境で利用可能なバイナリーファイルも同胞)

    ・ボクセルデータの情報のみを表示させる。
     showVoxelHeader.exe CThead.vxl >nul

    ・ボクセルデータのコメントのみを表示させる。
     showVoxelHeader.exe CThead.vxl 2>nul

     出力をリダイレクトしてファイルに書き出し、ブラウザーで確認する
     showVoxelHeader.exe CThead.vxl > voxel_comm.html 2>nul


コメントの記載例i
<html><head>
  <meta content="text/html; charset=UTF-8" http-equiv="content-type">
  <title></title>
</head>
<body>
<pre>
Description:  CT study of a cadaver head
Dimensions:   113 slices of 256 x 256 pixels,
              voxel grid is rectangular, and
              X:Y:Z aspect ratio of each voxel
              is 1:1:2 Files: 113 binary files,
              one file per slice
File format:  16-bit integers (Mac byte ordering),
              file contains no header
Data source:  acquired on a General Electric
              CT Scanner and provided courtesy
              of North Carolina Memorial Hospital
---------------------------------------------------

file size = 29495665
typedef struct VOXELHEADER {
  int vxType;      // int  4byte  4C5856
  int vxSize;      // int  4byte  29495665
  int vxOffByte;   // int  4byte  4465
  int vxLatitude;  // int  4byte  256
  int vxLongitude; // int  4byte  256
  int vxAltitude;  // int  4byte  225
  int vxBitCount;  // int  4byte  16
  int vxSizeImage; // int  4byte  29491200
} VOXELHEADER ;
</pre>
</body></html>



go to TopPage go to CategoryTop