예제: 유클리드 거리 변환
distform 함수를 사용하여
fg 값을 갖는 픽셀이 전경색 픽셀이라고 가정한 행렬
M의 유클리드 거리 변환을 계산합니다.
이 예제를 사용하는 것에 대한 자세한 내용은
이미지 처리 예제 정보를 참조하십시오.
이미지 행렬
1. 이미지 행렬을 정의하고 distform을 적용합니다.
각 출력 픽셀의 값은 가장 가까운 입력 전경색(값 100) 픽셀까지의 거리입니다.
◦ 입력 전경색 픽셀의 경우 출력 거리는 0입니다.
◦ 수평 및 수직 인접 픽셀의 경우 거리는 1입니다.
◦ 대각선 인접 픽셀의 경우 거리는 2의 제곱근 또는 1.414입니다.
0이 아닌 픽셀 하나만 있는 이미지
1. 0이 아닌 픽셀 하나만 있는 이미지를 정의합니다.
2. 이미지에 distform을 적용합니다.
입력 이미지에서 전경색 픽셀(중심 픽셀)에서 멀어질수록 거리가 단조롭게 증가합니다.
거리 변환은 근사적인 유클리드 거리를 생성합니다. 위 예에서 행렬 위치 (0,1)에 대한 정확한 유클리드 거리 변환 출력은 다음이 되어야 함을 알 수 있습니다.
하지만 예제 출력 이미지에서 이 값은 5.243입니다.
원형 객체의 이미지
1. 원형 이미지를 정의합니다.
2. scale 함수를 사용하여 원의 배율을 변경합니다.
3. WRITEBMP 함수를 사용하여 배율 적용된 원을 파일에 기록합니다.
4. 원에 distform 함수를 적용하고 배율을 변경한 다음 결과를 새 파일에 기록합니다.
5. 두 파일의 이미지를 삽입하고 결과를 비교합니다.
원 내부의 모든 점에서 거리 값이 0이고 원 바깥쪽으로 이동하면 거리 값이 단조롭게 증가하지만 유클리드 거리와 정확하게 일치하지 않고 출력이 방사형으로 대칭이 됩니다.
단일 객체의 두 이진 이미지
1. 이미지를 읽습니다.
2. translate 함수를 사용하여 이미지의 변환된 버전을 생성하고 변환된 이미지를 파일에 기록합니다.
3. 세 파일의 이미지를 삽입하고 결과를 비교합니다.
| | |
(flower.bmp) | (flower_d2.bmp) | (flower_d3.bmp) |
4. distform 함수를 사용하여 D1의 거리 변환을 계산합니다.
5. mask 및
mean 함수를 사용하여 이미지
D2 및
D3으로 거리 변환 이미지를 마스킹하고 전체 이미지의 평균을 계산합니다. 이것은 두 이미지 간의 거리 측정값을 나타냅니다.
D1 및 D1 사이의 거리는 0이고, D1 및 다른 이미지 사이의 거리는 변환 정도에 따라 증가합니다.
6. 하우스도르프 거리를 계산합니다.
하우스도르프 거리는 두 집합의 점 간에서 가장 가까운 거리의 최대값으로 정의됩니다. 두 이미지 간의 하우스도르프 거리를 계산하기 위해서
mean 함수 대신
max 함수를 사용합니다.
두 윤곽선 이미지
두 윤곽선 이미지 간의 거리를 계산하여 윤곽선 검출 함수의 성능을 비교할 수 있습니다. 마스킹한 거리의 평균이나 최대값을 윤곽선 거리 측정값으로 사용합니다.
3. 두 이미지를 삽입하고 시각적으로 비교합니다.
| |
(lena_e1.bmp) | (lena_e2.bmp) |
4. 윤곽선 간의 전체 거리를 계산합니다.