Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

bwareaopen

이진 영상에서 크기가 작은 객체 제거

설명

예제

BW2 = bwareaopen(BW,P)는 이진 영상 BW에서 픽셀 수가 P개보다 적은 연결성분(객체)을 모두 제거하여 또다른 이진 영상 BW2를 생성합니다. 이 연산을 영역 열기라고 합니다.

BW2 = bwareaopen(BW,P,conn)은 연결성분을 모두 제거합니다. 여기서 conn은 사용자가 지정하는 연결성을 의미합니다.

예제

모두 축소

이진 영상을 읽어 들입니다.

BW = imread('text.png');

bwareaopen 함수를 사용하여 픽셀 수가 50개 미만인 객체를 제거합니다.

BW2 = bwareaopen(BW, 50);

원본 영상과 모폴로지 열기 연산이 수행된 영상을 나란히 표시합니다.

imshowpair(BW,BW2,'montage')

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

입력 인수

모두 축소

이진 영상으로, 임의 차원을 가진 논리형 또는 숫자형 배열로 지정됩니다.

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

객체의 최대 픽셀 수로, 음이 아닌 정수로 지정됩니다.

예: 50

데이터형: double

픽셀 연결성으로, 다음 표에 있는 값 중 하나로 지정됩니다. 디폴트 연결성은 2차원 영상의 경우 8, 3차원 영상의 경우 26입니다.

의미

2차원 연결성

4-연결

경계가 서로 닿으면 픽셀이 연결됩니다. 두 개의 인접한 픽셀이 모두 켜져 있고 가로 또는 세로 방향으로 연결되어 있으면 두 픽셀은 동일한 객체에 속합니다.

8-연결

경계 또는 코너가 서로 닿으면 픽셀이 연결됩니다. 두 개의 인접한 픽셀이 모두 켜져 있고 가로, 세로 또는 대각선 방향으로 연결되어 있으면 두 픽셀은 동일한 객체에 속합니다.

3차원 연결성

6-연결

면이 서로 닿으면 픽셀이 연결됩니다. 두 개의 인접한 픽셀이 모두 켜져 있고 다음 방향으로 연결되어 있으면 두 픽셀은 동일한 객체에 속합니다.

  • 안쪽, 바깥쪽, 왼쪽, 오른쪽, 위쪽, 아래쪽 방향 중 하나

18-연결

면 또는 경계가 서로 닿으면 픽셀이 연결됩니다. 두 개의 인접한 픽셀이 모두 켜져 있고 다음 방향으로 연결되어 있으면 두 픽셀은 동일한 객체에 속합니다.

  • 안쪽, 바깥쪽, 왼쪽, 오른쪽, 위쪽, 아래쪽 방향 중 하나

  • 두 방향의 조합(예: 오른쪽-아래쪽 또는 안쪽-위쪽)

26-연결

면, 경계 또는 코너가 서로 닿으면 픽셀이 연결됩니다. 두 개의 인접한 픽셀이 모두 켜져 있고 다음 방향으로 연결되어 있으면 두 픽셀은 동일한 객체에 속합니다.

  • 안쪽, 바깥쪽, 왼쪽, 오른쪽, 위쪽, 아래쪽 방향 중 하나

  • 두 방향의 조합(예: 오른쪽-아래쪽 또는 안쪽-위쪽)

  • 세 방향의 조합(예: 안쪽-오른쪽-위쪽 또는 안쪽 -왼쪽-아래쪽)

더 높은 차원의 경우, bwareaopen은 디폴트 값 conndef(ndims(BW),'maximal')을 사용합니다.

01로 구성된 3×3×...×3 행렬을 지정하여 모든 차원에 대해 더 일반적인 방식으로 연결성을 정의할 수도 있습니다. 값이 1인 요소는 conn의 중앙 요소를 기준으로 하여 이웃 픽셀의 위치를 정의합니다. conn은 그 중앙 요소를 기준으로 대칭이어야 합니다. 자세한 내용은 Specifying Custom Connectivities 항목을 참조하십시오.

데이터형: double | logical

출력 인수

모두 축소

영역이 열린 영상으로, BW와 크기가 같은 논리형 배열로 반환됩니다.

알고리즘

기본 단계는 아래와 같습니다.

  1. 연결성분을 판별합니다.

    CC = bwconncomp(BW, conn);
  2. 각 성분의 면적을 계산합니다.

    S = regionprops(CC, 'Area');
  3. 크기가 작은 객체를 제거합니다.

    L = labelmatrix(CC);
    BW2 = ismember(L, find([S.Area] >= P));
    

확장 기능

참고 항목

|

R2006a 이전에 개발됨