Main Content

imfill

영상 영역과 구멍 채우기

설명

예제

BW2 = imfill(BW,locations)는 입력 이진 영상 BW의 배경 픽셀에서 locations에 지정된 점부터 범람 채우기 연산을 수행합니다.

BW2 = imfill(BW,locations,conn)locations로 정의된 영역을 채웁니다. 여기서 conn은 연결성을 지정합니다.

예제

BW2 = imfill(BW,"holes")는 입력 이진 영상 BW에 있는 구멍을 채웁니다. 이 구문에서 구멍은 영상 경계부터 배경을 채우는 작업을 통해 도달할 수 없는 배경 픽셀 집합입니다.

예제

BW2 = imfill(BW,conn,"holes")는 이진 영상 BW에 있는 구멍을 채웁니다. 여기서 conn은 연결성을 지정합니다.

예제

I2 = imfill(I)는 회색조 영상 I에 있는 구멍을 채웁니다. 이 구문에서 구멍은 밝은 픽셀로 둘러싸인 어두운 픽셀 영역으로 정의됩니다.

예제

I2 = imfill(I,conn)은 회색조 영상 I에 있는 구멍을 채웁니다. 여기서 conn은 연결성을 지정합니다.

BW2 = imfill(BW)는 화면에 이진 영상 BW를 표시합니다. 이 구문을 사용하면 마우스로 대화형 방식으로 점을 선택하여, 채울 영역을 정의할 수 있습니다. 이 구문을 사용하려면 BW는 2차원 영상이어야 합니다.

이전에 선택한 점을 제거하려면 Backspace 키나 Delete 키를 누르십시오. 마지막 점을 선택하고 채우기 연산을 시작하려면 Shift 키를 누른 상태에서 클릭하거나, 마우스 오른쪽 버튼을 클릭하거나, 더블 클릭하십시오. 점을 추가하지 않고 선택을 끝내려면 Return 키를 누르십시오.

BW2 = imfill(BW,0,conn)을 사용하면 대화형 방식으로 위치를 지정할 때 디폴트 연결성을 무시할 수 있습니다.

[BW2, locations_out] = imfill(BW)는 대화형 방식으로 선택한 점 위치를 locations_out으로 반환합니다. 이 구문을 사용하려면 BW는 2차원 영상이어야 합니다.

예제

모두 축소

BW1 = logical([1 0 0 0 0 0 0 0
               1 1 1 1 1 0 0 0
               1 0 0 0 1 0 1 0
               1 0 0 0 1 1 1 0
               1 1 1 1 0 1 1 1
               1 0 0 1 1 0 1 0
               1 0 0 0 1 0 1 0
               1 0 0 0 1 1 1 0]);

BW2 = imfill(BW1,[3 3],8)
BW2 = 8x8 logical array

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

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

I = imread('coins.png');
figure
imshow(I)
title('Original Image')

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

영상을 이진 영상으로 변환합니다.

BW = imbinarize(I);
figure
imshow(BW)
title('Original Image Converted to Binary Image')

Figure contains an axes object. The axes object with title Original Image Converted to Binary Image contains an object of type image.

이진 영상의 구멍을 채우고 그 결과를 표시합니다.

BW2 = imfill(BW,'holes');
figure
imshow(BW2)
title('Filled Image')

Figure contains an axes object. The axes object with title Filled Image contains an object of type image.

I = imread('tire.tif');
I2 = imfill(I);
figure, imshow(I), figure, imshow(I2)

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

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

입력 인수

모두 축소

이진 영상으로, 임의 차원의 논리형 배열로 지정됩니다.

예: BW = imread('text.png');

데이터형: logical

픽셀 위치를 식별하는 선형 인덱스로, 양의 정수로 구성된 숫자형 벡터 또는 2차원 숫자형 행렬로 지정됩니다. locations가 p×1 벡터이면, 시작 위치의 선형 인덱스를 포함합니다. locations가 p×ndims(BW) 행렬인 경우 각 행은 시작 위치 중 하나의 배열 인덱스를 포함합니다.

예: [3 3]

데이터형: double

회색조 영상으로, 임의 차원의 숫자형 배열로 지정됩니다.

예: I = imread('cameraman.tif');

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

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

의미

2차원 연결성

4

경계가 서로 닿으면 픽셀이 연결됩니다. 픽셀의 이웃은 가로 또는 세로 방향으로 인접한 픽셀입니다.

3-by-3 pixel neighborhood with four pixels connected to the center pixel

현재 픽셀은 회색으로 표시됩니다.

8

경계 또는 코너가 서로 닿으면 픽셀이 연결됩니다. 픽셀의 이웃은 가로, 세로 또는 대각선 방향으로 인접한 픽셀입니다.

3-by-3 pixel neighborhood with 8 pixels connected to the center pixel

현재 픽셀은 회색으로 표시됩니다.

3차원 연결성

6

면이 서로 닿으면 픽셀이 연결됩니다. 픽셀의 이웃은 다음 방향으로 인접한 픽셀입니다.

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

3-by-3-by-3 pixel neighborhood with 6 pixels connected to the faces of the center pixel

현재 픽셀은 회색으로 표시됩니다.

18

면 또는 경계가 서로 닿으면 픽셀이 연결됩니다. 픽셀의 이웃은 다음 방향으로 인접한 픽셀입니다.

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

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

3-by-3-by-3 pixel neighborhood with 6 pixels connected to the faces and 12 pixels connected to the edges of the center pixel

현재 픽셀은 큐브의 중앙입니다.

26

면, 경계 또는 코너가 서로 닿으면 픽셀이 연결됩니다. 픽셀의 이웃은 다음 방향으로 인접한 픽셀입니다.

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

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

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

3-by-3-by-3 pixel neighborhood with 6 pixels connected to the faces, 12 pixels connected to the edges, and 8 pixels connected to the corners of the center pixel

현재 픽셀은 큐브의 중앙입니다.

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

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

데이터형: double | logical

출력 인수

모두 축소

채워진 이진 영상으로, 논리형 배열로 반환됩니다.

픽셀 위치의 선형 인덱스로, 숫자형 벡터 또는 숫자형 행렬로 반환됩니다.

채워진 회색조 영상으로, 숫자형 배열로 반환됩니다.

알고리즘

imfill은 모폴로지 재구성을 기반으로 한 알고리즘을 사용합니다 [1].

참고 문헌

[1] Soille, P., Morphological Image Analysis: Principles and Applications, Springer-Verlag, 1999, pp. 173–174.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장