Main Content

imageDatastore

이미지 데이터의 데이터저장소

설명

개별 이미지는 메모리에 맞지만 전체 이미지 모음은 메모리에 맞지 않을 수 있는 이미지 파일 모음을 관리하기 위해 ImageDatastore 객체를 사용합니다. imageDatastore 함수를 사용하여 ImageDatastore 객체를 만들고 그 속성을 지정한 다음, 객체 함수를 사용하여 데이터를 가져오고 처리할 수 있습니다.

생성

설명

imds = imageDatastore(location)location으로 지정된 이미지 데이터 모음에서 imds 데이터저장소를 만듭니다.

예제

imds = imageDatastore(location,Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 imds에 대한 추가 파라미터와 속성을 지정합니다.

입력 인수

모두 확장

데이터저장소에 포함할 파일 또는 폴더로, FileSet 객체, 파일 경로 또는 DsFileSet 객체로 지정됩니다.

  • FileSet 객체 — locationFileSet 객체로 지정할 수 있습니다. 위치를 FileSet 객체로 지정하면 경로나 DsFileSet 객체로 지정하는 경우보다 데이터저장소 생성 시간이 빨라집니다. 자세한 내용은 matlab.io.datastore.FileSet 항목을 참조하십시오.

  • 파일 경로 — 문자형 벡터나 string형 스칼라로 하나의 파일 경로를 지정할 수 있습니다. 여러 개의 파일 경로는 문자형 벡터로 구성된 셀형 배열 또는 string형 배열로 지정하면 됩니다.

  • DsFileSet 객체 — DsFileSet 객체를 지정할 수 있습니다. 자세한 내용은 matlab.io.datastore.DsFileSet을 참조하십시오.

파일이나 폴더는 로컬 또는 원격이 될 수 있습니다.

  • 로컬 파일 또는 폴더 — 파일 또는 폴더의 로컬 경로를 지정합니다. 파일이 현재 폴더에 없는 경우 전체 경로나 상대 경로를 지정합니다. 지정된 폴더의 하위 폴더 내에 있는 파일은 데이터저장소에 자동으로 포함되지 않습니다. 로컬 경로를 지정할 때에는 와일드카드 문자(*)를 사용할 수 있습니다. 이 문자는 모든 일치하는 파일 또는 일치하는 폴더의 모든 파일을 데이터저장소에 포함하도록 지정합니다.

  • 원격 파일 또는 폴더 — hdfs:///path_to_file 형식의 URL(Uniform Resource Locator)을 사용하여 원격 파일 또는 폴더의 전체 경로로 지정합니다. 자세한 내용은 원격 데이터로 작업하기 항목을 참조하십시오.

폴더를 지정하면 데이터저장소는 지원되는 파일 형식의 파일만 포함하며 그 외 다른 형식의 파일은 무시합니다. 데이터저장소에 포함할 파일 확장자 목록을 사용자 지정하려면 FileExtensions 속성을 참조하십시오.

imageDatastore 함수는 imformats 형식을 갖는 파일을 지원합니다.

예: "file1.jpg"

예: "../dir/data/file1.png"

예: ["C:\dir\data\file1.tif","C:\dir\data\file2.tif"]

예: "C:\dir\data\*.jpg"

이름-값 인수

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

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: imds = imageDatastore("C:\dir\imagedata","FileExtensions",[".jpg",".tif"])

하위 폴더 포함 플래그로, "IncludeSubfolders"와 함께 truefalse가 이름-값 인수로 지정됩니다. 각 폴더 내에 있는 모든 파일과 하위 폴더를 포함하려면 true를 지정하고, 각 폴더 내에 있는 파일만 포함하려면 false를 지정하십시오.

"IncludeSubfolders"를 지정하지 않은 경우 디폴트 값은 false입니다.

예: "IncludeSubfolders",true

데이터형: logical | double

이미지 파일 확장자로, "FileExtensions"와 함께 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 스칼라 또는 string형 배열이 쉼표로 구분되어 지정됩니다. 지정된 확장자에는 imformats 형식이 필요하지 않으며, 빈 따옴표("")를 사용하여 확장자가 없는 파일을 나타낼 수 있습니다. "FileExtensions"를 지정하지 않으면 imageDatastore는 지정된 경로에서 imformats 확장자가 있는 모든 이미지를 자동으로 포함합니다. imformats가 인식하지 못하는 확장자도 포함시키려면 모든 확장자를 지정하십시오.

예: "FileExtensions",".jpg"

예: "FileExtensions",[".jpg",".png"]

데이터형: char | cell | string

파일 시스템 루트 경로의 대체 경로로, "AlternateFileSystemRoots"와 함께 string형 벡터 또는 셀형 배열로 구성된 이름-값 인수로 지정됩니다. 로컬 컴퓨터에 데이터저장소를 만들지만 다른 컴퓨터(다른 운영 체제의 컴퓨터일 수 있음)의 데이터에 액세스하고 이를 처리해야 하는 경우 "AlternateFileSystemRoots"를 사용합니다. 또한 Parallel Computing Toolbox™와 MATLAB® Parallel Server™를 사용하여 데이터를 처리하고, 처리한 데이터를 다른 플랫폼 클라우드 또는 다른 클러스터 컴퓨터에 있는 데이터의 복사본과 함께 로컬 컴퓨터에 저장할 경우 "AlternateFileSystemRoots"를 사용하여 루트 경로를 연결해야 합니다.

  • 실질적으로 서로 동일한 루트 경로들의 집합을 연결하려면 "AlternateFileSystemRoots"를 string형 벡터로 지정하십시오. 예를 들면 다음과 같습니다.

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

  • 데이터저장소에 대한 실질적으로 동일한 여러 루트 경로의 집합을 여러 개 연결하려면 "AlternateFileSystemRoots"를 여러 행이 포함된 셀형 배열로 지정하십시오. 여기서 각 행은 실질적으로 동일한 루트 경로들의 집합 하나를 나타냅니다. 셀형 배열의 각 행을 string형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정합니다. 예를 들면 다음과 같습니다.

    • "AlternateFileSystemRoots"를 string형 벡터로 구성된 셀형 배열로 지정합니다.

      {["Z:\datasets", "/mynetwork/datasets"];...
       ["Y:\datasets", "/mynetwork2/datasets","S:\datasets"]}

    • 또는 "AlternateFileSystemRoots"를 문자형 벡터로 구성된 셀형 배열로 지정합니다.

      {{'Z:\datasets','/mynetwork/datasets'};...
       {'Y:\datasets', '/mynetwork2/datasets','S:\datasets'}}

"AlternateFileSystemRoots"의 값은 다음 조건을 충족해야 합니다.

  • 하나 이상의 행을 포함합니다. 여기서 각 행은 실질적으로 동일한 여러 루트 경로를 지정합니다.

  • 각 행은 여러 개의 루트 경로를 지정하고, 각 루트 경로는 적어도 두 개의 문자를 포함해야 합니다.

  • 루트 경로는 고유하며 서로의 하위 폴더가 아닙니다.

  • 파일의 위치를 가리키는 적어도 하나의 루트 경로 항목을 포함합니다.

자세한 내용은 Set Up Datastore for Processing on Different Machines or Clusters 항목을 참조하십시오.

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

데이터형: string | cell

레이블 데이터를 제공하는 소스로, "LabelSource"와 함께 "none" 또는 "foldernames"로 구성된 이름-값 인수로 지정됩니다. "none"이 지정되면 Labels 속성은 비어 있게 됩니다. "foldernames"가 지정되면 레이블이 폴더 이름에 따라 할당되고 Labels 속성에 저장됩니다. 나중에 Labels 속성에 직접 액세스하여 레이블을 수정할 수 있습니다.

FileSet 객체를 파일이나 폴더 위치로 사용하는 경우 "LabelSource" 이름-값 인수를 사용할 수 없습니다.

데이터형: char | string

이 이름-값 쌍 외에도, 이 페이지의 모든 속성(단, Files 속성은 제외)을 이름-값 쌍으로 지정할 수 있습니다.

속성

모두 확장

ImageDatastore 속성은 데이터를 설명하고 데이터저장소에서 데이터를 읽는 방법을 지정합니다. datastore 객체를 만들 때 이름-값 인수를 사용하여 ImageDatastore 속성의 값을 지정할 수 있습니다. 객체를 만든 후 속성을 보거나 수정하려면 점 표기법을 사용하십시오.

예를 들어, 다음과 같이 ImageDatastore 객체를 만들고 "ReadFcn" 파라미터를 지정할 수 있습니다.

imds = imageDatastore("peppers.png","ReadFcn",@customreader);
또는, 다음과 같이 ImageDatastore를 만든 후 "ReadFcn"@customreader에 할당할 수 있습니다.
imds = imageDatastore("peppers.png");
imds.ReadFcn = @customreader;

데이터저장소에 포함된 파일로, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 스칼라 또는 string형 배열로 확인됩니다. 각 문자형 벡터 또는 string형은 파일에 대한 전체 경로입니다. 데이터저장소를 만들 때 imageDatastore 함수와 datastore 함수에 지정되는 location 인수에 따라 Files가 정의됩니다.

예: {"C:\dir\data\file1.jpg";"C:\dir\data\file2.jpg"}

데이터형: char | cell | string

읽기 전용 속성입니다.

데이터저장소를 생성하는 데 사용된 폴더로, 문자형 벡터로 구성된 셀형 배열로 반환됩니다. 셀형 배열은 열 벡터로 방향이 설정됩니다. 각 문자형 벡터는 데이터 파일을 포함하는 폴더의 경로입니다. 데이터저장소를 만들 때 imageDatastore 함수와 datastore 함수에 지정되는 location 인수에 따라 Folders가 정의됩니다.

데이터형: cell

read 함수 호출 시 읽을 이미지 파일의 개수로, 양의 정수 스칼라로 지정됩니다. read 함수를 호출할 때마다 최대 ReadSize개 이미지를 읽습니다.

데이터저장소에 있는 파일에 대한 파일 레이블로, 벡터, 셀형 배열 또는 string형 배열로 지정됩니다. 배열에 포함된 레이블의 순서는 데이터저장소에 포함된 관련 파일의 순서와 일치합니다. ImageDatastore 객체를 만들 때 "LabelSource","foldernames"를 지정하면 파일의 레이블 이름이 파일을 포함하는 폴더의 이름이 됩니다. "LabelSource","foldernames"를 지정하지 않으면 Labels가 빈 셀형 배열 또는 string형 배열이 됩니다. 데이터저장소를 만든 후 Files 속성을 변경하면 Labels 속성은 추가된 파일을 포함하도록 자동으로 업데이트되지 않습니다.

데이터형: categorical | cell | logical | double | single | string

이미지 데이터를 읽는 함수로, 함수 핸들로 지정됩니다. 이 함수는 이미지 파일 이름을 입력값으로 받은 다음 대응하는 이미지 데이터를 출력해야 합니다. 예를 들어 customreader가 이미지 데이터를 읽도록 지정된 함수인 경우, 이 함수는 다음과 비슷한 시그니처를 가져야 합니다.

function data = customreader(filename)
...
end
둘 이상의 출력 인수가 존재할 경우 imageDatastore는 첫 번째 인수만 사용하고 나머지는 무시합니다.

참고

ReadFcn을 사용하여 2차원 이미지를 변환하거나 전처리하는 것은 권장되지 않습니다. imformats에 의해 인식되는 파일 형식의 경우, ReadFcn을 지정하면 imageDatastore의 성능이 느려집니다. 이미지를 변환하고 전처리하는 보다 효율적인 방법은 딥러닝을 위해 영상 전처리하기 (Deep Learning Toolbox) 항목을 참조하십시오.

예: @customreader

데이터형: function_handle

읽기 전용 속성입니다.

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

읽기 전용 속성입니다.

디폴트 출력 형식으로, string형 스칼라로 반환됩니다. 이 속성은 writeall을 사용하여 데이터저장소에서 출력 파일을 쓸 때의 디폴트 형식을 지정합니다.

데이터형: string

객체 함수

countEachLabelImageDatastore 레이블의 파일 개수 계산
hasdata데이터를 읽을 수 있는지 확인
numpartitions데이터저장소 파티션 개수
partition데이터저장소 파티셔닝
preview데이터저장소에 있는 데이터의 서브셋 미리보기
read데이터저장소의 데이터 읽어 들이기
readall데이터저장소의 모든 데이터 읽기
readimage데이터저장소에서 지정된 이미지 읽기
writeallWrite datastore to files
reset데이터저장소를 초기 상태로 재설정
shuffle데이터저장소의 모든 데이터 읽기 섞기
splitEachLabel비율을 기준으로 ImageDatastore 레이블 분할
subsetCreate subset of datastore or FileSet
transform데이터저장소 변환
combine여러 데이터저장소의 데이터 결합
isPartitionableDetermine whether datastore is partitionable
isSubsettableDetermine whether datastore is subsettable
isShuffleableDetermine whether datastore is shuffleable

예제

모두 축소

MATLAB® 경로와 그 하위 폴더에 있는 모든 .tif 파일과 연결된 ImageDatastore 객체를 만듭니다. 레이블 이름으로 폴더 이름을 사용합니다.

imds = imageDatastore(fullfile(matlabroot,"toolbox","matlab"),...
"IncludeSubfolders",true,"FileExtensions",".tif","LabelSource","foldernames")
imds = ImageDatastore with properties:
                       Files: {
                              '...\matlab\toolbox\matlab\demos\example.tif';
                              '...\matlab\toolbox\matlab\matlab_images\tif\corn.tif'
                              }
                     Folders: {
                              '...\matlab\toolbox\matlab'
                              }
                      Labels: [demos; imagesci]
    AlternateFileSystemRoots: {}
                    ReadSize: 1
      SupportedOutputFormats: ["png"    "jpg"    "jpeg"    "tif"    "tiff"]
         DefaultOutputFormat: "png"
                     ReadFcn: @readDatastoreImage

4개의 이미지를 포함하는 FileSet 객체를 만듭니다. ImageDatastore 객체를 생성합니다.

fs = matlab.io.datastore.FileSet(["street1.jpg","street2.jpg","peppers.png","corn.tif"])
fs = 
  FileSet with properties:

                    NumFiles: 4
                NumFilesRead: 0
                    FileInfo: Show FileInfo for all 4 files
    AlternateFileSystemRoots: {}

imds = imageDatastore(fs)
imds = ImageDatastore with properties:
                       Files: {
                              '...\matlab\toolbox\matlab\demos\street1.jpg';
                              '...\matlab\toolbox\matlab\demos\street2.jpg';
                              ' ...\matlab\toolbox\matlab\imagesci\peppers.png'
                               ... and 1 more
                              }
                     Folders: {
                              '...\matlab\toolbox\matlab\demos';
                              '...\matlab\toolbox\matlab\imagesci'
                              }
    AlternateFileSystemRoots: {}
                    ReadSize: 1
                      Labels: {}
      SupportedOutputFormats: ["png"    "jpg"    "jpeg"    "tif"    "tiff"]
         DefaultOutputFormat: "png"
                     ReadFcn: @readDatastoreImage

첫 번째 이미지를 미리 봅니다.

imshow(preview(imds));

image of street

두 번째 이미지와 세 번째 이미지만 한 번에 하나씩 읽습니다.

for i = 2:3
    img = readimage(imds,i);
end

네 개의 이미지를 모두 읽고 세 번째 이미지를 봅니다.

imgs = readall(imds);
imshow(imgs{3})

image of vegetables

제한 사항

  • ReadFcn을 사용하여 2차원 이미지를 변환하거나 전처리하는 것은 권장되지 않습니다. imformats에 의해 인식되는 파일 형식의 경우, ReadFcn을 지정하면 imageDatastore의 성능이 느려집니다. 이미지를 변환하고 전처리하는 보다 효율적인 방법은 딥러닝을 위해 영상 전처리하기 (Deep Learning Toolbox) 항목을 참조하십시오.

확장 기능

버전 내역

R2015b에 개발됨