MINC/软件开发/MINC1-程序员参考
在所有这里描述的变量、维度和属性中,只有变量 MIimage
及其维度需要存在于 MINC 文件中。文件中可能存在额外的变量、维度和属性 - 无法识别的变量和属性应该被忽略。
关于属性约定的说明。所有数值应存储在数值类型之一中 (NC_BYTE
、NC_SHORT
、NC_INT
、NC_FLOAT
或 NC_DOUBLE
)。一些数值属性必须以明确的单位指定 - 时间属性 (如 MIrepetition_time
和 MIradionuclide_halflife
) 以秒为单位。其他属性有一个关联的属性来给出单位 - 例如 MIinjection_dose
和 MIdose_units
。
这些属性可用于任何变量。可以从 NetCDF 用户指南中获得更完整的描述。
MIunits
指定变量值的单位,以字符串形式 - 单位应与 udunits 库兼容。
MIlong_name
一个字符串,用于提供对人类可读的变量的文本描述。
MIvalid_range
一个包含两个数字的向量,指定变量中有效的最小值和最大值。对于 MINC 例程,顺序并不重要。对于 MIimage
变量,此属性 (或 MIvalid_max
和 MIvalid_min
) 应始终存在,除非整数类型的完整范围和浮点类型的 [0.0,1.0] 默认值是正确的。
MIvalid_max
一个表示变量有效最大值的数字。
MIvalid_min
一个表示变量有效最小值的数字。
MI_FillValue
用于填充变量中未明确写入的值的数字。
MItitle
一个全局字符串,提供对文件内容的描述。
MIhistory
一个全局字符串,应存储修改过文件的每个程序的一行。每行应包含程序名称和参数。
这些属性适用于文件中的任何变量。
MIvartype
一个字符串,标识变量的类型。应为 MI_GROUP
、MI_DIMENSION
、MI_DIM_WIDTH
或 MI_VARATT
之一。
MIvarid
一个字符串,标识变量的来源。所有标准 MINC 变量都应具有此属性,其值为 MI_STDVAR
。用户创建的变量应具有与其他应用程序使用的名称不同的独特名称。
MIsigntype
NetCDF 格式不需要知道变量的符号,因为它不解释值 - 它留给调用程序来处理整数的符号。由于 MINC 接口转换变量,因此它必须具有此信息。MIsigntype
是一个字符串,其值为 MI_SIGNED
或 MI_UNSIGNED
。默认值为字节的 MI_UNSIGNED
和所有其他类型的 MI_SIGNED
。
MIparent
一个字符串,按名称标识此变量的父变量 (在数据层次结构中或作为此变量属性的父变量)。
MIchildren
一个换行符分隔的列表,包含此变量的子变量 (在数据层次结构中)。
MIcomments
应包含在该变量中的任何文本。
MIversion
一个字符串,标识文件版本。当前版本为 MI_CURRENT_VERSION
。每个版本都可以用 MI_VERSION_1_0
格式的常量标识。
常量 MI_TRUE
和 MI_FALSE
用于布尔属性。
以下是维度名称及其对应的维度变量。只有 MIvector_dimension
没有对应的维度变量。
MIxspace
x 轴的维度和坐标变量。
MIyspace
y 轴的维度和坐标变量。
MIzspace
z 轴的维度和坐标变量。
MItime
变量时间轴的维度和坐标。
MItfrequency
时间频率的维度和坐标变量。
MIxfrequency
沿 x 轴的空间频率的维度和坐标变量。
MIyfrequency
沿 y 轴的空间频率的维度和坐标变量。
MIzfrequency
沿 z 轴的空间频率的维度和坐标变量。
MIvector_dimension
仅用于矢量场的组件的维度。
除了维度变量之外,我们还可以拥有维度宽度变量,它们指定每个点的样本的 FWHM 宽度。
MIxspace_width
沿 x 轴的样本宽度。
MIyspace_width
沿 y 轴的样本宽度。
MIzspace_width
沿 z 轴的样本宽度。
MItime_width
沿时间轴的样本宽度。
MItfrequency_width
沿时间频率轴的样本宽度。
MIxfrequency_width
沿 x 空间频率轴的样本宽度。
MIyfrequency_width
沿 y 空间频率轴的样本宽度。
MIzfrequency_width
沿 z 空间频率轴的样本宽度。
与维度和维度宽度变量相关的属性如下所示
MIspacing
一个字符串,其值为 MI_REGULAR
(对于等间距网格) 或 MI_IRREGULAR
(对于样本的不规则间距)。如果值为 MI_REGULAR
,则允许变量为标量而不是随同名维度变化的向量。可用于维度和维度宽度变量。
MIstep
一个数字,指示等间距样本之间的步长。此值可以为负数,以指示方向 (例如,指定 MIxspace
从患者右侧运行到左侧)。如果间距不规则,则该值可以是平均步长。仅适用于维度变量。
MIstart
维度的索引 0 的坐标。仅适用于维度变量。
MIspacetype
一个字符串,标识坐标空间的类型。目前为 MI_NATIVE
之一 (扫描仪的坐标系)、MI_TALAIRACH
(标准化的坐标系) 或 MI_CALLOSAL
(另一个标准化的坐标系)。仅适用于维度变量。
MIalignment
一个字符串,指示坐标相对于每个样本的位置 (记住每个样本都有一个宽度)。可以为 MI_START
、MI_CENTRE
或 MI_END
之一。仅适用于维度变量。
MIdirection_cosines
一个包含 MI_NUM_SPACE_DIMS
(=3) 个元素的向量,给出轴的方向余弦。虽然轴被标记为 x、y 和 z,但它们实际上可能具有明显不同的方向 - 此属性允许精确地指定相对于真实轴的方向。仅适用于维度变量。请注意,方向余弦与相应轴的点积 <function>(1,0,0), (0,1,0) 或 (0,0,1)</function> 应为正数,以便属性 MIstep
的符号包含方向信息。
MIwidth
对于规则维度宽度,此数值属性给出所有样本的 FWHM 宽度。它可以用于不规则宽度,以指定平均宽度。仅适用于维度宽度变量。
MIfiltertype
一个字符串,指定卷积滤波器的形状。目前,可以是以下之一:MI_SQUARE
、MI_GAUSSIAN
或 MI_TRIANGULAR
。仅适用于维度宽度变量。
变量 MIrootvariable
用作数据层次结构的根,其 MIchildren
属性指向第一级组变量(包括所有 MINC 组变量),其 MIparent
属性为空字符串。
变量 MIimage
用于存储图像数据。
MIimagemax
一个变量属性(即指向同名变量的属性),存储图像的真实值最大值。此变量在 MIimage 的图像维度上不应变化。此变量的单位定义图像的单位。
MIimagemin
类似于 MIimagemax
,但存储图像的真实值最小值。MIimagemax
应在没有 MIimagemin
的情况下存在,反之亦然。
MIcomplete
一个布尔属性(值为 MI_TRUE
或 MI_FALSE
),指示该变量是否已完整写入。这可用于在写入处理后的图像时检测程序故障:MIcomplete
在开始时设置为 MI_FALSE
,并在处理结束时更改为 MI_TRUE
。
变量 MIpatient
是一个组变量,没有维度,也没有有用的值。它仅用于将有关患者的信息分组在一起。属性是根据 ACR-NEMA 惯例建模的。
MIfull_name
一个字符串,指定患者的全名。
MIother_names
一个字符串,给出患者的其他姓名。
MIidentification
一个字符串,指定患者的识别信息。
MIother_ids
一个字符串,给出其他 ID。
MIbirthdate
一个字符串,指定患者的出生日期。
MIsex
一个字符串,指定患者的性别:MI_MALE
、MI_FEMALE
或 MI_OTHER
。
MIage
一个数字,给出患者的年龄。
MIweight
患者的体重(公斤)。
MIsize
患者的身高或身长(米)。
MIaddress
一个字符串,给出患者的地址。
MIinsurance_id
一个字符串,给出患者的保险计划 ID。
有关研究的信息在 MIstudy
变量中分组在一起,该变量没有维度或值。属性是根据 ACR-NEMA 惯例建模的。
MIstart_time
字符串,给出研究开始的时间(和日期)。
MIstart_year
整数,给出开始年份。
MIstart_month
整数,给出开始月份(1-12)。
MIstart_day
整数,给出开始日期(1-31)。
MIstart_hour
整数,给出开始小时(0-23)。
MIstart_minute
整数,给出开始分钟(0-59)。
MIstart_seconds
浮点数,给出开始秒数。
MImodality
成像方式:MI_PET
、MI_SPECT
、MI_GAMMA
、MI_MRI
、MI_MRS
、MI_MRA
、MI_CT
、MI_DSA
、MI_DR
之一。
MImanufacturer
字符串,给出设备制造商的名称。
MIdevice_model
字符串,标识设备型号。
MIinstitution
字符串,标识机构。
MIdepartment
字符串,标识部门。
MIstation_id
字符串,标识生成图像的机器。
MIreferring_physician
患者的主治医生的姓名。
MIattending_physician
执行检查的医生。
MIradiologist
解释检查的放射科医生。
MIoperator
操作扫描仪的技术人员的姓名。
MIadmitting_diagnosis
字符串,描述入院诊断。
MIprocedure
字符串,描述所采用的程序。
MIstudy_id
字符串,标识研究。
有关采集本身的信息存储为 MIacquisition
变量的属性(同样,没有维度,也没有值)。
MIprotocol
字符串,描述图像采集的方案。
MIscanning_sequence
字符串,描述所采集数据的类型(例如,对于 MR - IR、SE、PS 等)。
MIrepetition_time
脉冲序列之间的间隔时间(秒)。
MIecho_time
90 度脉冲的中点到自旋回波生成的中点之间的间隔时间(秒)。
MIinversion_time
反转射频脉冲的中点到检测纵向磁化量的 90 度脉冲的中点之间的间隔时间(秒)。
MInum_averages
在更改任何参数之前重复给定脉冲序列的次数。
MIimaging_frequency
成像核的进动频率(Hz)。
MIimaged_nucleus
字符串,指定在成像频率下共振的核。
MIradionuclide
字符串,指定给药的同位素。
MIcontrast_agent
字符串,标识对比剂或推注剂。
MIradionuclide_halflife
放射性核素的半衰期(秒)。
MItracer
字符串,标识用注射的放射性核素标记的示踪剂。
MIinjection_time
字符串,给出注射的时间(和日期)。
MIinjection_year
整数,给出注射年份。
MIinjection_month
整数,给出注射月份(1-12)。
MIinjection_day
整数,给出注射日期(1-31)。
MIinjection_hour
整数,给出注射小时(0-23)。
MIinjection_minute
整数,给出注射分钟(0-59)。
MIinjection_seconds
浮点数,给出注射秒数。
MIinjection_length
注射持续时间(秒)。
MIinjection_dose
注射的放射性核素或对比剂的总剂量(以 MIdose_units
指定的单位)。
MIdose_units
字符串,给出剂量的单位。
MIinjection_volume
注射体积(mL)。
MIinjection_route
字符串,标识注射的给药途径。
由于需要使用 NetCDF 例程来访问 MINC 文件,因此在此提供所有 NetCDF 例程的简要说明。有关更多信息,请参阅 NetCDF 用户指南。请注意,头文件 netcdf.h 会由头文件 minc.h 自动包含。
如果发生错误,默认行为是打印错误消息并退出。可以通过修改全局变量 ncopts 的值来更改此行为。默认设置是
ncopts = NC_VERBOSE | NC_FATAL;
这意味着在发生错误时打印错误消息并退出。若要获取错误消息而不出现致命错误,请设置
ncopts = NC_VERBOSE;
若要既没有错误消息,也没有致命错误,请设置
ncopts = 0;
在最后两种情况下,调用例程应检查每个对 NetCDF 函数的调用的返回值。所有例程都返回一个整数值。如果该值为 -1
(MI_ERROR
),则表示已发生错误。全局变量 ncerr
的值提供了有关错误类型的更多信息(有关错误代码,请参阅文件 netcdf.h
)。
nccreate
:创建由 path
指定的文件。参数 cmode
必须具有 NC_CLOBBER
或 NC_NOCLOBBER
的值。返回值是 NetCDF 文件的标识符,并在后续的 NetCDF 函数调用中使用。
int nccreate(char* path,int cmode);
ncopen
:打开由 path
指定的文件。mode
必须具有 NC_NOWRITE
或 NC_WRITE
的值。返回值是 NetCDF 文件标识符。
int ncopen(char* path,int mode);
ncredef
:将打开的文件置于定义模式。
int ncredef(int cdfid);
ncendef
:将文件置于数据模式。
int ncendef(int cdfid);
ncclose
:关闭 NetCDF 文件。
int ncclose(int cdfid);
ncinquire
:查询文件中的维度数量、变量数量、全局属性数量或无限记录维度的 ID。为任何指针传递 NULL 值表示不返回关联的值。
int ncinquire(int cdfid,int* ndims,int* nvars,int* natts,int* recdim);
ncsync
:将打开的文件同步到磁盘。
int ncsync(int cdfid);
ncabort
:如果文件处于定义模式,则中止对文件的任何更改。
int ncabort(int cdfid);
ncsetfill
:在调用 ncendef
时,默认情况下会用填充值填充所有变量。若要关闭此功能,请将 fillmode
设置为 NC_NOFILL
调用此例程(若要将其重新打开,请使用 NC_FILL
)。
int ncsetfill(int cdfid,int fillmode);
ncdimdef
:定义具有名称和长度的维度。返回值是维度 ID,将在后续调用中使用。
int ncdimdef(int cdfid,char* name,long length);
ncdimid
:从名称获取维度 ID。
int ncdimid(int cdfid,char* name);
ncdiminq
:查询有关维度的信息(名称或长度)。
int ncdiminq(int cdfid,int dimid,char* name,long* length);
ncdimrename
:重命名维度。
int ncdimrename(int cdfid,int dimid,char* name);
ncvardef
: 通过名称定义一个变量,给出它的数据类型、维数和下标变量的维数 ID。返回一个变量 ID,用于后续调用。
int ncvardef(int cdfid,char* name,nc_type datatype,int ndims,int dim[]);
ncvarid
: 从名称获取变量 ID。
int ncvarid(int cdfid,char* name);
ncvarinq
: 查询有关变量的信息。任何 NULL 指针都表示不返回相关值。可以获取变量名称、类型、维数、维数 ID 和属性数量。
int ncvarinq(int cdfid,int varid,char* name,nc_type* datatype,int* ndims,
int dim[],int* natts);
ncvarput1
: 在由 coords
指定的坐标处存储单个值。value
必须是正确的数据类型。
int ncvarput1(int cdfid,int varid,long coords[],void* value);
ncvarget1
: 从由 coords 指定的坐标处获取单个值。
int ncvarget1(int cdfid,int varid,long coords[],void* value);
ncvarput
: 放置一个超立方体(多维矩形)的值,从 start
开始,边长由 count
给出。对于 C 接口,最后一维变化最快。值必须是正确的类型。
int ncvarput(int cdfid,int varid,long start[],long count[],void* value);
ncvarget
: 获取一个超立方体(多维矩形)的值,从 start
开始,边长由 count
给出。对于 C 接口,最后一维变化最快。值必须是正确的类型。
int ncvarget(int cdfid,int varid,long start[],long count[],void* value);
ncvarrename
: 重命名变量。
int ncvarrename(int cdfid,int varid,char* name);
nctypelen
: 获取数据类型的长度(以字节为单位)。
int nctypelen(nc_type datatype);
属性操作
[edit | edit source]ncattput
: 通过名称存储一个属性,该属性与变量 varid
相关联。必须指定属性的类型和长度。
int ncattput(int cdfid,int varid,char* name,nc_type datatype,int len,
void* value);
ncattinq
: 查询有关属性的信息,可以通过名称查询。可以获取类型或长度。
int ncattinq(int cdfid,int varid,char* name,nc_type* datatype,int* len);
ncattget
: 通过名称获取属性的值。
int ncattget(int cdfid,int varid,char* name,void* value);
ncattcopy
: 将一个属性从一个变量复制到另一个变量。
int ncattcopy(int incdf,int invar,char* name,int outcdf,int outvar);
ncattname
: 从属性编号获取属性的名称。该编号不是 ID,而是在变量关联的属性数量发生变化时可能发生变化。属性编号从 0 到 natts-1。
int ncattname(int cdfid,int varid,int attnum,char* name);
ncattrename
: 重命名属性。
int ncattrename(int cdfid,int varid,char* name,char* newname);
ncattdel
: 删除属性。
int ncattdel(int cdfid,int varid,char* name);
MINC 例程
[edit | edit source]MINC 例程的错误处理与 NetCDF 函数相同,区别在于返回指针的例程在发生错误时会返回 NULL
,而不是 MI_ERROR
。错误代码(在 ncerr
中返回)可以在头文件 minc.h 中找到。
通用便利函数
[edit | edit source]miexpand_file
: 用于扩展使用 compress、pack、gzip 或 zip(使用 gunzip、zcat 或 pcat)压缩的 minc 文件的例程。返回临时 minc 文件的名称——该字符串必须由调用者释放。如果由 path
指定的文件未压缩,则返回其名称。*create_tempfile
设置为 TRUE,如果创建了临时文件(并且调用者需要删除该文件),则设置为 FALSE,如果返回的是原始文件名。如果 tempfile 为 NULL,则该例程会生成自己的临时文件名,否则,使用用户提供的名称。如果 header_only
为 TRUE,则该例程只会扩展足够的文件以读取头文件。
public char *miexpand_file(char *path, char *tempfile, int header_only,
int *created_tempfile);
miopen
: 类似于 ncopen
,但会暂时解压缩以 NC_NOWRITE
模式打开的文件(compress、pack、gzip、zip)。
public int miopen(char *path, int mode);
micreate
: 类似于 nccreate
。将来可能会增强功能。
public int micreate(char *path, int cmode);
miclose
: 类似于 ncclose
,但会完成 miopen
和 micreate
的操作。
public int miclose(int cdfid);
miattget
: 类似于 ncattget
,但调用者指定所需数值类型和最大值数量。类型通过 datatype
指定(符号是类型的默认值:NC_BYTE
为 MI_UNSIGNED
,其他情况为 MI_SIGNED
)。max_length
给出了要获取的最大值数量,att_length
返回实际读取的值数量。如果属性类型不是数值类型,则会发生错误。
public int miattget(int cdfid, int varid, char *name, nc_type datatype,
int max_length, void *value, int *att_length);
miattget1
: 类似于 miattget
,但只返回一个值。如果有多个值,则会发生错误。
public int miattget1(int cdfid, int varid, char *name, nc_type datatype,
void *value);
miattgetstr
: 从属性中获取字符串值。maxlen
给出了要返回的最大字符数量(包括终止符 '\0'
)。字符串将写入由 value 指定的数组,并返回指向该字符串的指针。
public char *miattgetstr(int cdfid, int varid, char *name,
int maxlen, char *value);
miattputint
: 写入整数属性。
public int miattputint(int cdfid, int varid, char *name, int value);
miattputdbl
: 写入双精度属性。
public int miattputdbl(int cdfid, int varid, char *name, double value);
miattputstr
: 写入字符串属性。
public int miattputstr(int cdfid, int varid, char *name, char *value);
mivarget
: 类似于 ncvarget
,但调用者指定所需数值类型和符号(MI_SIGNED
或 MI_UNSIGNED
)。
public int mivarget(int cdfid, int varid, long start[], long count[],
nc_type datatype, char *sign, void *values);
mivarget1
: 类似于 ncvarget1
,但调用者指定所需数值类型和符号。
public int mivarget1(int cdfid, int varid, long mindex[],
nc_type datatype, char *sign, void *value);
mivarput
: 类似于 ncvarput
,但调用者指定要传递的值的数值类型和符号。
public int mivarput(int cdfid, int varid, long start[], long count[],
nc_type datatype, char *sign, void *values);
mivarput1
: 类似于 ncvarput1
,但调用者指定要传递的值的数值类型和符号。
public int mivarput1(int cdfid, int varid, long mindex[],
nc_type datatype, char *sign, void *value);
miset_coords
: 将坐标向量 coords
的 nvals
个值设置为 value
。返回指向 coords
的指针。
public long *miset_coords(int nvals, long value, long coords[]);
mitranslate_coords
: 将文件 cdfid
中变量 invar
的下标坐标向量 incoords
转换为变量 outvar
的下标坐标向量 outcoords
。当两个变量具有相似的维数,但不一定是相同的维数顺序时,这很有用。如果 invar
具有 outvar
中不存在的维数,则忽略相应的坐标。如果 outvar
具有 invar
中不存在的维数,则不会修改相应的坐标。返回指向 outcoords
的指针。
public long *mitranslate_coords(int cdfid,
int invar, long incoords[],
int outvar, long outcoords[]);
micopy_all_atts
: 将一个变量的所有属性复制到另一个变量(可能跨文件)。
public int micopy_all_atts(int incdfid, int invarid,
int outcdfid, int outvarid);
micopy_var_def
: 将一个变量定义(包括属性)从一个文件复制到另一个文件。outcdfid
必须处于定义模式。返回新创建变量的 ID。
public int micopy_var_def(int incdfid, int invarid, int outcdfid);
micopy_var_values
: 将一个变量的值从一个文件复制到另一个文件。incdfid
和 outcdfid
必须处于数据模式。
public int micopy_var_values(int incdfid, int invarid,
int outcdfid, int outvarid);
micopy_all_var_defs
: 将所有变量定义从一个文件复制到另一个文件,排除一个变量列表。nexclude
个变量 ID 列表在 excluded_vars
中给出。outcdfid
必须处于定义模式。
public int micopy_all_var_defs(int incdfid, int outcdfid, int nexclude,
int excluded_vars[]);
micopy_all_var_values
: 将所有变量值从一个文件复制到另一个文件,排除一个变量列表。nexclude
个变量 ID 列表在 excluded_vars
中给出。outcdfid
必须处于数据模式。
public int micopy_all_var_values(int incdfid, int outcdfid, int nexclude,
int excluded_vars[]);
MINC 特定便利函数
[edit | edit source]miget_datatype
: 获取图像变量的类型和符号信息。符号数据通过将 is_signed
设置为 TRUE
来指示;无符号数据通过 FALSE
来指示。
public int miget_datatype(int cdfid, int imgid,
nc_type *datatype, int *is_signed);
miget_default_range
: 返回指定类型和符号的默认范围。
public int miget_default_range(nc_type datatype, int is_signed,
double default_range[]);
miget_valid_range
: 获取图像变量的有效范围信息。此函数处理 valid_range
属性和图像数据之间潜在的类型差异。这些差异(特别是具有双精度 valid_range
的浮点数图像)否则会导致在正确识别无效数据方面出现问题。
public int miget_valid_range(int cdfid, int imgid, double valid_range[]);
miset_valid_range
: 设置图像变量的有效范围信息。此函数遵循 NetCDF 惯例,即变量数据和 valid_range
属性具有相同的类型。
public int miset_valid_range(int cdfid, int imgid, double valid_range[]);
miget_image_range
: 根据图像最小值和图像最大值变量获取图像数据的最大实际范围。
public int miget_image_range(int cdfid, double image_range[]);
mivar_exists
: 测试变量是否存在。如果变量存在,则返回 true。
public int mivar_exists(int cdfid, char *varname);
miattput_pointer
: 在变量 varid
中创建一个属性 name
,该属性指向变量 ptrvarid
。
public int miattput_pointer(int cdfid, int varid, char *name, int ptrvarid);
miattget_pointer
: 返回变量 varid
的属性 name
指向的变量 ID。
public int miattget_pointer(int cdfid, int varid, char *name);
miadd_child
: 将变量 child_varid
的名称添加到变量 parent_varid
的 MIchildren
属性中,并将变量 child_varid
的 MIparent
属性设置为变量 parent_varid
的名称。如果属性不存在,则创建它们。MIchildren
属性中的名称以换行符分隔。
public int miadd_child(int cdfid, int parent_varid, int child_varid);
micreate_std_variable
: 创建任何标准 MINC 变量并设置一些属性。以 ncvardef
的方式调用。返回新创建变量的 ID。对于所有变量,属性 MIvarid
、MIvartype
和 MIversion
都已设置。对于维度和维度宽度变量,如果维数为零,则 MIspacing
设置为 MI_REGULAR
,否则设置为 MI_IRREGULAR
。对于维度变量,MIalignment
设置为 MI_CENTRE
,除非变量是 MItime
,在这种情况下,它设置为 MI_START
。此外,MIcomments 设置为一个字符串,描述空间维度的世界坐标的方向。对于维度宽度变量,MIfiltertype
设置为 MI_SQUARE
。对于 MIimage
以及 MIimagemax
和 MIimagemin
,检查维度以确保最后两个不随图像维度变化,并且从 MIimage
创建指向另外两个的属性指针。
public int micreate_std_variable(int cdfid, char *name, nc_type datatype,
int ndims, int dim[]);
micreate_group_variable
: 与 micreate_std_variable
相似,但 ndims
始终设置为零,数据类型为 NC_INT
。返回新创建变量的 ID。
public int micreate_group_variable(int cdfid, char *name);
图像转换变量函数
[edit | edit source]miicv_create
: 创建图像转换变量并设置默认值 - 返回一个 icv 标识符以供以后使用(如果发生错误,则返回 MI_ERROR
)。尽管定义仍然存在,但先前 MI_MAX_NUM_ICV
个 icv 可以在同一时间存在的限制已被移除。
public int miicv_create();
miicv_free
: 释放图像转换变量。
public int miicv_free(int icvid);
miicv_setdbl
: 将数值 icv 属性设置为双精度值。
public int miicv_setdbl(int icvid, int icv_property, double value);
miicv_setint
: 将数值 icv 属性设置为整数值。
public int miicv_setint(int icvid, int icv_property, int value);
miicv_setlong
: 将数值 icv 属性设置为长整数值。
public int miicv_setlong(int icvid, int icv_property, long value);
miicv_setstr
: 设置字符串 icv 属性。
public int miicv_set(int icvid, int icv_property, char *value);
miicv_inqdbl
: 查询数值 icv 属性。value
指向应该返回该值的双精度变量。
public int miicv_inqdbl(int icvid, int icv_property, double *value);
miicv_inqint
: 查询数值 icv 属性。value
指向应该返回该值的整型变量。
public int miicv_inqint(int icvid, int icv_property, int *value);
miicv_inqlong
: 查询数值 icv 属性。value
指向应该返回该值的长整型变量。
public int miicv_inqlong(int icvid, int icv_property, long *value);
miicv_inqstr
: 查询字符串 icv 属性。value
指向应该返回该值的字符数组。调用例程必须为返回字符串分配足够的空间。
public int miicv_inqstr(int icvid, int icv_property, char *value);
miicv_attach
: 将 MINC 文件和图像变量附加到 icv。请注意,在将变量附加到 icv 时,无法修改 icv 属性。如果变量已经附加到 icv,则会自动分离。文件 icvid
必须处于数据模式。
public int miicv_attach(int icvid, int cdfid, int varid);
miicv_ndattach
: 与 miicv_attach
相似,但没有可用的维度转换功能(类似于将 MI_ICV_DO_DIM_CONV
设置为 FALSE
)。这避免了在不需要(对于内存可能成为问题的机器)时链接所有维度转换例程。
public int miicv_ndattach(int icvid, int cdfid, int varid);
miicv_detach
: 从 icv 分离变量。
public int miicv_detach(int icvid);
miicv_get
: 通过 icv 从变量获取超立方体值。
public int miicv_get(int icvid, long start[], long count[], void *values);
miicv_put
: 通过 icv 将超立方体值放入变量。
public int miicv_put(int icvid, long start[], long count[], void *values);
图像转换变量属性
[edit | edit source]MI_ICV_TYPE
(类型 nc_type
) : 指定用户想要的值的类型。修改此属性会自动导致 MI_ICV_VALID_MAX
和 MI_ICV_VALID_MIN
设置为其默认值。默认 = NC_SHORT
。
MI_ICV_SIGN
(类型 char *
) : 指定用户想要的值的符号(与浮点类型无关)。修改此属性会自动导致 MI_ICV_VALID_MAX
和 MI_ICV_VALID_MIN
设置为其默认值。默认 = MI_SIGNED
。
MI_ICV_DO_RANGE
(类型 int
) : 当 TRUE
时,执行范围转换(对于有效最大值和最小值以及值归一化)。当 FALSE
时,不会修改值。默认 = TRUE
。
MI_ICV_VALID_MAX
(类型 double
) : 有效最大值(浮点类型忽略)。默认 = 类型和符号的最大合法值(浮点类型为 1.0)。
MI_ICV_VALID_MIN
(类型 double
) : 有效最小值(浮点类型忽略)。默认 = 类型和符号的最小合法值(浮点类型为 1.0)。
MI_ICV_DO_NORM
(类型 int
) : 如果 TRUE
,则执行值的归一化(有关归一化的详细信息,请参阅用户指南)。默认 = FALSE
。
MI_ICV_USER_NORM
(类型 int
) : 如果 TRUE
,则用户指定归一化最大值和最小值。如果 FALSE
,则将值作为整个图像变量的最大值和最小值。默认 = FALSE
。
MI_ICV_IMAGE_MAX
(类型 double
) : 用户归一化的图像最大值。默认 = 1.0。
MI_ICV_IMAGE_MIN
(类型 double
) : 用户归一化的图像最小值。默认 = 0.0。
MI_ICV_NORM_MAX
(类型 double
) : 只读值,给出执行归一化时用户图像的最大值(变量中的最大值或用户指定的最大值)。
MI_ICV_NORM_MIN
(类型 double
) : 只读值,给出执行归一化时用户图像的最小值(变量中的最小值或用户指定的最小值)。
MI_ICV_DO_FILLVALUE
(类型 int
) : 如果设置为 TRUE
,则对输入执行范围检查,并将超出范围的值(文件中的值小于 MIvalid_min
或大于 MIvalid_max
)设置为 MI_ICV_FILLVALUE
的值。默认 = FALSE
。
MI_ICV_FILLVALUE
(类型 double
) : 像素超出范围时使用的值(仅在输入时)。该值直接写入用户缓冲区,没有任何缩放。默认 = -DBL_MAX
。
MI_ICV_DO_DIM_CONV
(类型 int
) : 如果设置为 TRUE
,则可以执行维度转换。默认 = FALSE
。
MI_ICV_DO_SCALAR
(类型 int
) : 如果 TRUE
,则如果 MIvector_dimension
是变量变化最快的维度,则对元素进行平均,icv 的行为就像此维度不存在一样。默认 = TRUE
。
MI_ICV_XDIM_DIR
(类型 int
) : 指示 x 图像维度(MIxspace
和 MIxfrequency
)的所需方向。值可以是 MI_ICV_POSITIVE
、MI_ICV_NEGATIVE
或 MI_ICV_ANYDIR
之一。正方向表示维度的 MIstep
属性为正。MI_ICV_ANYDIR
表示不进行翻转。默认 = MI_ICV_POSITIVE
。
MI_ICV_YDIM_DIR
(类型 int
) : 指示 y 图像维度的所需方向。默认 = MI_ICV_POSITIVE
。
MI_ICV_ZDIM_DIR
(类型 int
) : 指示 z 图像维度的所需方向。默认 = MI_ICV_POSITIVE
。
MI_ICV_ADIM_SIZE
(类型 long
) : 指定变化最快的图像维度的所需大小。值为 MI_ICV_ANYSIZE
表示应该使用维度的实际大小。默认 = MI_ICV_ANYSIZE
。
MI_ICV_BDIM_SIZE
(类型 long
) : 指定第二个图像维度的所需大小。默认 = MI_ICV_ANYSIZE
。
MI_ICV_KEEP_ASPECT
(类型 int
) : 如果 TRUE
,则图像维度按相同量调整大小以保持纵横比。默认 = TRUE
。
MI_ICV_ADIM_STEP
(类型 double
) : 只读属性,给出维度转换后第一个(变化最快的)图像维度的 MIstep
属性的等效值。
MI_ICV_BDIM_STEP
(类型 double
) : 只读属性,给出维度转换后第二个图像维度的 MIstep
属性的等效值。
MI_ICV_ADIM_START
(类型 double
) : 只读属性,给出维度转换后第一个(变化最快的)图像维度的 MIstart
属性的等效值。
MI_ICV_BDIM_START
(类型 double
) : 只读属性,给出维度转换后第二个图像维度的 MIstart
属性的等效值。
MI_ICV_NUM_IMGDIMS
(类型 int
) : 指定维度转换中使用的图像维度数量。默认 = 2。
MI_ICV_DIM_SIZE
(类型 long
) : 指定图像维度的所需大小。要更改的维度的编号应添加到属性中(添加零对应于变化最快的维度)。默认 = MI_ICV_ANYSIZE
。
MI_ICV_DIM_STEP
(类型 double
) : 只读属性,给出维度转换后图像维度的 MIstep
属性的等效值。要查询的维度的编号应添加到属性中(添加零对应于变化最快的维度)。
MI_ICV_DIM_START
(类型 double
) : 只读属性,给出维度转换后图像维度的 MIstart
属性的等效值。要查询的维度的编号应添加到属性中(添加零对应于变化最快的维度)。
MI_ICV_NUM_DIMS
(类型 int
) : 只读属性,给出图像变量的维度数量,考虑到将矢量图像转换为标量图像。
MI_ICV_CDFID
(类型 int
) : 只读属性,给出当前附加的 NetCDF 文件的 ID,如果未附加任何文件,则给出 MI_ERROR
。
MI_ICV_VARID
(类型 int
) : 只读属性,给出当前附加的 NetCDF 变量的 ID,如果未附加任何变量,则给出 MI_ERROR
。
MI_ICV_MAXVAR
(类型 char *
) : 字符串属性,指定给出图像最大值的变量的名称。默认 = MIimagemax
。
MI_ICV_MINVAR
(类型 char *
) : 字符串属性,指定给出图像最小值的变量的名称。默认 = MIimagemin
。
已知错误
[edit | edit source]对于使用图像转换变量的维度转换,MI_ICV_DIM_START
、MI_ICV_ADIM_START
和 MI_ICV_BDIM_START
的值是在假设 MIalignment
等于 MI_CENTRE
的情况下计算的。