ITK中几种图像距离变换方法

本文介绍了在图像处理中常见的几种距离变换,如切比雪夫、L1/曼哈顿、Danielsson、Maurer和Chamfer距离,以及如何使用SimpleITK库中的函数实现这些变换。着重讲解了SignedDanielsson和FastChamferDistanceImageFilter的应用。
摘要由CSDN通过智能技术生成

几种常见距离

距离变换主要分为欧氏距离变换和非欧氏距离变换。 非欧距离变换包括棋盘距离变换、城市街区距离变换和倒角距离变换。

切比雪夫距离(Chebyshev Distance)也叫棋盘距离:| x1 - x2 | + | y1 - y2 |

L1距离、曼哈顿距离,也叫城市街区距离:max( | x1 - x2 |, | y1 - y2 | )

API

基于ITK 5.4.0文档

SignedDanielssonDistanceMapImageFilter

Danielsson 距离是一种逐步扩展的算法

SignedMaurerDistanceMapImageFilter

Maurer 距离是一种基于队列的算法

ApproximateSignedDistanceMapImageFilter

Chamfer distances(倒角距离),速度较快
衡量两个形状之间的差异性或相似性,常用于特征点匹配、图像分割

DanielssonDistanceMapImageFilter

SignedDanielsson外部的负数变正数

FastChamferDistanceImageFilter

快速倒角变换

IsoContourDistanceImageFilter

计算网格点到等轮廓线的距离

SimpleITK实现

import SimpleITK as sitk
import os

# 加载二值图像
input_image_path = "mask_image.mha"
input_image = sitk.ReadImage(input_image_path)

# distance_map = sitk.SignedMaurerDistanceMap(input_image, insideIsPositive=True, squaredDistance=False, useImageSpacing=True)
# output_image_path = "signedMaurer.mha"
# sitk.WriteImage(distance_map, output_image_path)


# distance_map = sitk.SignedDanielssonDistanceMap(input_image, insideIsPositive=True, squaredDistance=False) # 计算的距离绝对值
# output_image_path = "signedDanielsson.mha"
# sitk.WriteImage(distance_map, output_image_path)

# sitk.ApproximateSignedDistanceMap

distance_map = sitk.DanielssonDistanceMap(input_image)
output_image_path = "Danielsson.mha"
sitk.WriteImage(distance_map, output_image_path)

效果

在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值