# Metadata Providers - 元数据供应者
提示
Metadata Provider - 元数据供应者 就是一个 JavaScript 函数,它在 Cornerstone 中的作用是获取与图像有关的元数据。用户可以按他们的想法,自定义 provider 函数,来返回每张指定图像的元数据。
医学影像通常携带许多非像素级别的元数据,就比如图像的像素间距、患者 ID 或者扫描成像日期等。在某些文件(比如:DICOM)中,这些信息保存在文件头部,还可以读取、解析并且在你的应用程序中传递。还有一些文件(比如:JPEG、PNG),这些信息需要于像素数据之外单独提供。然而,即便是 DICOM 这样的图像,开发人员提供的单独的元数据,这些元数据与从服务器上获取的图像的像素数据分离开来。这是因为这样往往能够提升性能。
为了应付这中场景,Cornerstone 为定义和使用 Metadata Providers - 元数据供应者
铺好了路。Metadata Providers
是一个简单的函数,它接收一个 Image Id 和指定的元数据类型, 返回值就是元数据本身。
这里一个元数据供应者简单示例,它返回一个张指定图像(Image Id: 'ct://1')的图像平面元数据对象:
function metaDataProvider(type, imageId) {
if (type === 'imagePlaneModule') {
if (imageId === 'ct://1') {
return {
frameOfReferenceUID: "1.3.6.1.4.1.5962.99.1.2237260787.1662717184.1234892907507.1411.0",
rows: 512,
columns: 512,
rowCosines: {
x: 1,
y: 0,
z: 0
},
columnCosines: {
x: 0,
y: 1,
z: 0
},
imagePositionPatient: {
x: -250,
y: -250,
z: -399.100006
},
rowPixelSpacing: 0.976562,
columnPixelSpacing: 0.976562
};
}
}
}
// 在 Cornerstone 上注册供应者
cornerstone.metaData.addProvider(metaDataProvider);
// 接收元数据
var imagePlaneModule = cornerstone.metaData.get('imagePlaneModule', 'ct://1');
# 相关 API
元数据供应者相关 API 可参见 cornerstone.metaData
# 基本说明
- Cornerstone 允许注册多个元数据供应者;
- 每个供应者都可以按开发者意愿,提供任意想要的信息数据;
- 一旦一张图像发起元数据请求,Cornerstone 就从已知的供应者中遍历,直至取到对应的元数据类型的元数据集;
cornerstone.metaData.addProvider
接收第二个参数标识调用优先级,用来控制 Cornerstone 遍历供应者的优先顺序;- 当使用Cornerstone WADO Image Loader (opens new window)加载 DICOM 图像,它们的元数据将被解析并自动添加到一个元数据供应者;
- 在 Cornerstone Tools (opens new window) 中, 由特定的元数据类型为工具提供元数据。