このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,bigimage
オブジェクトの空間参照情報を設定および確認する方法を説明します。
bigimage
の空間参照bigimage
は,複数の多重解像度イメージを使用し,シーンのイメージデータが解像度レベルの異なる一連のイメージとして格納されます。bigimage
では,各レベルの空間範囲は同じであると仮定します。つまり,すべてのレベルが実世界の同じ物理的領域をカバーすると仮定します。大きな多重解像度イメージを使用するときの最初の手順は,この仮定を検証することです。
この例ではCamelyon16データセットの1つのイメージを使用します。このデータセットには,リンパ節のスライドガラス標本全体のイメージ(WSI)が400個含まれています。これらのイメージは,多重解像气管无名动脉瘘管的度ファイルとして格納されていますが,サイズが大きいためメモリに読み込むことができません。
Camelyon16イメージを格納するディレクトリを作成します。
imageDir = fullfile (tempdir,“Camelyon16”);如果~存在(imageDir“dir”mkdir (imageDir);结束
イメージをダウンロードするには,Camelyon17のWebサイトに移動し,最初の[CAMELYON16数据集]リンクをクリックします。“培训”ディレクトリ,“肿瘤”ディレクトリの順に開きます。“tumor_091.tifファイルをダウンロードし,変数imageDir
で指定されたディレクトリにファイルを移動します。
既定の空間参照情報を使用してbigimage
を作成します。既定では,bigimage
は,最も細かいレイヤーと同じワールド範囲をもつように各レベルの空間参照を設定します。最も細かいレイヤーは,解像度が最も高く,ピクセル数が最も多いレイヤーです。
bim = bigimage (fullfile (imageDir“tumor_091.tif”));
最も細かいレベルの空間参照情報を表示します。イメージサイズ(图象尺寸
プロパティで指定)はワールド座標の範囲に一致します。既定のイメージ座標系では,最初のピクセルの中心が(1,1)に配置されることに注目してください。ピクセル範囲は各次元で1単位の幅があるため,最初のピクセルの左端は(0.5,0.5)から始まります。
finestLevel = bim.FinestResolutionLevel;finestLevelInfo = bim.SpatialReferencing (finestLevel)
finestLevelInfo = imref2d with properties: XWorldLimits: [0.5000 6.1441e+04] YWorldLimits: [0.5000 5.3761e+04] ImageSize: [53760 61440] PixelExtentInWorldX: 1 PixelExtentInWorldX: 61440 ImageExtentInWorldX: 61440 ImageExtentInWorldX: 53760 XIntrinsicLimits: [0.5000 6.1441e+04] YIntrinsicLimits: [0.5000 5.3761e+04]
最も粗いレベルの空間参照情報を表示します。ワールド範囲は最も細かいレベルと同じですが,粗いイメージサイズはわずか512 x 512ピクセルです。実際,この粗いレベルの各ピクセルは,最も細かい解像度のピクセルの105行120列のブロックに対応します。
coarsestLevel = bim.CoarsestResolutionLevel;disp (bim.SpatialReferencing (coarsestLevel))
imref2d with properties: XWorldLimits: [0.5000 6.1441e+04] YWorldLimits: [0.5000 5.3761e+04] ImageSize: [512 512] PixelExtentInWorldX: 120 PixelExtentInWorldY: 105 ImageExtentInWorldX: 61440 ImageExtentInWorldY: 53760 XIntrinsicLimits: [0.5000 512.5000] YIntrinsicLimits: [0.5000 512.5000]
各レベルのイメージサイズと縦横比を表示します。縦横比には一貫性がありません。これは,レベル間で,広がるワールド領域が異なることを示します。そのため,このイメージの場合,既定の仮定は正しくありません。
t =表((1:8)”,bim.LevelSizes (: 1), bim.LevelSizes (:, 2),...bim.LevelSizes(: 1)。/ bim.LevelSizes (:, 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
を使用してbigimage
を表示します。图ウィンドウの左側に最も粗い解像度レベルを表示します。
图次要情节(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データセットの場合,空間参照情報は,最も細かい解像度レベルのImageDescription
メタデータフィールドにXMLコンテンツとして格納されます。XMLコンテンツには,ピクセル範囲を指定する各解像度レベルのDICOM_PIXEL_SPACING属性が含まれています。
bigimage
の最も細かい解像度レベルのImageDescription
メタデータフィールドを取得します。
binfo = imfinfo (bim.DataSource);binfo = binfo (1) .ImageDescription;
コンテンツで文字列“DICOM_PIXEL_SPACINGを検索します。9つの一致が見つかります。属性の2番目のインスタンスは,最も細かいレベルのピクセル間隔に対応します。属性の最後のインスタンスは,最も粗いレベルのピクセル間隔に対応します。
indx = strfind (binfo,“DICOM_PIXEL_SPACING”);
最も細かいレベルのピクセル間隔を格納します。XMLテキストからピクセル間隔の値を抽出するには,“DICOM_PIXEL_SPACING”属性の2番目のインスタンスに続くテキストを目視で確認します。
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.SpatialReferencing (8) .ImageSize。* pixelDims;
レベル8の空間参照を更新します。
bim.SpatialReferencing(8)。XWorldLimits = [0.5 worlddextents (2)];bim.SpatialReferencing(8)。YWorldLimits = [0.5 worlddextents (1)];
データを再表示して,主要な特徴の配置を確認します。左側にレベル8を表示し,右側にレベル1を表示します。
霍奇金淋巴瘤。CData =女子;霍奇金淋巴瘤。ResolutionLevel = 8;人力资源。CData =女子;人力资源。ResolutionLevel = 1;