transform
데이터저장소 변환
구문
설명
은 변환 함수 dsnew
= transform(ds1,ds2,...,dsN
,@fcn
)fcn
을 사용하여 하나 이상의 입력 데이터저장소를 변환하고 변환된 데이터저장소 dsnew
를 반환합니다. fcn
은 transform
함수 호출 시 모든 입력 데이터저장소 앞이나 뒤에 위치할 수 있습니다.
는 변환 함수 dsnew
= transform(ds1,ds2,...,dsN
,@fcn
,'IncludeInfo',IncludeInfo
)fcn
의 대체 정의를 사용합니다. 대체 정의를 사용하면 데이터저장소의 read
함수에서 반환된 추가 정보를 사용할 수 있습니다.
예제
이미지 모음에 변환 적용하기
이미지 모음을 위한 데이터저장소를 만들고 데이터저장소의 모든 이미지에 동일한 변환을 적용합니다. 예를 들어, 모음에 있는 모든 이미지의 크기를 지정된 대상 크기로 조정합니다.
두 개의 이미지가 있는 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')
여러 데이터저장소 변환하기
여러 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)
입력 인수
ds1,ds2,...,dsN
— 입력 데이터저장소
datastore 객체
입력 데이터저장소입니다. 내장된 데이터저장소의 전체 목록을 보려면 파일 형식 또는 애플리케이션에 맞는 데이터저장소 선택하기 항목을 참조하십시오. 사용자 지정 데이터저장소를 지정할 수도 있습니다.
@fcn
— 데이터를 변환하는 함수
함수 핸들
데이터를 변환하는 함수로, 함수 핸들로 지정됩니다. 이 함수는 데이터를 입력값으로 받아 fcn
에 정의된 변환을 기반으로 변환된 데이터를 반환합니다.
변환 함수는 다음과 같은 시그니처를 가져야 하며 ds1_data,ds2_data,...dsN_data
는 read
함수를 사용하여 반환된 데이터와 동일한 형식이어야 합니다.
function dataOut = transformFcn(ds1_data,ds2_data,...dsN_data) .. end
또는 read
함수에서 반환된 데이터에 대한 추가 정보를 사용하도록 변환 함수 fcn
을 정의할 수 있습니다. 이 대체 정의를 사용하려면 IncludeInfo
의 값을 true
로 지정해야 합니다. 이 경우 변환 함수는 다음과 같은 시그니처를 가져야 합니다.
function [dataOut,infoOut] = transformFcn(ds1_data,ds2_data,...dsN_data,ds1_info,ds2_info...dsN_info) .. end
예: @transformFcn
데이터형: function_handle
IncludeInfo
— read
함수의 정보 포함
true
| false
read
함수의 정보를 포함합니다. true
또는 false
로 지정됩니다. read
함수는 info
구조체의 추출된 데이터에 대한 정보를 반환합니다. 자세한 내용은 read
함수 도움말 페이지를 참조하십시오.
IncludeInfo
의 값을 true
로 설정할 경우 변환 함수 fcn
에 대한 대체 시그니처를 사용해야 합니다.
출력 인수
dsnew
— 변환된 데이터를 갖는 새 데이터저장소
TransformedDatastore
객체
변환된 데이터를 갖는 새 데이터저장소로, TransformedDatastore
객체로 반환됩니다.
확장 기능
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
사용법 관련 참고 및 제한 사항:
스레드 기반 환경에서는 다음과 같은 데이터저장소에만
transform
함수를 사용할 수 있습니다.ImageDatastore
객체ImageDatastore
객체로부터combine
또는transform
을 사용하여 생성한CombinedDatastore
,SequentialDatastore
또는TransformedDatastore
객체
Parallel Computing Toolbox™가 있는 경우
transform
함수를 다른 데이터저장소에도 사용할 수 있습니다. 이렇게 하려면backgroundPool
또는ThreadPool
을 사용하는 대신 프로세스를 지원하는 병렬 풀을 사용하는 함수를 실행하십시오(ProcessPool
또는ClusterPool
사용).
자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2019a에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)