/usr/include/openigtlink/igtl_image.h is in libopenigtlink1-dev 1.9.2~svn7468-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | /*=========================================================================
Program: OpenIGTLink Library
Module: $HeadURL: http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink/Source/igtlutil/igtl_image.h $
Language: C
Date: $Date: 2011-03-24 00:08:23 -0400 (Thu, 24 Mar 2011) $
Version: $Revision: 7354 $
Copyright (c) Insight Software Consortium. All rights reserved.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __IGTL_IMAGE_H
#define __IGTL_IMAGE_H
#include "igtl_win32header.h"
#include "igtl_util.h"
#include "igtl_types.h"
#include "igtl_win32header.h"
#define IGTL_IMAGE_HEADER_VERSION 1
#define IGTL_IMAGE_HEADER_SIZE 72
/* Data type */
#define IGTL_IMAGE_DTYPE_SCALAR 1
#define IGTL_IMAGE_DTYPE_VECTOR 3
/* Scalar type */
#define IGTL_IMAGE_STYPE_TYPE_INT8 2
#define IGTL_IMAGE_STYPE_TYPE_UINT8 3
#define IGTL_IMAGE_STYPE_TYPE_INT16 4
#define IGTL_IMAGE_STYPE_TYPE_UINT16 5
#define IGTL_IMAGE_STYPE_TYPE_INT32 6
#define IGTL_IMAGE_STYPE_TYPE_UINT32 7
#define IGTL_IMAGE_STYPE_TYPE_FLOAT32 10
#define IGTL_IMAGE_STYPE_TYPE_FLOAT64 11
/* Endian */
#define IGTL_IMAGE_ENDIAN_BIG 1
#define IGTL_IMAGE_ENDIAN_LITTLE 2
/* Image coordinate system */
#define IGTL_IMAGE_COORD_RAS 1
#define IGTL_IMAGE_COORD_LPS 2
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(1) /* For 1-byte boundary in memroy */
/*
* Image data header for OpenIGTLinik protocol
*
* Image data consists of image data header, which is defined in this
* structure, folowed by array of image pixel data.
* igtl_image_header helps a receiver to load array of image pixel data.
* The header supports "partial volume update", where a fraction of volume
* image is transferred from a sender to receiver. This fraction called
* "sub-volume" in this protocol, and its size and starting index is
* specified in 'subvol_size' and 'subvol_offset'.
* In case of transferring entire image in one message, 'size' and
* 'subvol_size' should be same, and 'subvol_offset' equals (0, 0, 0).
*/
typedef struct {
igtl_uint16 version; /* data format version number(1) */
igtl_uint8 num_components; /* number of components per element*/
igtl_uint8 scalar_type; /* scalar type */
/*2:int8 3:uint8 4:int16 5:uint16 6:int32 7:uint32 10:float32 11:float64) */
igtl_uint8 endian; /* endian type of image data */
/* (1:big, 2:little) */
igtl_uint8 coord; /* coordinate system (1:RAS 2:LPS) */
igtl_uint16 size[3]; /* entire image volume size */
igtl_float32 matrix[12]; /* orientation / origin of image */
/* - matrix[0-2]: norm_i * pix_i */
/* - matrix[3-5]: norm_j * pix_j */
/* - matrix[6-8]: norm_k * pix_k */
/* - matrix[9-11]:origin */
/* where norm_* are normal vectors */
/* along each index, and pix_* are */
/* pixel size in each direction */
igtl_uint16 subvol_offset[3]; /* sub volume offset */
igtl_uint16 subvol_size[3]; /* sub volume size */
} igtl_image_header;
#pragma pack()
/*
* Image data size
*
* This function calculates size of the pixel array, which will be
* transferred with the specified header.
*/
igtl_uint64 igtl_export igtl_image_get_data_size(igtl_image_header * header);
/*
* Generate matrix
*
* This function generates image orientation/origin matrix from
* spacing, origin and normal vectors.
*/
void igtl_export igtl_image_set_matrix(float spacing[3], float origin[3],
float norm_i[3], float norm_j[3], float norm_k[3],
igtl_image_header * header);
void igtl_export igtl_image_get_matrix(float spacing[3], float origin[3],
float norm_i[3], float norm_j[3], float norm_k[3],
igtl_image_header * header);
/*
* Byte order conversion for the header structure
*
* This function converts endianness of each member variable
* in igtl_image_header from host byte order to network byte order,
* or vice versa.
*/
void igtl_export igtl_image_convert_byte_order(igtl_image_header * header);
/*
* CRC calculation
*
* This function calculates CRC of image data body including header
* and array of pixel data.
*
*/
igtl_uint64 igtl_export igtl_image_get_crc(igtl_image_header * header, void* image);
#ifdef __cplusplus
}
#endif
#endif /* __IGTL_IMAGE_H */
|