VHI FILE FORMAT
AnatLine's Image Database primary function is the storage and delivery of multimedia files. These VHI files contain anatomical formats for Cross Sections, Volumes, Byte Masks, and Rendered images. Each file stores a complex format of data maps, data tables, and image bitmaps.
The Visible Human Image File (VHIF) format supports the delivery of multimedia files from the 3DSystem Image Database. VHIF files contain a file specifier as its file name. The specifier is designed to support automated file management, and image retrieval for client systems. This section defines the internal file format, block structure, and file types.
Each file consists of a File name, a Header, and a set of Information Object Pointers and Information Objects.
File Block Size:
| File Name: | 16 Bytes |
| Header Block: | 24 Bytes |
| Information Object Pointer (IOP): | 24 Bytes |
| Information Object Block (IOB): | Variable |
File Data Structure:
Numerical byte order: Most significant byte first (MSB). Image pixels per row size restricted1 to: 4k,2k,1k,512 (1Restricted to support Cross section reduction factor)
File Name:
Each VHI file name is an encoded identification of the anatomical and image data content. File names represent the major anatomical structure, the other substructures may be featured within the contained bitmap.
Header Block:
This block identifies the file type, version number, file name, number of file object pointers, and the offset, from beginning of file, to the first object pointer.
Information Object Pointer (IOP):
The IOP defines the data content and the offset from beginning of file to its Information Object Block.
Information Object Block (IOB):
The IOB contains text and data blocks, such as data maps, data tables, and bitmaps.
A. File Name: See file specifier description.
B. Header Block:(unsigned bytes)
| Offset | Size (Bytes) | Comments |
|---|---|---|
| 00H | 4 | "VHIF" file suffix |
| 04H | 2 | Version Number |
| 06H | 12 | File Name |
| 12H | 1 | Number of IOPs |
| 13H | 4 | Undefined |
| 17H | 1 | First IOP offset |
C. Information Object Pointer (IOP)(unsigned bytes):
| Offset | Size (Bytes) | Comments |
|---|---|---|
| 00H | 1 | Block type |
| 01H | 1 | Element data type |
| 02H | 1 | Bytes per element |
| 03H | 2 | Elements per row |
| 05H | 2 | Number of rows |
| 07H | 1 | Image format |
| 08H | 2 | Number of z planes |
| 0AH | 2 | X coordinate offset |
| 0CH | 2 | Y coordinate offset |
| 0EH | 2 | Z coordinate offset |
| 10H | 4 | IOB size (optional) |
| 14H | 4 | IOB offset |
D. Information Object Block (IOB) (unsigned bytes):
| Offset | Size (Bytes) | Comments |
|---|---|---|
| Given by IOP | Given by IOP | Defined by IOP |
| Data field | Data Type |
|---|---|
| File signature | ASCII characters (4bytes) |
| Version number | hexadecimal value (short,2bytes) |
| File specifier | ASCII characters (12bytes) |
| IOP count | hexadecimal value (1byte) |
| Undefined | Default (int = 0, 4bytes) |
| First IOP offset | hexadecimal value (1byte) |
A. Block Type:
| Byte Value | Data Block |
|---|---|
| 00H | Undefined |
| 01H | Text |
| 02H | Data Table |
| 03H | Data Map |
| 04H | Image Bitmap |
| 05H | ROI Stack |
| 06H | Bitmask Stack |
| 07H | Bytemask Stack |
| 08H | Rendered Stack |
| 09H | Video |
| 0AH | Audio |
| 0BH | Graphics |
| 0CH | Compressed ByteMask Stack |
| (UNIX compressed) |
B. Element Data Type:
| Byte Value | Data Type |
|---|---|
| 00H | Undefined |
| 01H | Binary |
| 02H | ASCII |
C. Bytes per Element:
| Byte Value | Bytes per element |
|---|---|
| 00H | One bit per element |
| nnH | Number of bytes |
D. Elements per Row:
| Byte Value | Elements per Row |
|---|---|
| 0000H | Undefined |
| nnnnH | Number of data columns |
E. Number of Rows:
| Byte Value | Number of Rows |
|---|---|
| 0000H | Undefined |
| nnnnH | Number of data rows |
F. Image Format:
| Byte Value | Format |
|---|---|
| 00H | Coded Data |
| 01H | Binary Bitmap |
| 02H | Monochrome Bitmap |
| 03H | 8 bit color |
| 04H | RGB interleaved |
| 05H | RGB non-interleaved |
| 06H | GIF |
| 07H | TIF |
| 08H | JPG |
| O9H | MPG |
| OAH | QT (quick time) |
G. Number of Z Planes:
| Byte Value | Number of Z Planes |
|---|---|
| nnnnH | Number of separate bitmap planes |
H. X Coordinate Offset:(Bitmap data only)
| Byte Value | X Coordinate Offset |
|---|---|
| nnnnH | Image plane pixel offset from |
| top left corner of full dataset. |
I. Y Coordinate Offset:(Bitmap data only)
| Byte Value | Y Coordinate Offset |
|---|---|
| nnnnH | Image plane pixel offset from |
| top left corner of full dataset. |
J. Z coordinate Offset:(Bitmap data only)
| Byte Value | Z Coordinate Offset |
|---|---|
| nnnnH | Offset from top plane of full dataset. |
K. IOB Size: Byte size of the IOB.
L. IOB Offset: Offset from beginning of file to IOB.
Information Object Blocks contain text blocks with descriptive information, and data blocks with data maps, tables, and bitmaps.
TEXT BLOCK:
The first Information Object Block in each file is a text block. Each text block is formatted with structured, and narrative ASCII text. The structured section includes anatomical,specimen, production, and image data.
A. Structured Data Block:
| Line 1 | Anatomical Label: | (Label Data) |
| Line 2 | UMLS UI: | 8 Bytes (ie. C0018787) |
| Line 3 | Anatomical Data: | Blank (future use) |
| Line 4 | Anatomical Data: | Blank (future use) |
Line 5 | Anatomical Data: | Blank (future use) |
| Line 6 | Anatomical Data: | Blank (future use) |
| Line 7 | Anatomical Data: | Blank (future use) |
| Line 8 | Specimen Data: | Blank (future use) |
| Line 9 | Specimen Data: | Blank (future use) |
| Line 10 | Sex: | (Male, Female) |
| Line 11 | Race: | (Caucasian,Black,etc) |
| Line 12 | Age: | No. years No. months |
| Line 13 | Height: | No. feet No. inches |
| Line 14 | Weight: | No. lbs |
| Line 15 | Image Data | Blank (future use) |
| Line 16 | Image Data: | Blank (future use) |
| Line 17 | Image Data: | Blank (future use) |
| Line 18 | Image Data: | Blank (future use) |
| Line 19 | Image capture: | (70mm film,CCD,35mm film) |
| Line 20 | Pixel dimension: | x:0.144mm,y:0.144mm,z:1.0mm |
| Line 21 | Post Image Process: | 70mm film to digital data |
| Line 22 | Embedded File: | GIF,TIF,JPG,etc |
| Line 23 | File Build Date: | Date String (mm/dd/yyyy) |
| Line 24 | File Data: | Blank (future use) |
| Line 25 | File Data: | Blank (future use) |
B. Free Text Block:
Background Information: (to be specified)
Anatomical Information: (to be specified)
Specimen Information: (see specimen editor data)
Producer Information: (see producer editor data)
Other Information: (to be specified)
DATA BLOCKS:
Data blocks are unique to the file types (see below).
The current version of the VHIF file format defines four file types:
A. Cross Section file:
Single plane full color bitmaps of anatomical image sections alone the body axis. Each file contains a header block, text block of descriptive information, and three data blocks.
B. Volume of Interest file: VOIs are collections of full color image bitmaps(Regions of Interest) along the z-plane containing a defined anatomical structure. Enclosed with the VOI is a supplementary stack of segmented binary overlays, and a segment table.
C. Rendered file: Rendered images are 2D representations of 3D volume and surface rendered images.
D. Segmented Byte Mask file: Byte Masks are collections of binary bitmaps of anatomical structures. These bitmaps are image overlays for cross section images.