Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Establecer referencia espacial para imágenes grandes

En este ejemplo se muestra cómo establecer y comprobar la información de referencia espacial de un objeto.bigimage

Referencia espacial enbigimage

funciona con imágenes multiresolución, en las que los datos de imagen de una escena se almacenan como un conjunto de imágenes en diferentes niveles de resolución. supone que las extensiones espaciales de cada nivel son las mismas, es decir, que todos los niveles cubren la misma área física en el mundo real.bigimagebigimage El primer paso para trabajar con una imagen multiresolución grande es validar esta suposición.

Descargar Big Image Data

Este ejemplo utiliza una imagen del conjunto de datos Camelyon16. Este conjunto de datos contiene 400 imágenes de diapositivas enteras (WSI) de ganglios linfáticos, almacenadas como multiresolución. TIF que son demasiado grandes para cargarse en la memoria.

Cree un directorio para almacenar la imagen Camelyon16.

imageDir = fullfile(tempdir,'Camelyon16'); if ~exist(imageDir,'dir')     mkdir(imageDir); end 

Para descargar la imagen, vaya al sitio web y haga clic en el primer enlace "CAMELYON16 data set".Camelyon17 Abra el directorio "training" y luego "tumor". Descargue el archivo "tumor_091.tif" y mueva el archivo al directorio especificado por la variable.imageDir

Explore la referencia espacial predeterminada

Cree una con la información de referencia espacial predeterminada.bigimage De forma predeterminada, establece la referencia espacial de cada nivel para que tenga las mismas extensiones mundiales que la capa más fina.bigimage La capa más fina es la capa que tiene la resolución más alta y la mayoría de los píxeles.

bim = bigimage([imageDir '/tumor_091.tif']); 

Muestre la información de referencia espacial en el nivel más fino. El tamaño de la imagen (especificado por la propiedad) coincide con las extensiones de las coordenadas mundiales.ImageSize Observe que el sistema de coordenadas de imagen predeterminado coloca el centro del primer píxel en (1,1). Dado que las extensiones de píxeles tienen 1 unidad de ancho en cada dimensión, el borde izquierdo del primer píxel comienza en (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     PixelExtentInWorldY: 1     ImageExtentInWorldX: 61440     ImageExtentInWorldY: 53760        XIntrinsicLimits: [0.5000 6.1441e+04]        YIntrinsicLimits: [0.5000 5.3761e+04]  

Mostrar la información de referencia espacial en el nivel más grueso. Las extensiones mundiales son las mismas que el nivel más alto, pero el tamaño de imagen grueso es de solo 512 por 512 píxeles. Efectivamente, cada píxel en este nivel grueso corresponde a un bloque de 105 por 120 píxeles en la resolución más fina.

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]  

Verificar la relación de aspecto

Muestra el tamaño y la relación de aspecto de la imagen en cada nivel. La relación de aspecto no es coherente, lo que indica que los niveles no abarcan todos la misma zona mundial. Por lo tanto, la suposición predeterminada es incorrecta para esta imagen.

t = table((1:8)',bim.LevelSizes(:,1),bim.LevelSizes(:,2), ...     bim.LevelSizes(:,1)./bim.LevelSizes(:,2), ...     'VariableNames',["Level" "Height" "Width" "Aspect Ratio"]); disp(t) 
    Level    Height    Width    Aspect Ratio     _____    ______    _____    ____________        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     

Mostrar capas para comparar extensiones espaciales

Visualice la función mediante la función.bigimagebigimageshow Visualice el nivel de resolución más grueso en el lado izquierdo de una ventana de figura.

<span class="codeinput">figure</span>
<span class="codeinput">subplot(1,2,1);</span>
<span class="codeinput">hl = bigimageshow(bim,'ResolutionLevel',coarsestLevel);</span>
<span class="codeinput">title('Coarsest Resolution Level (8)')</span>

Visualice los datos de imagen en el nivel de resolución predeterminado en el lado derecho de una ventana de figura. De forma predeterminada, selecciona el nivel que se mostrará en función de la resolución de pantalla y el tamaño de la región mostrada.bigimageshow

<span class="codeinput">subplot(1,2,2);</span>
<span class="codeinput">hr = bigimageshow(bim);</span>
<span class="codeinput">title('Default Resolution Level')</span>

Asegúrese de que ambas pantallas muestren las mismas extensiones.

<span class="codeinput">linkaxes([hl.Parent,hr.Parent]);</span>

Comprobar referencia espacial predeterminada

Amplíe una función.

<span class="codeinput">xlim([45000 50000]);</span>
<span class="codeinput">ylim([12000 17000]);</span>

Cambie el nivel de resolución de la imagen en el lado derecho de la ventana de figura. En el nivel 6, las entidades se ven alineadas con el nivel más grueso.

<span class="codeinput">hr.ResolutionLevel = 6;</span>
<span class="codeinput">title('Level 6');</span>
<span class="codeinput">snapnow</span>

En el nivel 1, las entidades no están alineadas. Por lo tanto, el nivel 1 y el nivel 8 no abarcan las mismas extensiones mundiales.

<span class="codeinput">hr.ResolutionLevel = 1;</span>
<span class="codeinput">title('Level 1');</span>
<span class="codeinput">snapnow</span>

Obtenga extensiones espaciales de metadatos de big image

Normalmente, el origen original de los datos tiene información de referencia espacial codificada en sus metadatos. Para el conjunto de datos Camelyon16, la información de referencia espacial se almacena como contenido XML en el campo de metadatos en el nivel de resolución más fino.ImageDescription El contenido XML tiene un atributo DICOM_PIXEL_SPACING para cada nivel de resolución que especifica las extensiones de píxel.

Obtenga el campo de metadatos en el nivel de resolución más fino del archivo .ImageDescriptionbigimage

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

Busque en el contenido la cadena "DICOM_PIXEL_SPACING". Se han encontrado nueve fósforos. La segunda instancia del atributo corresponde al espaciado de píxeles del nivel más fino. La última instancia del atributo corresponde al espaciado de píxeles del nivel más grueso.

indx = strfind(binfo,"DICOM_PIXEL_SPACING"); 

Almacene el espaciado de píxeles en el nivel más fino. Para extraer el valor del espaciado de píxeles del texto XML, inspeccione visualmente el texto que sigue a la segunda instancia del atributo "DICOM_PIXEL_SPACING".

disp(binfo(indx(2):indx(2)+100)) pixelSpacing_L1 = 0.000227273; 
DICOM_PIXEL_SPACING" Group="0x0028" Element="0x0030" PMSVR="IDoubleArray">&quot;0.000227273&quot; &qu 

Del mismo modo, almacene el espaciado de píxeles en el nivel más grueso. Para extraer el valor del espaciado de píxeles del texto XML, inspeccione visualmente el texto que sigue a la última instancia del atributo "DICOM_PIXEL_SPACING".

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

Establecer extensiones espaciales

Calcule el ancho de píxel relativo entre el nivel 8 y el nivel 1.

pixelDims = pixelSpacing_L8/pixelSpacing_L1; 

El nivel más fino tiene la extensión espacial de referencia. Calcule las extensiones correspondientes para el nivel 8 con respecto a la extensión del nivel 1.

worldExtents = bim.SpatialReferencing(8).ImageSize.*pixelDims; 

Actualice la referencia espacial del nivel 8.

bim.SpatialReferencing(8).XWorldLimits = [0.5 worldExtents(2)]; bim.SpatialReferencing(8).YWorldLimits = [0.5 worldExtents(1)]; 

Verificar la alineación con la referencia espacial personalizada

Vuelva a mostrar los datos para confirmar la alineación de la operación clave. Muestra el nivel 8 en el lado izquierdo y el nivel 1 en el lado derecho.

<span class="codeinput">hl.CData = bim;</span>
<span class="codeinput">hl.ResolutionLevel = 8;</span>
<span class="codeinput">hr.CData = bim;</span>
<span class="codeinput">hr.ResolutionLevel = 1;</span>

Consulte también

|

Temas relacionados