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

imdilate

설명

예제

J = imdilate(I,SE)는 회색조 영상, 이진 영상 또는 팩 형식의 이진 영상 I를 팽창시키고, 팽창된 영상 J를 반환합니다. SE는 구조 요소 객체이거나, strel 함수 또는 offsetstrel 함수에서 반환된, 구조 요소 객체로 구성된 배열입니다.

선택적으로 GPU를 사용하여 영상 팽창을 수행할 수 있습니다(Parallel Computing Toolbox™가 필요함). 자세한 내용은 GPU를 사용한 영상 처리 항목을 참조하십시오.

J = imdilate(I,nhood)는 영상 I를 팽창시킵니다. 여기서 nhood는 구조 요소 이웃을 지정하는, 0과 1로 구성된 행렬입니다. imdilatefloor((size(nhood)+1)/2)를 통해 이웃의 중앙 요소를 파악합니다.

이 구문은 imdilate(I,strel(nhood))와 동일합니다.

J = imdilate(___,packopt)I가 팩 형식의 이진 영상인지를 지정합니다.

이 구문은 GPU에서 지원되지 않습니다.

예제

J = imdilate(___,shape)는 출력 영상의 크기를 지정합니다.

예제

모두 축소

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

BW = imread('text.png');

세로선 모양의 구조 요소를 생성합니다.

se = strel('line',11,90);

세로선 구조 요소를 사용하여 영상을 팽창시킨 다음 결과를 비교합니다.

BW2 = imdilate(BW,se);
imshow(BW), title('Original')

figure, imshow(BW2), title('Dilated')

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

originalI = imread('cameraman.tif');

공 모양의 평탄하지 않은 구조 요소를 생성합니다.

se = offsetstrel('ball',5,5);

영상을 팽창시킵니다.

dilatedI = imdilate(originalI,se);

원본 영상과 팽창된 영상을 표시합니다.

imshowpair(originalI,dilatedI,'montage')

직선 모양의 평탄한 구조 요소 두 개를 하나는 0도에서, 다른 하나는 90도에서 만듭니다.

se1 = strel('line',3,0)
se1 = 
strel is a line shaped structuring element with properties:

      Neighborhood: [1 1 1]
    Dimensionality: 2

se2 = strel('line',3,90)
se2 = 
strel is a line shaped structuring element with properties:

      Neighborhood: [3x1 logical]
    Dimensionality: 2

'full' 옵션으로 두 구조 요소를 연달아 사용하여 스칼라 값 1을 팽창시킵니다.

composition = imdilate(1,[se1 se2],'full')
composition = 3×3

     1     1     1
     1     1     1
     1     1     1

두 개의 점이 있는 논리형 3차원 볼륨을 생성합니다.

BW = false(100,100,100);
BW(25,25,25) = true;
BW(75,75,75) = true;

구 모양의 구조 요소를 사용하여 3차원 볼륨을 팽창시킵니다.

se = strel('sphere',25);
dilatedBW = imdilate(BW,se);

팽창된 영상 볼륨을 시각화합니다.

figure
isosurface(dilatedBW, 0.5)

입력 인수

모두 축소

입력 영상으로, 임의 차원의 회색조 영상, 이진 영상 또는 팩 형식의 이진 영상으로 지정됩니다.

GPU를 사용하여 영상 팽창을 수행하려면 Iuint8형 또는 logical형의 영상을 포함하는 gpuArray로 지정하십시오.

데이터형: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

구조 요소로, 스칼라 strel 객체 또는 offsetstrel 객체로 지정됩니다. SEstrel 객체 또는 offsetstrel 객체로 구성된 배열일 수도 있습니다. 이 경우 imdilate는 각 구조 요소를 연달아 사용하여 입력 영상에 대해 여러 번 팽창을 수행합니다.

imdilate는 데이터형이 logical인 영상을 제외하고 모든 영상에 대해 회색조 팽창을 수행합니다. 이 경우 구조 요소는 평탄해야 하고 imdilate는 이진 팽창을 수행합니다.

GPU를 사용하여 영상 팽창을 수행할 경우 SE는 평탄해야 하고 2차원이어야 합니다.

구조 요소 이웃으로, 0과 1로 구성된 행렬로 지정됩니다.

예: [0 1 0; 1 1 1; 0 1 0]

팩 형식의 이진 영상 표시자로, 다음 값 중 하나로 지정됩니다.

설명

'notpacked'

I가 일반적인 배열로 처리됩니다.

'ispacked'

Ibwpack에 의해 생성된 대로 팩 형식의 이진 영상으로 처리됩니다. I는 2차원 uint32형 배열이어야 하고, SE는 평탄한 2차원 구조 요소여야 합니다. shape의 값은 'same'이어야 합니다.

참고

packopt 인수는 GPU에서 지원되지 않습니다.

데이터형: char | string

출력 영상의 크기로, 다음 값 중 하나로 지정됩니다.

설명

'same'

출력 영상이 입력 영상과 크기가 같습니다. packopt 값이 'ispacked'이면, shape'same'이어야 합니다.

'full'

전체 팽창을 계산합니다.

데이터형: char | string

출력 인수

모두 축소

팽창된 영상으로, 회색조 영상, 이진 영상 또는 팩 형식의 이진 영상으로 반환됩니다. 입력 영상 I가 팩 형식의 이진 영상이면 J도 팩 형식의 이진 영상입니다. JI와 동일한 클래스를 갖습니다.

GPU를 사용하여 영상 팽창을 수행하면 JI와 클래스가 같은 회색조 영상 또는 이진 영상을 포함하는 gpuArray로 반환됩니다.

세부 정보

모두 축소

이진 팽창

B에 의한 A의 이진 팽창(A ⨁ B로 나타냄)은 다음과 같은 집합 연산으로 정의됩니다.

AB={z|(B^)zA},

여기서 B^는 구조 요소 B의 대칭입니다. 즉, 이는 픽셀 위치의 집합 z입니다. 여기서 대칭된 구조 요소는 z로 변환될 때 A의 전경 픽셀과 겹칩니다. 단, 일부 응용 사례에서는 구조 요소가 대칭되지 않는 팽창을 정의하는 경우도 있습니다.

이진 팽창에 대한 자세한 내용은 [1] 항목을 참조하십시오.

회색조 팽창

일반 형식의 회색조 팽창에서는 구조 요소가 높이를 갖습니다. B(x, y)에 의한 A(x, y)의 회색조 팽창은 다음으로 정의됩니다.

(AB)(x,y)=max{A(xx,yy)+B(x,y)|(x,y)DB},

여기서 DB는 구조 요소 B의 영역이고, A(x, y)는 영상의 영역을 벗어난 부분에서는 −∞인 것으로 간주됩니다. 높이 값이 0이 아닌 구조 요소를 생성하려면, 구문 strel(nhood,height)를 사용하십시오. 여기서 height는 높이 값을 지정하고, nhood는 구조 요소의 정의역인 DB에 해당합니다.

일반적으로 회색조 팽창은 평탄한 구조 요소(B(x,y) = 0)를 사용하여 수행됩니다. 이러한 구조 요소를 사용한 회색조 팽창은 아래의 국소 최댓값 연산자와 동일합니다.

(AB)(x,y)=max{A(xx,yy)|(x,y)DB}.

strel(nhood,height), strel('arbitrary',nhood,height)strel('ball', ...)을 제외한 모든 strel 구문은 평탄한 구조 요소를 생성합니다.

알고리즘

imdilate는 구조 요소 객체에 대한 분해를 (객체가 있는 경우)자동으로 활용합니다. 또한 imdilate는 분해가 있는 구조 요소 객체로 이진 팽창을 수행할 때, 팽창 속도를 높이기 위해 이진 영상 패킹을 자동으로 사용합니다.

비트 패킹을 사용한 팽창에 대해서는 [3]에 설명되어 있습니다.

참고 문헌

[1] Gonzalez, R. C., R. E. Woods, and S. L. Eddins, Digital Image Processing Using MATLAB, Gatesmark Publishing, 2009.

[2] Haralick, R. M., and L. G. Shapiro, Computer and Robot Vision, Vol. I, Addison-Wesley, 1992, pp. 158-205.

[3] van den Boomgard, R, and R. van Balen, "Methods for Fast Morphological Image Transforms Using Bitmapped Images," Computer Vision, Graphics, and Image Processing: Graphical Models and Image Processing, Vol. 54, Number 3, pp. 254-258, May 1992.

확장 기능

참고 항목

함수

객체

R2006a 이전에 개발됨