Main Content

imreconstruct

모폴로지 재구성

설명

예제

J = imreconstruct(marker,mask)는 영상 mask 아래에서 영상 marker의 모폴로지 재구성을 수행하고 재구성을 J로 반환합니다. marker의 요소는 mask의 대응 요소보다 작거나 같아야 합니다. marker의 값이 mask의 해당 요소보다 큰 경우 imreconstruct는 절차를 시작하기 전에 값을 mask 수준으로 자릅니다.

J = imreconstruct(marker,mask,conn)은 지정된 연결성 conn으로 모폴로지 재구성을 수행합니다.

예제

모두 축소

회색조 영상을 읽어 들이고 표시합니다.

I = imread('snowflakes.png');
imshow(I)

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

영상의 대비를 조정하여 마스크 영상을 만들고 결과를 표시합니다.

mask = adapthisteq(I);
imshow(mask)

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

모폴로지 침식을 사용하여 영상에서 명암이 높은 객체를 식별하는 마커 영상을 만들고 결과를 표시합니다.

se = strel('disk',5);
marker = imerode(mask,se);
imshow(marker)

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

마스크에서 명암이 높은 객체를 식별하기 위해 마커 영상을 사용하여 마스크 영상에서 모폴로지 열기를 수행합니다. 결과를 표시합니다.

obr = imreconstruct(marker,mask);
imshow(obr,[])

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

논리형 영상을 작업 공간으로 읽어 들인 후 표시합니다. 이는 마스크 영상입니다.

mask = imread('text.png');
figure
imshow(mask)

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

분할을 통해 추출하려는 영상의 객체를 식별하는 마커 영상을 만듭니다. 이 예제에서는 단어 "watershed"에서 "w"를 식별합니다.

marker = false(size(mask));
marker(13,94) = true;

마커 영상을 사용하여 마스크 영상의 분할을 수행합니다.

im = imreconstruct(marker,mask);
figure
imshow(im)

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

입력 인수

모두 축소

입력 영상으로, 숫자형 배열 또는 논리형 배열로 지정됩니다.

예: se = strel('disk',5); marker = imerode(mask,se);

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

마스크 영상으로, 크기 및 데이터형이 marker와 같은 숫자형 배열 또는 논리형 배열로 지정됩니다.

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

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

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

의미

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

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

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

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

데이터형: double | logical

출력 인수

모두 축소

재구성된 영상으로, 입력 영상에 따라 숫자형 배열 또는 논리형 배열로 반환되며 입력 영상과 크기가 동일합니다.

  • 모폴로지 재구성은 imclearborder, imkeepborder, imextendedmax, imextendedmin, imfill, imhmax, imhmin, imimposemin을 비롯한 여러 다른 Image Processing Toolbox™ 함수의 알고리즘 기반입니다.

  • 성능 참고: 이 함수는 더 빠른 실행을 위해 데이터형 logical, uint8, uint16, singledouble에 하드웨어 최적화를 활용할 수 있습니다. 하드웨어 최적화를 사용하려면 markermask가 2차원 영상이어야 하고 conn4 또는 8이어야 합니다.

알고리즘

imreconstruct[1]에 설명된 고속 하이브리드 회색조 재구성 알고리즘을 사용합니다.

참고 문헌

[1] Vincent, L., "Morphological Grayscale Reconstruction in Image Analysis: Applications and Efficient Algorithms," IEEE Transactions on Image Processing, Vol. 2, No. 2, April, 1993, pp. 176-201.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장