Main Content

TransformedDatastore

기본 데이터저장소를 변환하는 데이터저장소

설명

TransformedDatastore 객체를 사용하여 기본 데이터저장소에서 읽어 들인 데이터를 변환하거나 처리합니다.

생성

transform 함수를 사용하여 TransformedDatastore 객체를 만들 수 있습니다. 예를 들어, dsnew = transform(ds1_data,ds2_data,...dsN_data,@fcn)은 변환 함수 fcn을 사용하여 하나 이상의 데이터저장소 ds1_data,ds2_data,...dsN_data를 변환하는 데이터 저장소를 만듭니다.

속성

모두 확장

기본 데이터저장소로, datastore 객체로 구성된 셀형 배열로 반환됩니다.

변환 함수 집합으로, 함수 핸들로 구성된 셀형 배열로 지정됩니다.

데이터형: cell

read 함수의 정보를 포함합니다. 논리형 벡터로 지정됩니다. true로 지정된 IncludeInfo의 각 값에 대해, 변환된 데이터저장소는 transformSet의 대응하는 변환 함수의 대체 시그니처를 사용합니다.

read 함수는 info 구조체의 추출된 데이터에 대한 정보를 반환합니다. 자세한 내용은 read 함수 도움말 페이지를 참조하십시오.

데이터형: logical

읽기 전용 속성입니다.

쓰기가 지원되는 형식으로, string형으로 구성된 행 벡터로 반환됩니다. 이 속성은 writeall을 사용하여 데이터저장소에서 출력 파일을 쓸 때 가능한 출력 형식을 지정합니다.

객체 함수

combine여러 데이터저장소의 데이터 결합
hasdata데이터를 읽을 수 있는지 확인
preview데이터저장소에 있는 데이터의 서브셋 미리보기
read데이터저장소의 데이터 읽어 들이기
readall데이터저장소의 모든 데이터 읽기
writeallWrite datastore to files
reset데이터저장소를 초기 상태로 재설정
transform데이터저장소 변환
numpartitions데이터저장소 파티션 개수
partition데이터저장소 파티셔닝
shuffle데이터저장소의 모든 데이터 읽기 섞기
isPartitionableDetermine whether datastore is partitionable
isSubsettableDetermine whether datastore is subsettable
isShuffleableDetermine whether datastore is shuffleable

예제

모두 축소

이미지 모음을 위한 데이터저장소를 만들고 데이터저장소의 모든 이미지에 동일한 변환을 적용합니다. 예를 들어, 모음에 있는 모든 이미지의 크기를 지정된 대상 크기로 조정합니다.

두 개의 이미지가 있는 ImageDatastore를 만듭니다.

imds = imageDatastore({'street1.jpg','peppers.png'})
imds = 
  ImageDatastore with properties:

                       Files: {
                              ' .../Bdoc24a.2511836/build/matlab/toolbox/matlab/demos/street1.jpg';
                              ' .../Bdoc24a.2511836/build/matlab/toolbox/matlab/imagesci/peppers.png'
                              }
                     Folders: {
                              ' .../filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/demos';
                              ' .../batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/imagesci'
                              }
    AlternateFileSystemRoots: {}
                    ReadSize: 1
                      Labels: {}
      SupportedOutputFormats: ["png"    "jpg"    "jpeg"    "tif"    "tiff"]
         DefaultOutputFormat: "png"
                     ReadFcn: @readDatastoreImage

모든 이미지를 읽어 들입니다. 데이터저장소에 서로 다른 크기의 이미지가 포함되어 있음을 확인할 수 있습니다.

img1 = read(imds); % reads the first image
img2 = read(imds); % reads the next image
whos img1 img2
  Name        Size                Bytes  Class    Attributes

  img1      480x640x3            921600  uint8              
  img2      384x512x3            589824  uint8              

데이터저장소의 모든 이미지를 지정된 대상 크기로 변환합니다.

targetSize = [224,224];
imdsReSz = transform(imds,@(x) imresize(x,targetSize));

이미지를 읽어 들이고 크기를 표시합니다.

imgReSz1 = read(imdsReSz);
imgReSz2 = read(imdsReSz);
whos imgReSz1 imgReSz2
  Name            Size                Bytes  Class    Attributes

  imgReSz1      224x224x3            150528  uint8              
  imgReSz2      224x224x3            150528  uint8              

크기가 조정된 이미지를 표시합니다.

tiledlayout(1,2);
nexttile
imshow(imgReSz1); axis on; title('Resized Street1.jpg')
nexttile
imshow(imgReSz2); axis on; title('Resized peppers.png')

Figure contains 2 axes objects. Axes object 1 with title Resized Street1.jpg contains an object of type image. Axes object 2 with title Resized peppers.png contains an object of type image.

여러 datastore 객체를 만들고 모든 데이터저장소에 동일한 변환을 적용합니다. 예를 들어, 여러 이미지를 하나의 사각형 타일 형식 이미지로 결합합니다.

한 개의 이미지가 있는 ImageDatastore를 만듭니다.

imds1 = imageDatastore({'ngc6543a.jpg'})
imds1 = 
  ImageDatastore with properties:

                       Files: {
                              ' .../Bdoc24a.2511836/build/matlab/toolbox/matlab/demos/ngc6543a.jpg'
                              }
                     Folders: {
                              ' .../filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/demos'
                              }
    AlternateFileSystemRoots: {}
                    ReadSize: 1
                      Labels: {}
      SupportedOutputFormats: ["png"    "jpg"    "jpeg"    "tif"    "tiff"]
         DefaultOutputFormat: "png"
                     ReadFcn: @readDatastoreImage

이미지를 작업 공간으로 읽어 들여 원본 이미지의 각 색 채널에서 이미지 파일을 만듭니다.

rgbImage = imread('ngc6543a.jpg');
imwrite(rgbImage(:,:,1),'nebula_red.jpg');
imwrite(rgbImage(:,:,2),'nebula_green.jpg'); 
imwrite(rgbImage(:,:,3),'nebula_blue.jpg');

각각의 단일채널 이미지에 대해 ImageDatastore 객체를 만듭니다.

imdsR = imageDatastore({'nebula_red.jpg'});
imdsG = imageDatastore({'nebula_green.jpg'});
imdsB = imageDatastore({'nebula_blue.jpg'});

각 데이터저장소에 저장된 이미지를 읽어 들이고 크기를 표시합니다.

imOriginal = read(imds1);
img_red = read(imdsR);
img_green = read(imdsG);
img_blue = read(imdsB);
whos img1 img_red img_green img_blue
  Name             Size              Bytes  Class    Attributes

  img_blue       650x600            390000  uint8              
  img_green      650x600            390000  uint8              
  img_red        650x600            390000  uint8              

모든 이미지를 하나의 사각형 타일 형식 이미지로 결합하여 모든 데이터저장소를 변환합니다. imds1의 컬러 이미지를 회색조로 변환하여 다른 이미지의 차원과 일치하도록 합니다.

tds1 = transform(imds1,imdsR,imdsG,imdsB, @(x1,x2,x3,x4) [rgb2gray(x1),x2;x3,x4]);
tile = read(tds1);

타일 형식 이미지를 표시합니다.

imshow(tile)

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

버전 내역

R2019a에 개발됨