주요 콘텐츠

blockedImage

이산 블록들로부터 만들어진 대용량 영상 또는 다중 해상도 영상

R2021a 이후

    설명

    blockedImage 객체는 이산 블록으로부터 만들어진 영상입니다. 블록 형식 영상을 사용하여 다음과 같은 작업을 수행할 수 있습니다.

    • 다중 해상도(다중 수준 또는 피라미드형으로도 알려짐) 영상을 처리합니다.

    • 너무 커서 메모리에 들어가지 않는 영상, 볼륨 또는 다차원 영상을 처리합니다.

    • 볼륨 또는 다차원 영상을 3차원 또는 고차원 블록으로 처리합니다.

    • 비표준 영상 형식의 영상에 대해 블록 처리를 수행합니다.

    생성

    설명

    읽기 전용 블록 형식 영상 만들기

    bim = blockedImage(source)는 메모리 내 배열, 영상 파일 또는 블록 형식 영상 데이터가 포함된 폴더로부터 blockedImage 객체를 생성합니다. 폴더는 write 함수에 대한 이전 호출에 의해 쓰여진 데이터만을 포함해야 합니다.

    예제

    [bim1,bim2,...] = blockedImage(sources)는 여러 소스로부터 blockedImage 객체로 구성된 배열을 만듭니다. 소스는 블록 형식 영상 데이터가 포함된 파일 또는 폴더의 모음일 수 있습니다. 블록 형식 영상의 개수는 소스의 개수와 같습니다.

    [___] = blockedImage(___,Name=Value)는 이름-값 인수를 사용하여 하나 이상의 쓰기 가능한 속성을 설정합니다.

    예를 들어, bim = blockedImage(source,BlockSize=[64 128])는 블록 크기를 64×128 픽셀로 지정합니다.

    쓰기 가능한 블록 형식 영상 만들기

    bim = blockedImage(dest,imageSize,blockSize,initVal,Mode="w")는 하나 이상의 해상도 수준을 가진 쓰기 가능한 blockedImage 객체를 만듭니다. dest 인수는 쓰기 가능한 데이터의 위치를 지정합니다. imageSizeblockSize 인수를 각각 각 해상도 수준에서의 영상 크기 및 블록 크기로 지정합니다. 각 배열 요소의 초기값으로 initVal 인수를 지정합니다.

    bim = blockedImage(dest,imageSize,blockSize,initVal,Mode="w",Name=Value)는 또한 이름-값 인수를 사용하여 하나 이상의 쓰기 가능한 속성을 설정합니다.

    예를 들어, bim = blockedImage(dest,imageSize,blockSize,initVal,Mode="w",Adapter=images.blocked.JPEGBlocks)blockedImage 객체가 각 블록을 폴더 내의 JPEG 파일로 쓰도록 지정합니다.

    입력 인수

    모두 확장

    영상 데이터의 소스로, 다음 값 중 하나로 지정됩니다.

    • 메모리 내 숫자형, categorical형 또는 구조체형 배열.

    • 메모리 내 숫자형, categorical형 또는 구조체형 배열로 구성된 셀형 배열. 셀형 배열을 지정하면 blockedImage는 다중 수준 블록 형식 영상을 만들며, 여기서 각 수준은 셀형 배열의 한 요소에 대응합니다.

    • 영상 파일의 이름 또는 블록 형식 영상 데이터가 포함된 폴더의 이름을 지정하는 string형 스칼라 또는 문자형 벡터. 폴더는 write 함수에 대한 이전 호출에 의해 쓰여진 데이터만을 포함해야 합니다.

    블록 형식 영상은 다음 파일 형식을 지원합니다.

    • 단일 TIFF 파일. 파일에 여러 영상 파일 디렉터리(IFD)가 포함된 경우, blockedImage 객체는 해당 IFD들을 여러 해상도 수준으로 처리합니다.

    • imread로 읽을 수 있는 모든 영상 파일.

    • 툴박스에 포함된 어댑터로 만들어진 모든 소스로 Adapter에 나열됨.

    이 인수는 Source 속성을 설정합니다.

    여러 개의 블록 형식 영상 객체를 생성할 때 영상 데이터의 출처로, 다음 값 중 하나로 지정됩니다.

    • string형 배열 또는 문자형 벡터로 구성된 셀형 배열. 각 요소는 영상 파일의 이름 또는 블록 형식 영상 데이터가 포함된 폴더의 이름을 지정합니다. 폴더는 write 함수에 대한 이전 호출에 의해 쓰여진 데이터만을 포함해야 합니다.

    • FileSet 객체.

    sources의 각 요소 또는 파일은 이에 대응하는 blockedImage 객체의 Source 속성을 설정합니다.

    쓰기 가능한 데이터를 저장할 위치로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.

    대상 유형영상 형식
    폴더 이름 (파일 확장자 제외)

    blockedImage 객체는 폴더를 만들고 데이터 블록을 만든 폴더 내의 파일로 저장합니다.

    • 숫자형 영상 데이터의 경우, blockedImageBINBlocks 어댑터를 사용하여 각 블록을 이진 파일로 저장합니다.

    • categorical형 및 구조체 영상 데이터의 경우, blockedImageMATBlocks 어댑터를 사용하여 각 블록을 폴더 내의 MAT 파일로 저장합니다.

    TIF 또는 TIFF 파일 확장자를 가진 파일 이름

    blockedImage 객체는 TIFF 어댑터를 사용하여 데이터를 단일 TIFF 영상으로 저장합니다.

    initialValue는 숫자형 또는 논리형이어야 하며, 데이터형은 uint8, int8, uint16, int16, uint32, int32, single, double 또는 logical이어야 합니다.

    H5 파일 확장자를 가진 파일 이름

    blockedImage 객체는 H5 어댑터를 사용하여 데이터를 단일 HDF5 영상으로 저장합니다.

    initialValue는 숫자형이어야 하며, 데이터형은 uint8, int8, uint16, int16, uint32, int32, single 또는 double이어야 합니다.

    []

    blockedImage 객체는 InMemory 어댑터를 사용하여 데이터를 메모리 내 변수로 저장합니다.

    다른 출력 형식에 대한 사용자 지정 어댑터를 지정하려면 Adapter 이름-값 인수를 사용하십시오.

    쓰기 가능한 블록 형식 영상에 대한 각 해상도 수준에서의 영상 크기로, LxN 크기의 양의 정수로 구성된 행렬로 지정됩니다. L은 해상도 수준의 개수이며, N은 영상의 차원 수입니다.

    이 인수는 Size 속성을 설정합니다. blockedImage 객체는 Source 속성이 수준을 어떻게 저장하든지와 상관없이 항상 Size 속성을 픽셀 수 기준으로 내림차순으로 정렬합니다.

    데이터형: double

    쓰기 가능한 블록 형식 영상에 대한 블록 크기로, LxN 크기의 양의 정수로 구성된 행렬로 지정됩니다. L은 해상도 수준의 개수이며, N은 차원 수입니다. blockSize는 사용을 위해 언제든지 주 메모리로 불러올 수 있는 데이터의 기본 크기로 기능합니다. blockedImage 객체로 조작할 수 있는 가장 작은 데이터 단위입니다.

    • 영상에 여러 해상도 수준이 있는 경우, 모든 해상도 수준에 대해 동일한 블록 크기를 사용하려면 blockSize를 1×N 벡터로 지정할 수 있습니다.

    • 블록의 차원은 imageSize 인수의 차원과 일치해야 합니다.

    읽기 전용 blockedImage의 경우 blockSize 인수를 지정할 수 없습니다. 대신 BlockSize 이름-값 인수를 사용하십시오.

    이 인수는 BlockSize 속성을 설정합니다.

    예: [64 128]는 블록 크기를 64×128 픽셀로 지정합니다. 이 값은 단일 해상도 영상 또는 모든 해상도 수준이 동일한 블록 크기를 갖는 다중 수준 영상에 대해 지원됩니다.

    예: [128 128; 64 64; 32 32]는 세 가지 해상도 수준을 가진 블록 형식 영상에 대해 세 가지 서로 다른 블록 크기를 지정합니다.

    데이터형: double

    쓰기 가능한 블록 형식 영상의 불러오지 않은 블록에 대한 기본 픽셀 값으로, 다음 값 중 하나로 지정됩니다.

    • 숫자형 또는 논리형 스칼라 디폴트 값은 0입니다.

    • categorical형 스칼라. 디폴트 값은 <undefined>입니다.

    • 데이터와 동일한 필드 이름을 가진 구조체. 디폴트 값은 <undefined>입니다.

    blockedImage 객체는 기본 소스에 데이터가 없는 블록을 초기값으로 채웁니다.

    이 인수는 InitialValue 속성을 설정합니다. initVal의 데이터형이 ClassUnderlying 속성의 값을 설정합니다.

    데이터형: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | char | categorical | struct

    이름-값 인수

    모두 확장

    선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

    예: bim = blockedImage(source,BlockSize=[64 128])는 블록 크기를 64×128 픽셀로 지정합니다.

    블록 형식 영상 객체에 대한 읽기 및 쓰기 인터페이스로, 다음 어댑터 객체 중 하나로 지정됩니다.

    어댑터설명
    BINBlocks각 블록을 폴더 내 이진 파일로 저장
    GenericImage 블록들을 하나의 영상으로 저장
    GenericImageBlocks각 블록을 폴더 내 영상 파일로 저장
    H5블록들을 단일 HDF5 영상으로 저장
    H5Blocks각 블록을 폴더 내 HDF5 파일로 저장
    InMemory블록들을 주 메모리 내 변수로 저장
    JPEG2000단일 JPEG2000 파일의 블록 읽기 (R2023a 이후)
    JPEGBlocks각 블록을 폴더 내 JPEG 파일로 저장
    MATBlocks각 블록을 폴더 내 MAT 파일로 저장
    PNGBlocks각 블록을 폴더 내 PNG 파일로 저장
    TIFF단일 TIFF 파일에 2차원 블록 저장
    TIFF3D단일 TIFF 파일 내 3차원 블록 읽기 (R2024b 이후)

    images.blocked.Adapter 클래스를 사용하여 사용자 지정 어댑터를 만들 수도 있습니다.

    쓰기 가능한 블록 형식 영상의 경우, 어댑터를 JPEG2000 객체로 지정할 수 없습니다.

    이 인수는 Adapter 속성을 설정합니다.

    Source에 지정된 파일에 대한 대체 파일 시스템 경로로, 하나 이상의 행을 포함하는 string형 배열로 지정됩니다. 각 행은 실질적으로 동일한 루트 경로의 집합을 지정합니다.

    이 인수는 AlternateFileSystemRoots 속성을 설정합니다.

    예: ["Z:\datasets", "/mynetwork/datasets"]

    데이터형: char | string | cell

    읽기 가능한 블록 형식 영상에 대한 블록 크기로, LxN 크기의 양의 정수로 구성된 행렬로 지정됩니다. L은 해상도 수준의 개수이며, N은 차원 수입니다. BlockSize는 사용을 위해 언제든지 주 메모리로 불러올 수 있는 데이터의 기본 크기로 기능합니다. blockedImage 객체로 조작할 수 있는 가장 작은 데이터 단위입니다.

    • 영상에 여러 해상도 수준이 있는 경우, 모든 해상도 수준에 대해 동일한 블록 크기를 사용하려면 BlockSize를 1×N 벡터로 지정할 수 있습니다.

    • BlockSizeN차원보다 작은 수로 지정할 수 있습니다. 이 경우 blockedImage 객체는 블록 크기를 Size 속성의 요소들로 채웁니다.

    쓰기 가능한 blockedImage의 경우, BlockSize 이름-값 인수를 지정할 수 없습니다. 대신 blockSize 인수를 사용하십시오.

    이 인수는 BlockSize 속성을 설정합니다.

    예: [64 128]는 블록 크기를 64×128 픽셀로 지정합니다. 이 값은 단일 해상도 영상 또는 모든 해상도 수준이 동일한 블록 크기를 갖는 다중 수준 영상에 대해 지원됩니다. 이 값은 Size 속성의 차원이 2보다 클 때, 하나 이상의 해상도 수준을 갖는 읽기 가능한 블록 형식 영상에 대해서도 지원됩니다.

    예: [128 128; 64 64; 32 32]는 세 가지 해상도 수준을 가진 블록 형식 영상에 대해 세 가지 서로 다른 블록 크기를 지정합니다.

    데이터형: double

    영상과 연결된 사용자 데이터로, 구조체로 지정됩니다. 이 필드는 비어 있을 수 있습니다. 값은 언제든지 업데이트할 수 있습니다. 이 값을 소스와 함께 유지시키려면 write 함수를 사용하여 blockedImage를 파일에 쓰거나, 객체를 만들 때 데이터를 파라미터로 지정하십시오.

    이 인수는 UserData 속성을 설정합니다.

    데이터형: struct

    영상의 끝 가장자리의 세계 좌표로, LxN 크기의 숫자형 행렬로 지정됩니다. L은 해상도 수준의 개수이며, N은 차원 수입니다. 기본적으로 각 차원과 수준에 대해 값은 Size + 0.5이며, 이는 한 단위 너비의 픽셀을 생성합니다. 첫 번째 수준에서 픽셀 중심의 세계 좌표는 픽셀의 첨자 위치와 일치합니다.

    이 인수는 WorldEnd 속성을 설정합니다.

    데이터형: double

    영상의 시작 가장자리의 세계 좌표로, LxN 크기의 숫자형 행렬로 지정됩니다. L은 해상도 수준의 개수이며, N은 차원 수입니다. 기본적으로 시작 가장자리 값은 각 차원과 수준에서 0.5입니다.

    이 인수는 WorldStart 속성을 설정합니다.

    데이터형: double

    속성

    모두 확장

    블록 형식 영상 객체에 대한 읽기 및 쓰기 인터페이스로, 다음 어댑터 객체 중 하나로 지정됩니다.

    어댑터설명
    BINBlocks각 블록을 폴더 내 이진 파일로 저장
    GenericImage 블록들을 하나의 영상으로 저장
    GenericImageBlocks각 블록을 폴더 내 영상 파일로 저장
    H5블록들을 단일 HDF5 영상으로 저장
    H5Blocks각 블록을 폴더 내 HDF5 파일로 저장
    InMemory블록들을 주 메모리 내 변수로 저장
    JPEG2000단일 JPEG2000 파일의 블록 읽기 (R2023a 이후)
    JPEGBlocks각 블록을 폴더 내 JPEG 파일로 저장
    MATBlocks각 블록을 폴더 내 MAT 파일로 저장
    PNGBlocks각 블록을 폴더 내 PNG 파일로 저장
    TIFF단일 TIFF 파일에 2차원 블록 저장
    TIFF3D단일 TIFF 파일 내 3차원 블록 읽기 (R2024b 이후)

    images.blocked.Adapter 클래스를 사용하여 사용자 지정 어댑터를 만들 수도 있습니다.

    Mode"w"로 지정하면, 어댑터를 JPEG2000 객체로 지정할 수 없습니다.

    Source에 지정된 파일에 대한 대체 파일 시스템 경로로, 하나 이상의 행을 포함하는 string형 배열로 지정됩니다. 각 행은 실질적으로 동일한 루트 경로의 집합을 지정합니다.

    예: ["Z:\datasets", "/mynetwork/datasets"]

    데이터형: char | string | cell

    블록 크기로, LxN 크기의 양의 정수로 구성된 행렬로 지정됩니다. L은 해상도 수준의 개수이며, N은 차원 수입니다. BlockSize는 사용을 위해 언제든지 주 메모리로 불러올 수 있는 데이터의 기본 크기로 기능합니다. blockedImage 객체로 조작할 수 있는 가장 작은 데이터 단위입니다.

    • 영상에 여러 해상도 수준이 있는 경우, 모든 해상도 수준에 대해 동일한 블록 크기를 사용하려면 BlockSize를 1×N 벡터로 지정할 수 있습니다.

    • 읽기 전용 blockedImage의 경우, BlockSizeN차원보다 작은 수로 지정할 수 있습니다. 이 경우 blockedImage 객체는 블록 크기를 Size 속성의 요소들로 채웁니다. 객체를 생성한 후 점 표기법을 사용하여 BlockSize 속성의 값을 변경할 수 있습니다.

    • 쓰기 가능한 blockedImage의 경우, 블록의 차원은 Size 속성의 차원과 일치해야 합니다. 객체를 생성한 후에는 BlockSize 속성의 값을 변경할 수 없습니다.

    예: [64 128]는 블록 크기를 64×128 픽셀로 지정합니다. 이 값은 단일 해상도 영상 또는 모든 해상도 수준이 동일한 블록 크기를 갖는 다중 수준 영상에 대해 지원됩니다. 이 값은 Size 속성의 차원이 2보다 클 때, 하나 이상의 해상도 수준을 갖는 읽기 가능한 블록 형식 영상에 대해서도 지원됩니다.

    예: [128 128; 64 64; 32 32]는 세 가지 해상도 수준을 가진 블록 형식 영상에 대해 세 가지 서로 다른 블록 크기를 지정합니다.

    데이터형: double

    읽기 전용 속성입니다.

    픽셀 데이터형으로, L개의 요소로 구성된 string형 배열로 지정되며, 여기서 L은 해상도 수준의 개수입니다. 배열의 각 요소는 이에 대응하는 해상도 수준의 픽셀 데이터형입니다. 값은 "logical", "int8", "uint8", "int16", "uint16", "int32", "uint32", "single", "double", "categorical""struct"입니다.

    데이터형: string

    객체 생성 후에는 이 속성은 읽기 전용입니다.

    불러오지 않은 블록의 기본 픽셀 값으로, 다음 값 중 하나로 반환됩니다.

    • 숫자형 또는 논리형 스칼라 디폴트 값은 0입니다.

    • categorical형 스칼라. 디폴트 값은 <undefined>입니다.

    • 데이터와 동일한 필드 이름을 가진 구조체. 디폴트 값은 <undefined>입니다.

    blockedImage 객체는 기본 소스에 데이터가 없는 블록을 초기값으로 채웁니다.

    데이터형: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | char | categorical | struct

    읽기 전용 속성입니다.

    영상 소스의 I/O 블록 크기로, LxN 크기의 양의 정수로 구성된 행렬로 지정됩니다. L은 해상도 수준의 개수이고, N은 차원 수입니다. IOBlockSize는 어댑터가 영상 소스로부터 읽어오기 위해 사용하는 기본 I/O 블록 크기의 크기입니다. 이는 쓰거나 읽을 수 있는 가장 작은 데이터 단위를 나타냅니다. 이 속성은 기본 영상 소스의 형식을 반영합니다.

    참고

    BlockSize는 어떤 값으로든 설정할 수 있습니다. blockedImage 객체는 효율적인 I/O를 보장하기 위해 소스 I/O 블록의 적절한 읽기, 자르기, 이어 붙이기 및 캐싱을 수행합니다.

    데이터형: double

    객체의 현재 읽기 또는 쓰기 모드로, 읽기 모드는 "r", 쓰기 모드는 "w"로 지정됩니다.

    객체를 만들 때만 Mode"w"로 설정할 수 있습니다. Mode의 값은 "w"에서 "r"로 변경할 수 있지만, 이때부터는 더 이상 쓰기가 불가능합니다. Mode"r"에서 "w"로는 변경할 수 없습니다.

    데이터형: string | char

    읽기 전용 속성입니다.

    영상의 차원 수로, 양의 정수로 지정됩니다. 차원 수가 서로 다른 다중 수준 영상의 경우, NumDimensions는 모든 수준에 걸쳐 가장 높은 값이 됩니다. 블록 형식 영상은 필요한 경우 한원소 차원을 갖는 다른 수준으로 확장됩니다.

    데이터형: double

    읽기 전용 속성입니다.

    영상 해상도 수준의 개수, 양의 정수로 지정됩니다.

    데이터형: double

    객체 생성 후에는 이 속성은 읽기 전용입니다.

    각 해상도 수준에서의 영상 크기로, LxN 크기의 양의 정수로 구성된 행렬로 반환됩니다. L은 해상도 수준의 개수이며, N은 영상의 차원 수입니다. blockedImage 객체는 Source 속성이 수준을 어떻게 저장하든지와 상관없이 항상 Size 속성을 픽셀 수 기준으로 내림차순으로 정렬합니다.

    데이터형: double

    읽기 전용 속성입니다.

    블록 개수로 표현한 크기로, LxN 크기의 양의 정수들로 구성된 행렬로 지정됩니다. L은 해상도 수준의 개수이며, N은 차원 수입니다. SizeInBlocks의 값은 불완전 블록을 포함합니다.

    이 속성은 BlockSize 속성에 따라 달라집니다.

    데이터형: double

    객체 생성 후에는 이 속성은 읽기 전용입니다.

    영상 데이터의 소스로, 다음 값 중 하나로 지정됩니다.

    • 메모리 내 숫자형, categorical형 또는 구조체형 배열.

    • 메모리 내 숫자형, categorical형 또는 구조체형 배열로 구성된 셀형 배열. 셀형 배열을 지정하면 blockedImage는 다중 수준 블록 형식 영상을 만들며, 여기서 각 수준은 셀형 배열의 한 요소에 대응합니다.

    • 영상 파일의 이름 또는 블록 형식 영상 데이터가 포함된 폴더의 이름을 지정하는 string형 스칼라 또는 문자형 벡터. 폴더는 write 함수에 대한 이전 호출에 의해 쓰여진 데이터만을 포함해야 합니다.

    블록 형식 영상은 다음 파일 형식을 지원합니다.

    • 단일 TIFF 파일. 파일에 여러 영상 파일 디렉터리(IFD)가 포함된 경우, blockedImage 객체는 해당 IFD들을 여러 해상도 수준으로 처리합니다.

    • imread로 읽을 수 있는 모든 영상 파일.

    • 툴박스에 포함된 어댑터로 만들어진 모든 소스로 Adapter에 나열됨.

    영상의 끝 가장자리의 세계 좌표로, LxN 크기의 숫자형 행렬로 지정됩니다. L은 해상도 수준의 개수이며, N은 차원 수입니다. 기본적으로 각 차원과 수준에 대해 값은 Size + 0.5이며, 이는 한 단위 너비의 픽셀을 생성합니다. 첫 번째 수준에서 픽셀 중심의 세계 좌표는 픽셀의 첨자 위치와 일치합니다.

    데이터형: double

    영상의 시작 가장자리의 세계 좌표로, LxN 크기의 숫자형 행렬로 지정됩니다. L은 해상도 수준의 개수이며, N은 차원 수입니다. 기본적으로 시작 가장자리 값은 각 차원과 수준에서 0.5입니다.

    데이터형: double

    영상과 연결된 사용자 데이터로, 구조체로 지정됩니다. 이 필드는 비어 있을 수 있습니다. 값은 언제든지 업데이트할 수 있습니다. 이 값을 소스와 함께 유지시키려면 write 함수를 사용하여 blockedImage를 파일에 쓰거나, 객체를 만들 때 데이터를 파라미터로 지정하십시오.

    데이터형: struct

    객체 함수

    applyProcess blocks of blocked image
    concatenateLevelsConcatenate levels from multiple blocked images
    crop블록 형식 영상의 잘린 버전 만들기
    blocksub2subConvert block subscripts to pixel subscripts
    gatherCollect blocks into current workspace
    getBlockRead specific block of blocked image
    getRegionRead arbitrary region of blocked image
    setBlockPut data in specific block of blocked image
    makeMultiLevel2D2-D multilevel blocked image
    makeMultiLevel3D3-D multilevel blocked image
    sub2blocksubConvert pixel subscripts to block subscripts
    sub2worldConvert pixel subscripts to world coordinates
    world2subConvert world coordinates to pixel subscripts
    writeWrite blocked image data to new destination

    예제

    모두 축소

    CAMELYON16 데이터 세트의 영상 tumor_091.tif를 변형한 버전을 사용하여 블록 형식 영상을 생성합니다. 이 영상은 종양 조직을 포함한 림프절을 보여줍니다. 원본 영상은 8개의 해상도 수준을 가지며, 가장 높은 수준은 53760×61440의 해상도를 가집니다. 수정된 영상은 세 개의 해상도 수준만을 가집니다. 수정된 영상의 공간 참조는 일관된 종횡비를 유지하고 각 수준에서 특징을 정합하도록 조정되었습니다.

    bim = blockedImage("tumor_091R.tif");
    

    블록 형식 영상을 표시합니다.

    imageshow(bim);
    

    데이터를 작업 공간으로 읽어 들입니다. 이 예제에서는 툴박스에 포함된 샘플 볼륨을 읽어올 것입니다.

    dmri = tiffreadVolume('mri.tif');
    

    볼륨으로부터 블록 형식 영상을 만듭니다.

    bim = blockedImage(dmri);
    

    블록 형식 영상에 대한 세부 정보를 명령줄에 표시합니다.

    disp(bim)
    
      blockedImage with properties:
    
       Read only properties
                 Source: [128×128×27 uint8]
                Adapter: [1×1 images.blocked.InMemory]
                   Size: [128 128 27]
           SizeInBlocks: [1 1 1]
        ClassUnderlying: "uint8"
    
       Settable properties
              BlockSize: [128 128 27]
    
    

    샘플 영상의 툴박스 폴더에 있는 영상들의 파일 세트를 생성합니다.

    fs = matlab.io.datastore.FileSet( ...
             fullfile(matlabroot,'toolbox','images','imdata'), ...
             "FileExtensions",{'.jpg','.png'});

    파일 세트의 영상들로부터 블록 형식 영상으로 구성된 배열을 생성합니다.

    bims = blockedImage(fs);

    블록 형식 영상으로 구성된 배열의 세부 정보를 표시합니다.

    disp(bims)
      1×67 blockedImage array with properties:
    
       Read only properties
                 Source: 'Various'
                Adapter: [1×1 images.blocked.GenericImage]
        ClassUnderlying: 'Various'
    
       Settable properties
        No properties.
    

    데이터를 쓸 수 있는 블록 형식 영상을 생성합니다. destination 파라미터에서 블록 형식 영상의 형식을 지정합니다. 메모리에 쓰려면 빈 행렬을 지정하십시오. 영상의 크기와 영상을 분할하는 블록의 크기도 지정해야 합니다. 초기값 파라미터는 destination에 지정한 형식에 따라 달라집니다. 쓰기 가능한 블록 형식 영상을 만들려면 'Mode' 파라미터에 쓰기 모드를 나타내는 값 'w'를 지정하십시오.

    destination = [];
    imgsize = [5 7];
    blocksize = [2 2];
    initval = uint8(0);
    bim = blockedImage(destination,imgsize,blocksize,initval, "Mode", 'w');
    

    setBlock 객체 함수를 사용하여 블록 형식 영상의 지정된 블록에 데이터를 씁니다. blocksubs 파라미터는 데이터를 쓰려는 블록의 좌표를 지정합니다. blockdata 파라미터는 지정된 블록에 쓸 데이터를 지정합니다. blockdata의 크기는 블록 크기와 일치해야 합니다.

    blocksubs = [1 1];
    blockdata = ones(2,2,"uint8");
    setBlock(bim, blocksubs, blockdata)
    

    쓰기를 위해 영상을 닫으십시오.

    'Mode' 파라미터를 읽기 모드를 나타내는 'r'로 설정하여 블록 형식 영상을 읽기 모드로 전환하십시오.

    bim.Mode = 'r'
    
    bim = 
    
      blockedImage with properties:
    
       Read only properties
                 Source: "    {5×7 uint8}↵"
                Adapter: [1×1 images.blocked.InMemory]
                   Size: [5 7]
           SizeInBlocks: [3 4]
        ClassUnderlying: "uint8"
    
       Settable properties
              BlockSize: [2 2]
    
    

    gather 함수를 사용하여 모든 개별 블록을 수집함으로써 전체 영상을 만듭니다.

    fullImage = gather(bim);
    

    블록 형식 영상의 세부 정보를 명령줄에 표시합니다.

    disp(fullImage)
    
       1   1   0   0   0   0   0
       1   1   0   0   0   0   0
       0   0   0   0   0   0   0
       0   0   0   0   0   0   0
       0   0   0   0   0   0   0
    
    

    여러분의 응용 사례에서 세계 단위로 좌표나 거리를 측정해야 하는 경우, blockedImage 객체의 WorldStartWorldEnd 속성을 지정하여 사용자 지정 세계 좌표를 정의할 수 있습니다.

    CAMELYON16 데이터 세트의 영상 tumor_091.tif를 변형한 버전을 사용하여 블록 형식 영상을 생성합니다. 이 영상은 종양 조직을 포함한 림프절을 보여줍니다. 원본 영상은 8개의 해상도 수준을 가지며, 가장 높은 수준은 53760×61440의 해상도를 가집니다. 수정된 영상은 세 개의 해상도 수준만을 가집니다. 수정된 영상의 공간 참조는 일관된 종횡비를 유지하고 각 수준에서 특징을 정합하도록 조정되었습니다.

    bim = blockedImage("tumor_091R.tif");
    

    가장 높은 해상도 수준에서 픽셀 크기를 밀리미터 단위로 지정하십시오. 이 영상의 경우, 픽셀 크기는 약 0.22 마이크로미터로, 이는 100배 현미경 대물렌즈의 일반적인 크기입니다. 이 정보는 Camelyon 17 Grand Challenge 웹사이트의 원시 데이터에서 확인할 수 있습니다.

    pixelSpacing = 0.000226316;
    

    첫 번째 픽셀의 왼쪽 위 가장자리의 위치를 지정하되, 세 가지 해상도 수준에서 모두 (0, 0)이라고 가정합니다.

    worldStart = zeros(bim.NumLevels, bim.NumDimensions);
    

    가장 높은 해상도 수준의 마지막 픽셀의 우측 하단 가장자리 위치를 계산하십시오. 위치는 픽셀 수와 밀리미터 단위의 픽셀 크기를 곱한 값입니다.

    worldEnd = bim.Size(1,:)*pixelSpacing;
    

    repmat를 사용하여 worldEnd 값을 확장하여 세 가지 해상도 수준에 모두 동일한 위치를 지정하십시오.

    worldEnd = repmat(worldEnd,[bim.NumLevels,1]);
    

    WorldStartWorldEnd 속성값을 업데이트하십시오.

    bim.WorldStart = worldStart;
    bim.WorldEnd = worldEnd;
    

    업데이트된 블록 형식 영상을 표시합니다. 올바른 단위 레이블을 사용하기 위해 영상 표시의 부모를 Viewer 객체로 설정하고, SpatialUnits 속성값을 "mm"로 지정하십시오. SpatialUnits 속성은 주석 레이블 텍스트에만 영향을 미친다는 점에 유의하십시오. blockedImage 객체의 세계 좌표는 표시된 영상의 공간 좌표 값을 결정합니다.

    viewer = viewer2d(ScaleBar="on",ScaleBarStyle="measure",SpatialUnits="mm");
    imageshow(bim,Parent=viewer);
    

    • blockproc 함수는 단일 해상도 메모리 내 영상의 2차원 블록을 처리하기 위한 blockedImage의 대체 함수입니다.

    버전 내역

    R2021a에 개발됨

    모두 확장