Main Content

multibandread

이진 파일에서 BIF(Band-Interleaved File) 데이터 읽기

구문

X = multibandread(filename,size,precision,offset,interleave,byteorder)
X = multibandread(...,subset1,subset2,subset3)

설명

X = multibandread(filename,size,precision,offset,interleave,byteorder)는 이진 파일 filename에서 BSQ(Band-Sequential), BIL(Band-Interleaved-by-Line) 또는 BIP(Band-Interleaved-by-Pixel) 데이터를 읽어 들입니다. filename 입력값은 문자형 벡터 또는 string형 스칼라로 지정됩니다. 이 함수는 대역을 아래 그림과 같이 3차원 배열의 세 번째 차원으로 정의합니다.

Schematic showing relationship between rows, columns, and bands of data

multibandread의 파라미터를 사용하여 읽기 작업의 많은 부분을 지정할 수 있습니다(예: 읽을 대역 지정). 자세한 내용은 파라미터 항목을 참조하십시오.

하나의 대역만 읽는 경우 X는 2차원 배열이며, 그렇지 않은 경우 3차원 배열입니다. 기본적으로 X는 데이터형이 double인 배열로 반환됩니다. 데이터를 다른 데이터형에 매핑하려면 precision 파라미터를 사용하십시오.

X = multibandread(...,subset1,subset2,subset3) 은 파일에 있는 데이터의 서브셋을 읽어 들입니다. 행, 열, 대역 차원을 따라 데이터 서브셋을 지정하기 위해 서브셋 설정 파라미터를 세 개까지 사용할 수 있습니다. 자세한 내용은 서브셋 설정 파라미터 항목을 참조하십시오.

참고

BSQ, BIL, BIP 파일 외에 TIFF 파일 형식을 사용하여 다중대역 이미지를 저장할 수 있습니다. 이 경우, imread 함수를 사용하여 데이터를 가져옵니다.

파라미터

다음 표에는 multibandread에서 허용하는 인수에 대한 설명이 나와 있습니다.

인수

설명

filename

읽어 들일 파일의 이름을 포함하는 문자형 벡터 또는 string형 스칼라.

size

정수로 구성된, [height, width, N]의 3개 요소를 가진 벡터

  • height는 행의 총 개수임

  • width는 각 행의 총 요소 개수임

  • N은 대역의 총 개수임

이 값은 데이터를 전부 읽어 들일 경우 데이터의 차원이 됩니다.

precision

읽어 들일 데이터 형식을 지정하는 문자형 벡터 또는 string형 스칼라(예: 'uint8', 'double', 'integer*4' 또는 fread 함수에서 지원하는 또 다른 정밀도).

참고: precision 파라미터를 사용하여 출력 데이터의 형식을 지정할 수도 있습니다. 예를 들어, uint8형의 데이터를 읽고 uint8형 배열을 출력하려면 정밀도 'uint8=>uint8'(또는 '*uint8')을 지정합니다. uint8형 데이터를 읽고 MATLAB®에 단정밀도로 출력하려면 'uint8=>single'을 지정하십시오. 자세한 내용은 fread를 참조하십시오.

offset

파일에서 첫 번째 데이터 요소의 0부터 시작하는 위치를 지정하는 스칼라. 이 값은 파일의 시작 부분에서 데이터가 시작하는 부분까지의 바이트 수를 나타냅니다.

interleave

데이터가 저장되는 형식으로, 다음 값 중 하나로 지정됩니다.

  • 'bsq' — BSQ(Band-Sequential)

  • 'bil' — BIL(Band-Interleaved-by-Line)

  • 'bip' — BIP(Band-Interleaved-by-Pixel)

이러한 대역 저장 방법에 대한 자세한 내용은 multibandwrite 도움말 페이지를 참조하십시오.

byteorder

데이터가 저장될 바이트 순서(컴퓨터 형식)를 지정하는 문자형 벡터 또는 string형 스칼라로 예를 들면 다음과 같습니다.

  • 'ieee-le' — 리틀 엔디안

  • 'ieee-be' — 빅 엔디안

지원되는 형식의 전체 목록을 보려면 fopen을 참조하십시오.

서브셋 설정 파라미터

최대 세 개의 서브셋 설정 파라미터를 지정할 수 있습니다. 각 서브셋 설정 파라미터는 세 개의 요소, {dim,method,index}가 있는 셀형 배열입니다.

파라미터

설명

dim

서브셋을 설정할 차원. 다음 값 중 하나로 지정됩니다.

  • 'Column'

  • 'Row'

  • 'Band'

method

서브셋 설정 방법. 다음 값 중 하나로 지정됩니다.

  • 'Direct'

  • 'Range'

서브셋 셀형 배열에서 이 요소를 생략하면 multibandread는 디폴트 값으로 'Direct'를 사용합니다.

index

method'Direct'이면 index는 대역 차원을 따라 읽어 들일 때의 인덱스를 지정하는 벡터입니다.

method'Range'이면 indexdim에 지정된 차원을 따라 읽어 들일 때의 범위와 스텝 크기를 지정하는 세 개의 요소를 가진 벡터 [start, increment, stop]입니다. index가 두 개의 요소를 가진 벡터이면 multibandreadincrement의 값이 1이라고 가정합니다.

예제

예제 1

데이터 세트의 초기 파라미터를 설정합니다.

rows=3; cols=3; bands=5;
filename = tempname;

데이터 세트를 정의합니다.

fid = fopen(filename, 'w', 'ieee-le');
fwrite(fid, 1:rows*cols*bands, 'double');
fclose(fid);

BSQ(Band-Sequential) 형식을 사용하여 데이터의 다른 모든 대역을 읽어 들입니다.

im1 = multibandread(filename, [rows cols bands], ...
                    'double', 0, 'bsq', 'ieee-le', ...
                    {'Band', 'Range', [1 2 bands]} )

BIP(Band-Interleaved-by-Pixel) 형식을 사용하여 데이터의 첫 번째 두 행과 두 열을 읽어 들입니다.

im2 = multibandread(filename, [rows cols bands], ...
                    'double', 0, 'bip', 'ieee-le', ...
                    {'Row', 'Range', [1 2]}, ...
                    {'Column', 'Range', [1 2]} )

BIL(Band-Interleaved-by-Line) 형식을 사용하여 데이터를 읽어 들입니다.

im3 = multibandread(filename, [rows cols bands], ...
                    'double', 0, 'bil', 'ieee-le')

이 예제에서 만든 파일을 삭제합니다.

delete(filename);

예제 2

FITS 파일 tst0012.fits의 바이트 74880에서 시작하는 int16형 BIL 데이터를 읽어 들입니다.

im4 = multibandread('tst0012.fits', [31 73 5], ...
                    'int16', 74880, 'bil', 'ieee-be', ...
                    {'Band', 'Range', [1 3]} );
im5 = double(im4)/max(max(max(im4)));
imagesc(im5);

버전 내역

R2006a 이전에 개발됨