Main Content

imhmax

H-maxima 변환을 사용하여 영상에서 국부 최댓값 억제

설명

예제

J = imhmax(I,H)는 H-maxima 변환을 사용하여 회색조 영상 I에서 국부 최댓값을 억제합니다. H-maxima 변환은 모든 국부 최댓값의 높이를 최대 H만큼 줄입니다. 결과적으로 이 변환은 높이가 H보다 작은 국부 최댓값을 완전히 억제합니다. 국부 최댓값은 동일한 명암 값 t를 갖는 연결 픽셀로, 그 주변 픽셀은 t보다 작은 명암 값을 갖습니다.

J = imhmax(I,H,conn)I에서 국부 최댓값을 식별하는 데 사용되는 연결성 값을 추가로 지정합니다.

예제

모두 축소

10×10 샘플 영상을 만듭니다. 두 개의 국부 최댓값을 추가합니다. 각 국부 최댓값은 연결 픽셀들의 영역으로 이루어져 있으며 그 주변을 더 낮은 명암 값의 픽셀들이 둘러싸고 있습니다.

a = 10*ones(10,10);
a(2:4,2:4) = 13;  
a(6:8,6:8) = 18;

다음 영상은 픽셀 값들의 회색조 표현입니다. 각 최댓값의 높이는 주변 픽셀 값에 따라 정해집니다.

Grayscale representation of the original image, with callouts labeling the height of the maxima as 3 and 8.

국부 최댓값의 높이를 최대 4만큼 줄이는 H-maxima 변환을 적용합니다.

b = imhmax(a,4);

다음 영상은 변환된 영상의 회색조 표현입니다. 이 변환은 두 최댓값 중 하나를 완전히 억제합니다. 그리고 높이가 더 큰 최댓값은 부분적으로 억제하여, 이 최댓값에 해당하는 픽셀의 명암 값에서 4를 뺍니다.

Grayscale representation of the transformed image.

크기가 작은 국부 최댓값을 억제함으로써 영상에서 가장 밝은 피크를 식별할 수 있습니다.

눈송이의 회색조 영상을 작업 공간으로 읽어 들인 후 이를 표시합니다.

I = imread("snowflakes.png");
imshow(I,InitialMagnification=200)

영상에서 국부 최댓값을 구합니다.

regmax = imregionalmax(I);

국부 최댓값 픽셀의 마스크를 원본 영상에 겹쳐지게 표시합니다. 국부 최댓값이 눈송이 부분보다는 명암 변동이 얕은 부분에 대응합니다.

overlay = imoverlay(I,regmax,"green");
imshow(overlay,InitialMagnification=200)

H-maxima 변환을 적용하여 얕은 명암 피크를 제거합니다. 필터링된 영상을 표시합니다.

h = 75;
B = imhmax(I,h);
imshow(B,InitialMagnification=200)

필터링된 영상의 국부 최댓값을 구합니다. 최댓값의 마스크를 원본 영상에 겹쳐지게 표시합니다.

regmaxfilt = imregionalmax(B);
overlayfilt = imoverlay(I,regmaxfilt,"green");
imshow(overlayfilt,InitialMagnification=200)

참고로, imextendedmax 함수를 사용하면 H-maxima 변환을 적용한 다음 국부 최댓값을 계산하는 작업까지 한 번에 처리할 수 있습니다.

입력 인수

모두 축소

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

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

H-maxima 변환으로, 음이 아닌 스칼라로 지정됩니다.

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

픽셀 연결성으로, 다음 표에 있는 값 중 하나로 지정됩니다. 디폴트 연결성은 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

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

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

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

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

출력 인수

모두 축소

변환된 영상으로, I와 크기 및 클래스가 같은 숫자형 배열로 반환됩니다.

참고 문헌

[1] Soille, P. Morphological Image Analysis: Principles and Applications. Springer-Verlag, 1999, pp. 170-171.

확장 기능

버전 내역

R2006a 이전에 개발됨