이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

blockproc

영상에 대한 개별 블록 처리

설명

예제

B = blockproc(A,[m n],fun)은 크기가 [m n]인 각 개별 블록에 함수 fun을 적용하고 결과를 결합하여 출력 행렬 B로 만들어 영상 A를 처리합니다.

예제

B = blockproc(src_filename,[m n],fun)은 파일 이름 src_filename을 사용하여, 한 번에 하나의 블록을 읽어 들이고 처리하여 영상을 처리합니다. 이 구문은 큰 영상을 처리하는 데 유용합니다.

B = blockproc(adapter,[m n],fun)ImageAdapter 객체인 adapter로 지정된 소스 영상을 처리합니다.

예제

blockproc(___,Name,Value)는 블록 동작의 다양한 측면을 제어하는 인수 및 그 대응값을 지정하여 입력 영상을 처리합니다. 인수 이름은 대/소문자를 구분하지 않습니다.

예제

모두 축소

영상을 작업 공간으로 읽어 들입니다.

I = imread('pears.png');

블록 처리 함수를 만듭니다.

fun = @(block_struct) imresize(block_struct.data,0.15);

영상을 블록별로 처리합니다.

I2 = blockproc(I,[100 100],fun);

원본 영상과 처리된 영상을 표시합니다.

figure;
imshow(I);

figure;
imshow(I2);

블록 처리 함수를 만듭니다.

fun = @(block_struct) ...
   std2(block_struct.data) * ones(size(block_struct.data));

입력 영상을 파일 이름으로 지정하여 블록 처리 연산을 수행합니다.

I2 = blockproc('moon.tif',[32 32],fun);

원본 영상과 처리된 영상을 표시합니다.

figure;
imshow('moon.tif');

figure;
imshow(I2,[]);

영상을 작업 공간으로 읽어 들입니다.

I = imread('peppers.png');

블록 처리 함수를 만듭니다.

fun = @(block_struct) block_struct.data(:,:,[2 1 3]);

블록 처리 연산을 수행합니다.

blockproc(I,[200 200],fun,'Destination','grb_peppers.tif');

원본 영상과 처리된 영상을 표시합니다.

figure;
imshow('peppers.png');

figure;
imshow('grb_peppers.tif');

참고: 이 예제를 실행하려면 'largeImage.tif'를 변환하고자 하는 파일의 이름으로 바꿔야 합니다.

블록 처리 함수를 만듭니다.

fun = @(block_struct) block_struct.data;

TIFF 영상을 새로운 JPEG2000 영상으로 변환합니다. 'largeImage.tif'를 실제 영상 파일의 이름으로 바꿉니다.

blockproc('largeImage.tif',[1024 1024],fun,'Destination','New.jp2');

입력 인수

모두 축소

입력 영상으로, 숫자형 행렬로 지정됩니다.

소스 파일 이름으로, 문자형 벡터로 지정됩니다. 파일은 다음 파일 형식 중 하나여야 하며 나열된 파일 확장자 중 하나로 명명되어야 합니다.

  • TIFF(*.tif, *.tiff)

  • JPEG2000(*.jp2, *.jpf, *.jpx, *.j2c, *.j2k)

데이터형: char

영상 어댑터로, ImageAdapter 객체로 지정됩니다. ImageAdapterblockproc에 특정 영상 파일 형식으로의 읽기 및 쓰기를 위한 일반적인 API를 제공하는 사용자 정의 클래스입니다. 자세한 내용은 Perform Block Processing on Image Files in Unsupported Formats 항목을 참조하십시오.

블록 크기로, 요소를 2개 가진 벡터로 지정됩니다. m은 블록의 행 개수이고 n은 열 개수입니다.

함수 핸들로, 핸들로 지정됩니다. 함수는 block_struct를 입력값으로 받아서 행렬, 벡터 또는 스칼라를 반환해야 합니다. fun이 빈 값을 반환하는 경우 blockproc는 출력값을 생성하지 않고, 모든 블록을 처리한 후에 빈 값을 반환합니다.

함수 핸들에 대한 자세한 내용은 함수 핸들 생성하기 (MATLAB) 항목을 참조하십시오.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 'BorderSize',[8 4]

출력값의 대상으로, 'Destination'과 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 대상 파일 이름을 갖는 문자형 벡터. 파일은 다음 파일 형식 중 하나여야 하며 나열된 파일 확장자 중 하나로 명명되어야 합니다.

    • TIFF(*.tif, *.tiff)

    • JPEG2000(*.jp2, *.j2c, *.j2k)

    이 이름을 갖는 파일이 존재하는 경우에는 이 파일을 덮어씁니다.

  • ImageAdapter 객체. 이 객체는 특정 영상 파일 형식으로의 읽기 및 쓰기를 위한 일반적인 API를 제공합니다. 자세한 내용은 Perform Block Processing on Image Files in Unsupported Formats 항목을 참조하십시오.

'Destination' 인수를 지정하면 blockproc는 처리된 영상을 출력 인수로 반환하는 대신 출력값을 'Destination'에 씁니다. 'Destination' 인수는 출력값의 크기가 너무 커서 메모리에 담을 수 없을 것으로 예상되는 경우에 유용합니다. 이 인수는 임의로 큰 영상을 위한 파일 대 파일 영상 처리 워크플로를 제공합니다.

참고

'Destination' 인수가 지정된 경우에는 출력 인수를 요청할 수 없습니다.

각 블록에 추가할 테두리 픽셀의 개수로, 'BorderSize'와 함께 양의 정수로 구성된 요소를 2개 가진 벡터가 쉼표로 구분되어 [v h]의 형식으로 지정됩니다. 이 함수는 각 블록의 위와 아래에 v개의 행을 추가하고 각 블록의 왼쪽과 오른쪽에 h개의 열을 추가합니다. 결과로 생성되는 각 블록의 크기는 다음과 같습니다.

[m+2*v, n+2*h]

기본적으로, 함수는 fun의 결과에서 테두리를 자동으로 제거합니다. 자세한 내용은 TrimBorder 인수를 참조하십시오.

함수는 영상 가장자리를 넘어가는 테두리를 갖는 블록을 0으로 채웁니다.

불완전 블록을 완전한 크기로 만들기 위해 채울지 여부로, 'PadPartialBlocks'와 함께 false 또는 true가 쉼표로 구분되어 지정됩니다. 불완전 블록은 영상 크기가 블록 크기로 정확히 나누어 떨어지지 않을 때 발생합니다. 불완전 블록이 있는 경우, 이는 영상의 오른쪽 가장자리와 아래쪽 가장자리에 있습니다.

true로 설정하면 blockproc는 불완전 블록을 채워 mxn의 완전한 크기의 블록으로 만듭니다. 디폴트 값은 false입니다. 즉, 이 함수는 불완전 블록을 채우지 않고 있는 그대로 처리합니다. blockproc는 필요 시 0을 사용하여 불완전 블록을 채웁니다.

영상 경계를 채우는 데 사용할 방법으로, 'PadMethod'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

설명
'replicate'테두리 요소를 반복하여 채웁니다.
'symmetric'영상 자체를 대칭 복사하여 영상을 채웁니다.
숫자형 스칼라영상을 스칼라 값으로 채웁니다. 기본적으로, 영상 경계는 값 0으로 채워집니다.

데이터형: char | string

사용자 함수의 출력값에서 테두리 픽셀을 제거할지 여부로, 'TrimBorder'와 함께 true 또는 false가 쉼표로 구분되어 지정됩니다. true로 설정하면 blockproc 함수는 사용자 함수 fun의 출력값에서 테두리 픽셀을 제거합니다. 함수는 fun의 출력값의 위쪽과 아래쪽에서 v개의 행을 제거하고 왼쪽과 오른쪽 가장자리에서 h개의 열을 제거합니다. BorderSize 인수는 vh를 정의합니다.

병렬 처리를 사용할지 여부로, 'UseParallel'과 함께 false 또는 true가 쉼표로 구분되어 지정됩니다. Parallel Computing Toolbox™ 가 설치되어 있는 경우, true로 설정하면 MATLAB®은 로컬 컴퓨터에서 워커의 병렬 풀을 자동으로 엽니다. blockproc는 계산을 사용 가능한 워커 전체에서 실행합니다. 자세한 내용은 Parallel Block Processing on Large Image Files 항목을 참조하십시오.

대기 표시줄을 표시할지 여부로, 'DisplayWaitbar'와 함께 true 또는 false가 쉼표로 구분되어 지정됩니다. true로 설정하면 blockproc는 장시간 진행되는 연산의 진행률을 나타내는 대기 표시줄을 표시합니다. blockproc가 대기 표시줄을 표시하지 않도록 하려면 DisplayWaitbarfalse로 설정하십시오.

출력 인수

모두 축소

출력 행렬로, 숫자형 행렬로 반환됩니다.

세부 정보

모두 축소

블록 구조체

블록 구조체는 블록 데이터와 해당 블록에 대한 기타 정보를 포함하는 MATLAB 구조체입니다. 블록 구조체의 필드는 다음과 같습니다.

필드설명
border[v h] 형식의 요소를 2개 가진 벡터. border 필드는 데이터 블록 주위의 세로 및 가로 채우기 크기를 지정합니다. 자세한 내용은 BorderSize 인수를 참조하십시오.
blockSize[rows cols] 형식의 요소를 2개 가진 벡터. blockSize 필드는 블록 데이터의 크기를 지정합니다. 테두리가 지정된 경우 이 크기는 테두리 픽셀을 포함하지 않습니다.
data블록 데이터로 구성된 mxn 또는 mxnxp 행렬.
imageSize[rows cols] 형식의 요소를 2개 가진 벡터. imageSize 필드는 입력 영상의 전체 크기를 지정합니다.
location[row col] 형식의 요소를 2개 가진 벡터. location 필드는 입력 영상의 블록 데이터의 첫 번째 픽셀 위치(행의 최소값, 열의 최소값)를 지정합니다. 테두리가 지정된 경우 이 위치는 추가된 테두리 픽셀이 아닌 이산 블록 데이터의 첫 번째 픽셀을 나타냅니다.

  • 적절한 블록 크기를 선택하면 성능을 대폭 향상시킬 수 있습니다. 자세한 내용은 Block Size and Performance 항목을 참조하십시오.

  • 출력 행렬 B의 크기가 너무 커서 메모리에 담을 수 없는 경우에는 출력 인수를 지정하지 말고 Destination 이름-값 쌍의 인수를 대신 사용하여 파일에 출력값을 쓰십시오.

확장 기능

R2009b에 개발됨