Main Content

strel

모폴로지 구조 요소

설명

strel 객체는 모폴로지 팽창과 침식 연산의 핵심이 되는 모폴로지 평탄 구조 요소입니다.

평탄 구조 요소는 2차원 또는 다차원의 이진 값 이웃이며, 이 이웃의 true 픽셀은 모폴로지 계산에 포함되고 false 픽셀은 포함되지 않습니다. 구조 요소에서 원점이라는 중앙 픽셀은 영상에서 처리되는 픽셀을 식별합니다. 아래에서 설명하는 strel 함수를 사용하여 평탄 구조 요소를 만들 수 있습니다. 평탄 구조 요소는 이진 영상과 회색조 영상에 모두 사용할 수 있습니다. 다음 그림은 평탄 구조 요소를 보여줍니다.

Disk shaped structuring element with a radius of 3 pixels

비평탄 구조 요소를 만들려면 offsetstrel을 사용하십시오.

생성

설명

무작위 이웃 모양

SE = strel(nhood)는 지정된 이웃 nhood로 평탄 구조 요소를 만듭니다.

2차원 기하 이웃 모양

SE = strel("diamond",r)은 다이아몬드 모양의 구조 요소를 만듭니다. 여기서 r은 구조 요소 원점부터 다이아몬드 점까지의 거리를 지정합니다.

예제

SE = strel("disk",r)은 원판 모양 구조 요소를 만듭니다. 여기서 r은 반지름을 지정합니다.

SE = strel("disk",r,n)은 원판 모양 구조 요소를 만듭니다. 여기서 r은 반지름을 지정하고, n은 원판 모양을 근사하는 데 사용되는 직선 구조 요소의 개수를 지정합니다. 구조 요소에서 근사를 사용하면 모폴로지 연산의 실행 속도가 훨씬 더 빠릅니다.

SE = strel("octagon",r)은 팔각형 구조 요소를 만듭니다. 여기서 r은 가로 축과 세로 축을 따라 측정한, 구조 요소 원점부터 팔각형 변까지의 거리를 지정합니다. r은 음이 아닌 3의 배수여야 합니다.

예제

SE = strel("line",len,deg)는 대략적인 길이가 len이고 각도가 deg인, 이웃의 중앙 요소를 기준으로 대칭이 되는 선형 구조 요소를 만듭니다.

SE = strel("rectangle",[m n])은 크기가 [m n]인 사각형 구조 요소를 만듭니다.

예제

SE = strel("square",w)는 너비가 w 픽셀인 정사각형 구조 요소를 만듭니다.

3차원 기하 이웃 모양

SE = strel("cube",w)는 너비가 w 픽셀인 3차원 3차 구조 요소를 만듭니다.

SE = strel("cuboid",[m n p])는 크기가 m×n×p 픽셀인 3차원 직육면체 구조 요소를 만듭니다.

예제

SE = strel("sphere",r)은 반지름이 r 픽셀인 구 모양의 3차원 구조 요소를 만듭니다.

호환성

비평탄 구조 요소 모양을 만드는 데 다음 구문을 계속 사용할 수 있지만, offsetstrel을 사용하는 것이 좋습니다.

  • SE = strel("arbitrary",nhood,h). 여기서 hnhood와 크기가 동일한 행렬로, nhood의 0이 아닌 각 요소와 관련된 높이 값을 포함합니다.

  • SE = strel("ball",r,h,n)

입력 인수

모두 확장

이웃으로, 임의 차원의 숫자형 배열로 지정됩니다. nhood의 모든 0이 아닌 픽셀은 모폴로지 연산에서 이웃에 속합니다. nhood의 중심(또는 원점)은 이웃의 중심이 되는 요소이며 floor((size(nhood) + 1)/2)로 주어집니다.

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

구조 요소의 반지름으로, 양의 정수로 지정됩니다.

  • 원판 모양의 경우 r은 원판의 원점부터 경계까지의 거리입니다.

  • 다이아몬드 모양의 경우 r은 구조 요소 원점부터 다이아몬드 점까지의 거리입니다.

  • 팔각형 모양의 경우 r은 가로 축과 세로 축을 따라 측정한, 구조 요소 원점부터 팔각형 변까지의 거리입니다. r은 3의 배수여야 합니다.

  • 구 모양의 경우 r은 구의 원점부터 경계까지의 거리입니다.

데이터형: double

모양을 근사하는 데 사용되는 주기적 직선 구조 요소의 개수로, 0, 4, 6 또는 8로 지정됩니다. 원판 근사를 사용하여 모폴로지 연산을 수행하면 구조 요소에서 근사를 사용할 때보다 실행 속도가 훨씬 더 빠릅니다(n > 0인 경우).

n의 값동작
n > 0streln개의 주기적 직선 모양의 구조 요소로 구성된 시퀀스를 사용하여 형태를 근사화합니다. 경우에 따라 strel에서 근사를 사용할 때 직선 구조 요소를 두 개 더 사용해야 합니다. 이 경우 분해된 구조 요소의 실제 개수는 n+2입니다.
n = 0strel은 근사를 사용하지 않습니다. 구조 요소 멤버는 원점과 픽셀 중심 간의 거리가 r을 넘지 않는 모든 픽셀로 구성됩니다.

데이터형: double

선형 구조 요소의 길이로, 양수로 지정됩니다. len은 직선 양끝에 있는 구조 요소의 중심 간의 대략적인 거리입니다.

데이터형: double

선형 구조 요소의 각도(단위: 도)로, 숫자형 스칼라로 지정됩니다. 각도는 가로 축에서부터 시계 반대 방향으로 측정됩니다.

데이터형: double

사각형 구조 요소의 크기로, 양의 정수로 구성된 요소를 2개 가진 벡터로 지정됩니다. 구조 요소는 m개 행과 n개 열을 가집니다.

데이터형: double

정사각형 또는 3차 구조 요소의 너비로, 양의 정수로 지정됩니다.

데이터형: double

직육면체 구조 요소의 크기로, 양의 정수로 구성된 요소를 3개 가진 벡터로 지정됩니다. 구조 요소는 m개 행, n개 열, p개 평면을 가집니다.

데이터형: double

속성

모두 확장

구조 요소 이웃으로, 논리형 배열로 지정됩니다.

데이터형: logical

구조 요소의 차원으로, 음이 아닌 스칼라로 지정됩니다.

데이터형: double

객체 함수

imdilate영상 팽창
imerode영상 침식
imclose영상에 모폴로지 닫기 연산 수행
imopen영상에 모폴로지 열기 연산 수행
imbothatBottom-hat 필터링
imtophatTop-hat 필터링
bwhitmiss이진 적중-비적중 연산
decomposeReturn sequence of decomposed structuring elements
reflectReflect structuring element
translateTranslate structuring element

예제

모두 축소

11×11 정사각형 구조 요소를 만듭니다.

SE = strel('square', 11)
SE = 
strel is a square shaped structuring element with properties:

      Neighborhood: [11x11 logical]
    Dimensionality: 2

45도의 각도로 기울어지고 길이가 10인 직선 모양의 구조 요소를 만듭니다.

SE = strel('line', 10, 45)
SE = 
strel is a line shaped structuring element with properties:

      Neighborhood: [7x7 logical]
    Dimensionality: 2

구조 요소를 확인합니다.

SE.Neighborhood
ans = 7x7 logical array

   0   0   0   0   0   0   1
   0   0   0   0   0   1   0
   0   0   0   0   1   0   0
   0   0   0   1   0   0   0
   0   0   1   0   0   0   0
   0   1   0   0   0   0   0
   1   0   0   0   0   0   0

반지름이 15인 원판 모양 구조 요소를 만듭니다.

SE3 = strel('disk', 15)
SE3 = 
strel is a disk shaped structuring element with properties:

      Neighborhood: [29x29 logical]
    Dimensionality: 2

원판 모양 구조 요소를 표시합니다.

figure
imshow(SE3.Neighborhood)

Figure contains an axes object. The axes object contains an object of type image.

반지름이 15인 구 모양의 3차원 구조 요소를 만듭니다.

SE = strel('sphere', 15)
SE = 
strel is a sphere shaped structuring element with properties:

      Neighborhood: [31x31x31 logical]
    Dimensionality: 3

구조 요소를 표시합니다.

figure
isosurface(SE.Neighborhood)

Figure contains an axes object. The axes object contains an object of type patch.

  • 근사를 사용하지 않는 구조 요소(n = 0)는 입자 크기의 분포를 계산하는 데 적합하지 않습니다.

알고리즘

모든 기하학적 형상의 구조 요소는 구조 요소 분해로 총칭되는 기법을 사용하여 생성됩니다. 원칙적으로, 팽창을 계산할 때 큰 구조 요소를 사용하는 것이 작은 구조 요소로 구성된 시퀀스를 사용하는 것보다 속도가 더 빠를 수 있습니다. 예를 들어, 11×11 정사각형 구조 요소를 사용한 팽창의 경우 먼저 1×11 구조 요소를 사용하여 팽창한 후 11×1 구조 요소를 사용하여 팽창할 수 있습니다. 이렇게 하면 이론적으로 성능이 5.5배 향상됩니다. 실제 성능 향상은 그보다 다소 낮습니다. "disk" 모양에 사용되는 구조 요소 분해는 근사적이지만, 그 외 다른 분해는 정확합니다.

참고 문헌

[1] 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. 252–254, May 1992.

[2] Adams, R., "Radial Decomposition of Discs and Spheres," Computer Vision, Graphics, and Image Processing: Graphical Models and Image Processing, Vol. 55, Number 5, pp. 325–332, September 1993.

[3] Jones, R., and P. Soille, "Periodic lines: Definition, cascades, and application to granulometrie," Pattern Recognition Letters, Vol. 17, pp. 1057–1063, 1996.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

도움말 항목