주요 콘텐츠

blockedImageDatastore

blockedImage 객체의 블록에 사용할 데이터저장소

R2021a 이후

    설명

    blockedImageDatastore 객체는 하나 이상의 blockedImage 객체에 속하는 영상 블록의 모음을 관리합니다. blockedImageDatastore는 연관성이 없는 영상의 모음을 관리하는 imageDatastore와 비슷합니다.

    생성

    설명

    bimds = blockedImageDatastore(images)는 하나 이상의 blockedImage 객체인 images의 영상 블록 모음을 관리하는 blockedImageDatastore 객체를 생성합니다.

    기본적으로 images에 여러 해상도 수준의 블록 형식 영상이 포함된 경우 blockedImageDatastore는 가장 세밀한 해상도 수준의 영상만 선택합니다. 기본적으로 데이터저장소의 블록 크기는 images에서 가장 세밀한 해상도 수준에 있는 첫 번째 요소의 BlockSize 속성과 같습니다.

    예제

    bimds = blockedImageDatastore(sources)sources로 지정된 파일에서 데이터저장소를 만듭니다.

    bimds = blockedImageDatastore(___,Name=Value)는 하나 이상의 이름-값 인수를 사용하여 쓰기 가능 속성을 설정합니다. 예를 들어 blockedImageDatastore(images,ReadSize=8)read 함수에 대한 각 호출마다 데이터저장소에서 8개의 블록을 반환합니다.

    입력 인수

    모두 확장

    blockedImageDatastore에 블록을 제공하는 블록 형식 영상으로, blockedImage 객체로 구성된 배열로 지정됩니다. images의 모든 요소는 차원 수가 같고 데이터형이 동일해야 합니다.

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

    블록 형식 영상 파일의 이름으로, 문자형 벡터로 구성된 셀형 배열, string형 스칼라 또는 FileSet 객체로 지정됩니다.

    blockedImageDatastore 객체는 파일의 영상을 블록 형식 영상으로 변환하고 변환된 영상을 Images 속성으로 설정합니다.

    이름-값 인수

    모두 확장

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

    예: bimds = blockedImageDatastore(images,ReadSize=8)read 함수에 대한 각 호출마다 데이터저장소에서 8개의 블록을 반환합니다.

    데이터저장소에 포함할 블록으로, blockLocationSet 객체로 지정됩니다. 이 객체는 블록 형식 영상 중에서 어느 블록을 포함할지 지정합니다. 개별 블록을 반복하거나 생략할 수 있습니다.

    BlockLocationSetBlockSize 이름-값 인수 중 하나만 지정할 수 있습니다. BlockLocationSet 인수를 지정할 경우 blockedImageDatastore 함수는 다음을 수행합니다.

    • BlockLocationSet 속성을 blockLocationSet 객체로 설정합니다.

    • BlockSize 속성을 blockLocationSet 객체의 블록 크기로 설정합니다.

    BlockLocationSet 입력 인수와 BlockSize 입력 인수를 모두 지정하지 않을 경우 blockedImageDatastoreBlockLocationSet 속성의 디폴트 값을 사용합니다. 디폴트 값은 블록 크기를 지정하지 않고 selectBlockLocations 함수를 호출했을 때 반환되는 blockLocationSet 객체입니다.

    블록 크기로, 1×D 숫자형 벡터로 지정됩니다. DImages에서 Levels의 첫 번째 해상도 수준에 있는 첫 번째 블록 형식 영상의 차원 수입니다.

    BlockLocationSetBlockSize 이름-값 인수 중 하나만 지정할 수 있습니다. BlockSize 인수를 지정할 경우 blockedImageDatastore 함수는 다음을 수행합니다.

    • BlockSize 속성을 이 인수의 값으로 설정합니다.

    • 지정된 블록 크기를 사용하여 selectBlockLocations 함수를 호출하고, BlockLocationSet 속성을 반환된 blockLocationSet 객체로 설정합니다.

    BlockLocationSet 이름-값 인수와 BlockSize 이름-값 인수를 모두 지정하지 않을 경우 blockedImageDatastoreBlockSize 속성의 디폴트 값을 사용합니다. 디폴트 값은 Images에서 가장 세밀한 해상도 수준에 있는 첫 번째 블록 형식 영상의 블록 크기입니다.

    각 차원의 추가적인 블록 테두리 요소의 크기로, 음이 아닌 정수로 구성된 1×D 벡터로 지정됩니다. DImages에서 Levels의 첫 번째 해상도 수준에 있는 첫 번째 블록 형식 영상의 차원 수입니다. 디폴트 값은 zeros(1,D)입니다.

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

    불완전한 블록을 채우는 데 사용되는 방법으로, 다음 표에 있는 값 중 하나로 지정됩니다. 기본적으로 데이터저장소는 수치 블록을 Images에 있는 첫 번째 블록 형식 영상의 InitialValue 속성 값으로 채웁니다.

    의미

    숫자형, 논리형 또는 categorical형 스칼라

    지정된 값의 요소로 배열을 채웁니다. PadMethod의 데이터형은 블록 형식 영상의 ClassUnderlying 속성과 일치해야 합니다.

    "replicate"

    블록의 테두리 요소를 반복하여 채웁니다.

    "symmetric" (R2023a 이후)

    동일한 블록에서 픽셀을 대칭 복사하여 채웁니다.

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

    가장자리에 있는 불완전 블록을 채울지 여부로, 논리형 스칼라 true 또는 false로 지정됩니다. true인 경우 블록 형식 영상 데이터저장소는 PadMethod 이름-값 인수에 지정된 채우기 방법에 따라 채우기를 추가합니다.

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

    read 함수에 대한 각 호출에서 반환되는 블록 개수로, 양의 정수로 지정됩니다. read 함수에 대한 각 호출마다 최대 ReadSize개의 블록을 읽어옵니다.

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

    속성

    모두 확장

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

    데이터저장소에 포함할 블록으로, blockLocationSet 객체로 반환됩니다. 이 객체는 블록 형식 영상 Images 중에서 어느 블록을 포함할지 지정합니다.

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

    블록 크기로, 1×D 숫자형 벡터로 반환됩니다. DImages에서 Levels의 첫 번째 해상도 수준에 있는 첫 번째 블록 형식 영상의 차원 수입니다.

    각 차원의 추가적인 블록 테두리 요소의 크기로, 음이 아닌 정수로 구성된 1×D 벡터로 지정됩니다. DImages에서 Levels의 첫 번째 해상도 수준에 있는 첫 번째 블록 형식 영상의 차원 수입니다. 디폴트 값은 zeros(1,D)입니다.

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

    blockedImageDatastore에 블록을 제공하는 블록 형식 영상으로, blockedImage 객체로 구성된 배열로 반환됩니다. Images의 모든 요소는 차원 수가 같고 데이터형이 동일합니다.

    불완전한 블록을 채우는 데 사용되는 방법으로, 다음 표에 있는 값 중 하나로 지정됩니다. 기본적으로 데이터저장소는 수치 블록을 Images에 있는 첫 번째 블록 형식 영상의 InitialValue 속성 값으로 채웁니다.

    의미

    숫자형, 논리형 또는 categorical형 스칼라

    지정된 값의 요소로 배열을 채웁니다. PadMethod의 데이터형은 블록 형식 영상의 ClassUnderlying 속성과 일치해야 합니다.

    "replicate"

    블록의 테두리 요소를 반복하여 채웁니다.

    "symmetric" (R2023a 이후)

    동일한 블록에서 픽셀을 대칭 복사하여 채웁니다.

    가장자리에 있는 불완전 블록을 채울지 여부로, 논리형 스칼라 true 또는 false로 지정됩니다. true인 경우 블록 형식 영상 데이터저장소는 PadMethod 속성에 지정된 채우기 방법에 따라 채우기를 추가합니다.

    read 함수에 대한 각 호출에서 반환되는 블록 개수로, 양의 정수로 지정됩니다. read 함수에 대한 각 호출마다 최대 ReadSize개의 블록을 읽어옵니다.

    읽기 전용 속성입니다.

    사용 가능한 총 블록 수로, 숫자형 스칼라로 반환됩니다.

    객체 함수

    combine여러 데이터저장소의 데이터 결합
    countEachLabelCounts number of pixel labels for each class
    hasdataReturns true if more data is available in blocked image datastore
    numpartitions데이터저장소 파티션 개수
    partitionReturn partitioned part of blocked image datastore
    preview데이터저장소에 있는 데이터의 서브셋 미리보기
    readRead data and metadata from blocked image datastore
    readallRead all data from blocked image datastore
    reset데이터저장소를 초기 상태로 재설정
    shuffle데이터저장소의 데이터 섞기
    subsetCreate subset of datastore or FileSet
    transform데이터저장소 변환
    writeallWrite blocked image datastore to files

    예제

    모두 축소

    블록 형식 영상을 만듭니다.

    bim = blockedImage("tumor_091R.tif");

    해상도 수준 및 블록 크기를 지정하여 데이터저장소를 만듭니다.

    bls = selectBlockLocations(bim,Levels=2,BlockSize=[512 512]);
    bimds = blockedImageDatastore(bim,BlockLocationSet=bls);

    데이터저장소에서 모든 블록을 읽어옵니다.

    b = readall(bimds)
    b=9×1 cell array
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
    
    

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

    montage(b)

    Figure contains an axes object. The hidden axes object contains an object of type image.

    PNG 파일 형식의 영상 파일이 여러 개 포함된 FileSet 객체를 만듭니다.

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

    어댑터를 지정하여 blockedImage 객체를 만듭니다. 이렇게 하면 적합한 어댑터를 선택하기 위해 각 파일을 검사해야 하는 단계를 건너뛰기 때문에 시간이 절약됩니다.

    readAdapter = images.blocked.GenericImage;
    bims = blockedImage(fs,"Adapter",readAdapter);

    모든 영상의 차원 수가 같아야 하므로 RGB 영상만 보존합니다.

    bims = bims([bims.NumDimensions]==3);
    bimds = blockedImageDatastore(bims,"BlockSize",[300 500], ...
         "PadMethod","replicate");

    blockedImageDatastore의 모든 블록을 표시합니다.

    montage(readall(bimds),"Border",2,"BackgroundColor","w");

    Figure contains an axes object. The hidden axes object contains an object of type image.

    블록 형식 영상을 만듭니다.

    bim = blockedImage("tumor_091R.tif");

    중첩 블록을 지정합니다.

    blockSize = [512 512];
    overlapPct = 0.5;
    blockOffsets = round(blockSize.*overlapPct);
    bls = selectBlockLocations(bim,BlockSize=blockSize, ...
          BlockOffSets=blockOffsets,ExcludeIncompleteBlocks=true);

    블록 형식 영상 데이터저장소를 만듭니다.

    bimds = blockedImageDatastore(bim,BlockLocationSet=bls);

    중첩 블록을 표시합니다.

    bimds.ReadSize = 6;
    blocks = read(bimds);
    montage(blocks, BorderSize=5,BackgroundColor="b");

    Figure contains an axes object. The hidden axes object contains an object of type image.

    블록 형식 영상을 만듭니다.

    bim = blockedImage('tumor_091R.tif');

    가장 성긴 수준의 마스크를 만듭니다.

    bmask = apply(bim, @(bs)~imbinarize(im2gray(bs.Data)),"Level",3);

    염색된 영역에서 최소 90%의 픽셀이 'on'(켜짐) 상태인 영역을 선택하는 마스크를 정의하여 blockedImageDatastore를 만듭니다.

    mbls = selectBlockLocations(bim,...
         'Levels', 1, ...
         'Masks', bmask, 'InclusionThreshold', 0.90,...
         'BlockSize', [256 256]);
    bimds = blockedImageDatastore(bim, 'BlockLocationSet', mbls);

    블록을 읽어오고 표시합니다.

    bimds.ReadSize = 5;
    blocks = read(bimds);
    montage(blocks, "BorderSize", 5, "BackgroundColor", 'b')

    Figure contains an axes object. The hidden axes object contains an object of type image.

    레이블이 지정된 숫자형 데이터에서 블록 형식 영상을 만듭니다.

    bim = blockedImage("yellowlily.jpg",BlockSize=[512 512]);
    bimLabels = blockedImage("yellowlily-segmented.png",BlockSize=[512 512]);

    각 블록 형식 영상에 대해 blockedImageDatastore 객체를 만듭니다.

    bimds = blockedImageDatastore(bim);
    bimdsLabels = blockedImageDatastore(bimLabels);

    레이블이 지정된 숫자형 데이터를 categorical형 데이터로 변환합니다.

    classes = ["Unknown","Flower","Leaf","Background"];
    classIDs = [0 1 2 3];
    bimdsCategorical = transform(bimdsLabels, ...
          @(bs){categorical(bs{1},classIDs,classes)});

    원래 blockedImageDatastore를 categorical형 데이터저장소와 결합합니다.

    bimdsCombined = combine(bimds,bimdsCategorical);  

    결합된 데이터저장소에서 데이터를 읽어 들여 표시합니다. 첫 번째 셀은 영상 데이터이고, 두 번째 셀은 categorical형 레이블입니다.

    data = read(bimdsCombined)
    data=1×2 cell array
        {512×512×3 uint8}    {512×512 categorical}
    
    
    imshow(labeloverlay(data{1},data{2}));  

    Figure contains an axes object. The hidden axes object contains an object of type image.

    버전 내역

    R2021a에 개발됨

    모두 확장