主要内容

设置被阻塞图像的空间引用

这个例子展示了如何建立和验证空间引用信息blockedImage对象。

阻塞图像中的空间引用

块图像处理多分辨率图像,其中场景的图像数据存储为一组不同分辨率的图像。阻塞图像假设每一层的空间范围是相同的,换句话说,所有层覆盖现实世界中的相同物理区域。处理大的多分辨率图像的第一步是验证这个假设。

下载被阻止的图像数据

本例使用Camelyon16数据集中的一张图像。该数据集包含400张淋巴结的全幻灯片图像(WSIs),存储为多分辨率TIF文件,由于太大而无法加载到内存中。

创建一个目录来存储Camelyon16映像。

imageDir = fullfile (“我:\”“Camelyon16”);如果~存在(imageDir“dir”mkdir (imageDir);结束

若要下载镜像,请进入Camelyon17网站,点击第一个“CAMELYON16数据集”链接。打开“培训”然后是“肿瘤”目录。下载“tumor_091.tif”文件,并将该文件移动到imageDir变量。

探索默认空间引用

创建一个blockedImage对象的默认空间引用信息。默认情况下,块图像设置每个级别的空间引用,使其具有与最细层相同的世界范围。最精细的层是具有最高分辨率和最多像素的层。

文件名= fullfile (imageDir,“tumor_091.tif”);bim = blockedImage(文件名);

最好地显示空间引用信息。图像大小(由大小属性)匹配世界坐标中的区段。注意,默认的图像坐标系统将第一个像素的中心放在(1,1)。因为像素区段在每个维度上都是1个单位宽,所以第一个像素的左边缘从(0.5,0.5)开始。

finestLevel = 1;finestEnd = bis . worldend (finestLevel,:)
finestStart = 0.5000 0.5000 0.5000 finestEnd = 1.0e+04 * 5.3761 6.1441 0.0003

以最粗略的水平显示空间引用信息。世界范围与最精细的级别相同,但粗糙的图像大小只有512 × 512像素。实际上,这个粗糙级别中的每个像素对应的是最优分辨率的105 × 120像素块。

coarsestLevel = bim.NumLevels;coarsestStart = bim.WorldStart(coarsestLevel,:)
coarsestStart = 0.5000 0.5000 0.5000 coarsestEnd = 1.0e+04 * 5.3761 6.1441 0.0003

验证长宽比

在每一级显示图像大小和宽高比。纵横比是不一致的,这表明各级不是跨越相同的世界区域。因此,该图像的默认假设是不正确的。

t =表((1:8)”,bim.Size (: 1), bim.Size (:, 2),...bim.Size(: 1)。/ bim.Size (:, 2),...“VariableNames”,[“水平”“高度”“宽度”“比例”]);disp (t)
水平高度宽度纵横比___________ _____ ____________ 1 53760 61440 0.875 2 27136 30720 0.88333 3 13824 15360 0.9 4 7168 7680 0.93333 5 3584 4096 0.875 6 2048 2048 1 7 1024 1024 1 8 512 512 1

显示层来比较空间范围

控件显示被阻塞的图像bigimageshow函数。显示最粗糙的分辨率级别。

图次要情节(1、2、1);hl = bigimageshow(荡妇,“ResolutionLevel”, coarsestLevel);标题(“最粗糙分辨率(8)”

在同一个图形窗口中以默认分辨率显示图像数据。默认情况下,bigimageshow根据屏幕分辨率和显示区域的大小选择要显示的级别。

次要情节(1、2、2);hr = bigimageshow (bim);标题(默认的分辨率级别的

确保两个显示器显示相同的区段。

linkaxes ([hl.Parent hr.Parent]);

检查默认空间引用

放大某个功能。

xlim(50000年[45000]);ylim(17000年[12000]);

更改图形窗口右侧图像的分辨率级别。在第6级,功能看起来与最粗糙的级对齐。

人力资源。ResolutionLevel = 6;标题(6级的);snapnow

在第1级,特性没有对齐。因此,第1级和第8级并不跨越相同的世界范围。

人力资源。ResolutionLevel = 1;标题(“一级”);snapnow

从阻塞图像元数据获取空间范围

通常,数据的原始源在其元数据中包含空间引用信息。对于Camelyon16数据集,空间引用信息作为XML内容存储在ImageDescription元数据字段的最佳分辨率级别。XML内容对于每个指定像素区段的分辨率级别都有一个DICOM_PIXEL_SPACING属性。

得到了ImageDescription的最佳分辨率级别的元数据字段blockedImage对象。

binfo = imfinfo (bim.Source);binfo = binfo (1) .ImageDescription;

在内容中搜索字符串“DICOM_PIXEL_SPACING”。找到了9个匹配项。属性的第二个实例对应于最细级的像素间距。属性的最后一个实例对应于最粗级的像素间距。

indx = strfind (binfo,“DICOM_PIXEL_SPACING”);

将像素间距存储在最细的级别。要从XML文本中提取像素间距的值,可以可视化地检查“DICOM_PIXEL_SPACING”属性的第二个实例后面的文本。

disp(binfo(indx(2):indx(2)+100)) pixelSpacing_L1 = 0.000227273;
DICOM_PIXEL_SPACING" Group="0x0028" Element="0x0030" PMSVR=" idoubllearray ">"屈原

类似地,将像素间距存储在最粗的级别。要从XML文本中提取像素间距的值,可视地检查“DICOM_PIXEL_SPACING”属性最后一个实例后面的文本。

disp(binfo(indx(end):indx(end)+100)) pixelSpacing_L8 = 0.0290909;
DICOM_PIXEL_SPACING" Group="0x0028" Element="0x0030" PMSVR=" idoubllearray ">"0.0290909"“

设置空间区段

计算8级和1级之间的相对像素宽度。

pixelDims = pixelSpacing_L8 / pixelSpacing_L1;

最精细的层次具有参考空间范围。根据等级1的等级计算等级8相应的等级。

worldExtents = bim.Size(1:2)。* pixelDims;

更新8级的空间引用。

bim.WorldEnd (1:2) = worldExtents (2);

验证与自定义空间引用的对齐

重新显示数据以确认关键特征的对齐。显示第8级在左边,第1级在右边。

霍奇金淋巴瘤。CData =女子;霍奇金淋巴瘤。ResolutionLevel = 8;snapnow人力资源。CData =女子;人力资源。ResolutionLevel = 1;snapnow

另请参阅

|

相关的话题