牛津仪器组的一部分bob平台下载手机版
扩大

伊万里瓷器文件格式描述(IMS)

伊万里瓷器文件格式设计允许快速的可视化非常大的图像。为此它不仅原始图像数据也存储低分辨率版本的原始数据。这允许可视化软件只有低分辨率数据加载,当这些就足够了。也为目的的快速可视化伊万里瓷器文件格式存储在相邻的3 d图像数据块(3 d区块hdf-terminology)只允许可视化软件加载那些领域的数据视图。多分辨率结构和chunk-wise存储布局是这样的基石高性能文件格式。

总结

标准的文件格式是基于HDF5(分层数据格式5)发达国家超级计算应用中心,伊利诺伊大学香槟分校。bob综合app官网登录这允许广泛使用HDF5库和工具的使用。

伊万里瓷器5.5文件包括三个主要类型的组(或文件夹)的图片:

一个额外的组可能包含伊万里瓷器的场景:

在本文档中,集团、属性和数据集引用HDF5文档中给出的概念。只要给出一个路径(/数据/ ResolutionLevel 12)应该打开相应的组和子组。

前“伊万里瓷器经典”和“Imaris3”基于HDF5文件格式不规范,不会在本文档中描述。

工具和资源

从HDF组Bitplane使用HDF5库作为阅读和写作的后端HDF5文件。一个好的起点阅读关于HDF5 HDF5集团文件格式的网站http://www.hdfgroup.org/HDF5/。HDF集团提供的图书馆开源和免费的。建议利用图书馆而不是创建自己的HDF5阅读器/写入器。

HDF集团还提供了有用的工具和库。值得注意的是HDFView,基于java的HDF文件检查器。这里可以免费下载。

强烈建议使用IMS HDFView看一些例子文件以了解文件的格式。

结构

伊万里瓷器5.5文件结构是由一根“文件夹”和三个主要群体,数据集,DataSetInfo和缩略图。

右边的屏幕截图的IMS HDFView文件显示HDF文件结构。形象的例子有两个频道和3水平分辨率。

数据集文件夹包含实际的图像数据。DataSetInfo文件夹包含描述性的参数。缩略图文件夹包含一个2 d图像的缩略图。

路径 属性 价值 描述
/ ImarisDataSet ImarisDataSet 特定的格式
FormatVersion 发送的 格式版本
/ DataSetInfo 包含数据集信息
/缩略图 包含了缩略图dataz

数据集

伊万里瓷器5.5数据集具有以下结构。数据集由一个或多个3 d图像(2 d图像一维的大小等于1)。当一个或多个时间点数据集有多个渠道它存储为每个频道和3 d图像每个时间点。数据保存在文件中使用的块(见HDF5文档),可以使用GNU GZIP压缩。良好的阅读性能,块的大小必须存储在伊万里瓷器软件可视化的要求(见章节伊万里瓷器Datablocks下文)。

HDF5块机制意味着数据集的有效尺寸可以比原来的三维图像的大小。因此,属性ImageSizeZ ImageSizeY和ImageSizeX也与每个数据集保存。

数据集的类型需要类似类型的数据存储。在下表中列出有效类型。

HDF5数据类型 伊万里瓷器图像数据类型
H5T_NATIVE_UCHAR 8位无符号整数(字符)
H5T_NATIVE_USHORT 16位无符号整数(短)
H5T_NATIVE_UINT32 32位无符号整数
H5T_NATIVE_FLOAT 32位浮点数

创建属性数据集应该分块、存储分配时间增量,填补价值没有,压缩没有或GZIP。如果GZIP压缩被激活,可以使用任何有效的GZIP参数(即压缩0到9是可以接受的,3者优先)。

随着每一个三维图像,保存相应的直方图(见下表)。直方图是HDF5 1 d 64位无符号整数类型的数据集。它的长度可以读出使用HDF5库。第一个值对应值的计数HistogramMin的形象。最后一个值的计数HistogramMax形象。

路径 属性 描述
/数据/ ResolutionLevel 0 0 0 /计算/频道 信息有关决议0,时间点0和通道0
ImageSizeX = 285 尺寸X的像素分辨率级别0
ImageSizeY = 218 在Y像素大小
ImageSizeZ = 64 在Z像素大小
ImageBlockSizeX = 64 大小的图像块在X的像素分辨率级别0 (alpha版本)-弃用
ImageBlockSizeY = 256 在像素大小的图像块在Y (alpha版本)-弃用
ImageBlockSizeZ = 64 在像素大小的图像块在Z (alpha版本)-弃用
HistogramMin = 0 最小值对应的直方图的图像
HistogramMax = 255 直方图的最大价值
/数据/分辨率级别0 /计算/通道0 /数据 大小的图像,ImageSizeX * ImageSizeY * ImageSizeZ
/数据/分辨率级别0 /计算/通道0 /直方图 图像的直方图。第一本对应HistogramMin HistogramMax最后一本
/数据/ ResolutionLevel 0 0 /通道1的计算 信息有关决议0,时间点0和1频道
/数据/ ResolutionLevel 0 0 /通道0 /数据的计算 图像数据的分辨率0,时间点0和通道0
/数据/ ResolutionLevel 0 /计算/通道0 /直方图 图像直方图解决0,时间点0和通道0

例子:

mFileId = H5Fopen (mFileName.c_str ()、H5F_ACC_RDONLY H5P_DEFAULT);hid_t vDataSetId = H5Gopen (mFileId,“数据集”);hid_t vLevelId = H5Gopen (vDataSetId分辨率级别0);hid_t vTimePointId = H5Gopen (vLevelId,“计算0”);hid_t vChannelId = H5Gopen (vTimePointId,“0”频道);hid_t vDataId = H5Dopen (vChannelId,“数据”);/ /读取属性ImageSizeX, Y, Z hsize_t vFileDim [3] = {ImageSizeZ、ImageSizeY ImageSizeX};hid_t vFileSpaceId = H5Screate_simple (3 vFileDim零);char * vBuffer = new vBuffer [ImageSizeZ * ImageSizeY * ImageSizeX);H5Dread (vDataId、H5T_NATIVE_CHAR H5S_ALL、vFileSpaceId H5P_DEFAULT, vBuffer);

在上面的例子中,整个三维图像分辨率对应0,时间点0和通道0是阅读。使用HDF5库也可能只读形象的一部分,内存或其他要求

DataSetInfo

DataSetInfo组包含所有从伊万里瓷器图像参数。的部分被存储为HDF5组、参数存储为HDF5属性。Hdf5属性可以使用H5Aopen_name打开并使用H5Aread读。所有属性都存储为字符串类型,即数字必须被转换成字符串。HDF5类型的属性是一个数组H5T_C_S1 (C字符串)。

在下面,“LSM”一词作为“激光扫描显微镜”的缩写。

集团/部分名称 属性/参数名称 描述
ImarisDataSet 本节包含文件中的数据组织的信息。(总是)
创造者=伊万里瓷器
NumberOfImages = 1 目前只有一个multi-channel-time图像每个文件
版本= 5.5 伊万里瓷器的版本创建这个文件
伊万里瓷器 缩略图和伊万里瓷器的信息。(总是)
文件名= retina.ims 原始文件的名称
ManufactorString =通用伊万里瓷器3. x Manufactor信息
ManufactorType = LSM Manufactor类型信息
ThumbnailMode = thumbnailMIP 缩略图的数据表示的类型。有效值是“thumbnailNone”、“thumbnailMiddleSection”、“thumbnailMIP”或“thumbnailNone”。
版本= 5.5 伊万里瓷器的版本创建这个文件
图像 数据集的信息。(总是)
描述=核 在纯文本图像的详细描述(可以多行)
ExtMax0 = 46.7464 最大的数据。扩展X(在给定单位:嗯,海里,…)
ExtMax1 = 35.7182 最大的数据。扩展Y
ExtMax2 = 12.6 最大的数据。扩展Z
ExtMin0 = -10.3 数据来源X
ExtMin1 = -1.5 数据来源Y
ExtMin2 = 3.4 数据来源Z
LensPower x = 63 反褶积参数
Name = m1193.pic 简短描述图像的(一些字符)
Noc = 2 数量的渠道
RecordingDate = 1991-10-01 16:45:45 “YYYY-MM-DD HH: MM: SS”
单位=嗯 “米”、“毫米”,“嗯”或“纳米”
X = 285 图像尺寸X(压)
Y = 218 图像尺寸Y(压)
Z = 64 图像大小Z(压)
X频道 信息通道X(每个通道有一个部分)(总是)
颜色= 1 0 0 基本颜色(r, g, b浮点值从0.0到1.0)
ColorMode = BaseColor “BaseColor”、“TableColor”见下面的例子的颜色表模式。
ColorOpacity = 0.168 体绘制显示通道的不透明度(浮点值从0.0到1.0)
194.921 ColorRange = 0 显示“对比”
描述= Cy5 详细描述的通道
获得= 0 反褶积参数
LSMEmissionWavelength = 发射波长
LSMExcitationWavelength = 激发波长
LSMPhotons = 反褶积参数
LSMPinhole = 针孔直径
Max = 255 数据通道图像的最大价值
MicroscopeMode = 反褶积参数
最小值= 0 数据通道图像的最小值
Name = CollagenIV (TxRed) 通道的简短描述(一些字符)
NumericalAperture = 数值孔径
抵消= 0 反褶积参数
针孔= 0 反褶积参数
RefractionIndexEmbedding = 反褶积参数
RefractionIndexImmersion = 反褶积参数
TimeInfo 所有渠道的信息。(总是)
DataSetTimePoints = 1 时间点的数据集的数量
FileTimePoints = 1 文件中的时间点的数量(目前DataSetTimePoints一样)
TimePoint1 = 1991-10-01 16:45:45.000 时间时间点1。时间点之间的时间必须严格增加。
日志 任何信息的历史形象(特别是数据操作)。
条目= 3 数量的条目(数量的图像数据的修改)。可以是零。
Entry0 = 第一次修改
Entry1 = 第二次修改
Entry2 = 第三次修改

注意,其他组/部分可用取决于原始文件格式(奥林巴斯,蔡司等)

读LSMEmissionWavelength通道3的例子

mFileId = H5Fopen (mFileName.c_str ()、H5F_ACC_RDONLY H5P_DEFAULT);/ /打开DataSetInfo集团hid_t vDataSetInfoId = H5Gopen (mFileId“DataSetInfo”);/ /打开通道3组hid_t vChannel3Id = H5Gopen (vDataSetInfoId“频道3”);/ /打开属性LSMEmissionWavelength hid_t vAttributeId = H5Aopen_name (vChannelId“LSMEmissionWavelength”);/ /获取数据空间hid_t vAttributeSpaceId = H5Aget_space (vAttributeId);/ /获得属性值大小hsize_t vAttributeSize = 0;H5Sget_simple_extent_dims (vAttributeSpaceId &vAttributeSize, NULL);/ /创建缓冲区char * vBuffer = new char [(bpSize) vAttributeSize + 1];vBuffer [vAttributeSize] = ' \ 0 ';/ /读取属性值H5Aread (vAttributeId、H5T_C_S1 vBuffer);

缩略图

缩略图目录包含一个2 d,广场RGBA形象,任意大小的(典型值是128 x128或256 x256)。图像数据的缩略图大小W应该阅读使用unsigned char的缓冲区大小的W W x 4 (H5Dread)。HDF5数据集大小是W行和W x 4列。每个图像像素是存储为4 HDF5值,以红色、绿色、蓝色和α组件。

例子

/ /打开组缩略图的东西在哪里H5Gopen (mFileId“缩略图”);/ /获得数据集hid_t vThumbnailDataId = H5Dopen (vThumbnailId,“数据”);/ /得到dataspace hid_t vThumbnailSpaceId = H5Dget_space (vThumbnailDataId);/ /获得数据的大小hsize_t vThumbnailDims [2];H5Sget_simple_extent_dims (vThumbnailSpaceId vThumbnailDims, NULL);char * vBuffer = new char [(bpSize) (vThumbnailDims [0] * vThumbnailDims [1]));/ /读取缩略图数据H5Dread (vThumbnailDataId、H5T_NATIVE_UCHAR H5S_ALL, H5S_ALL, H5P_DEFAULT, vBuffer);/ /创建图像vThumbnail =新形象(vThumbnailDim [1] / 4, vThumbnailDim [0]);对于所有缩略图像素{vThumbnail [vPixel]。红色= vBuffer [vIndex];vThumbnail [vPixel]。Green = vBuffer[vIndex+1]; vThumbnail[vPixel].Blue = vBuffer[vIndex+2]; vThumbnail[vPixel].Alpha = vBuffer[vIndex+3];

数据

多分辨率结构和chunk-wise存储布局是这样的基石高性能文件格式。

块大小

高效的数据访问的可视化伊万里瓷器5.5 3 d文件格式存储图像数据块。典型的块大小是128 x128x64或256 x256x16。最优块大小是由图像的几何形状,这是不容易为复制指定规则就是伊万里瓷器的块大小将写入hdf-file。也没有必要因为hdf图书馆非常有效地读取数据,只要布局不完全不同。如果你想为伊万里瓷器写图像文件阅读,尝试创建3 d大约1 mb的块大小。这将产生好结果呈现在伊万里瓷器。如果你需要调整性能,请联系Bitplane工程团队获得更详细的信息。

分辨率水平

高效的可视化的伊万里瓷器5.5文件格式存储不仅原始数据,而且低分辨率版本的原始数据。文件的分辨率水平的数量是由下面的伪代码:

空白getMultiResolutionPyramidalSizes (const size_t [3] aDataSize, std::向量aResolutionSizes) {const浮动mMinVolumeSizeMB f = 1.;aResolutionSizes.clear ();size_t [3] vNewResolution = aDataSize;浮动vVolumeMB;做{vResolutionSizes.push_back (vNewResolution);size_t [3] vLastResolution = vNewResolution;size_t vLastVolume = vLastResolution [0] * vLastResolution * vLastResolution [1] [2];for (int d = 0;d < N;+ + d){如果((10 * vLastResolution [d]) * (10 * vLastResolution [d]) > vLastVolume / vLastResolution [d]) vNewResolution [d] = vLastResolution [d] / 2; else vNewResolution[d] = vLastResolution[d]; // make sure we don't have zero-size dimension vNewResolution[d] = std::max((size_t)1, vNewResolution[d]); } vVolumeMB = vNewResolution[0] * vNewResolution[1] * vNewResolution[2]) / (1024.f * 1024.f); } while (vVolumeMB > mMinVolumeSizeMB); }