2026a

# bwdist


二值图像的距离变换

函数库: TyImageProcessing

# 语法

D, = bwdist(BW)
D,idx = bwdist(BW)
D,idx = bwdist(BW,method)

# 说明

D, = bwdist(BW) 计算二值图像 BW 的欧几里德距离变换。对于 BW 中的每个像素,距离变换会指定一个数值,该数值表示该像素与 BW 中最近的非零像素之间的距离。


D,idx = bwdist(BW) 还以索引数组 idx 形式计算最近像素图。idx 的每个元素都包含 BW 的最近非零像素的线性索引。最近像素图也称为特征图、要素变换或最近邻变换。


D,idx = bwdist(BW,method) 使用 method 指定的替代距离度量来计算距离变换。

# 示例

计算欧几里德距离变换

此示例说明如何计算二值图像的欧几里德距离变换,以及图像的最近像素图。

创建二值图像。

using TyImageProcessing

bw = zeros(5, 5);
bw[2, 2] = 1;
bw[4, 4] = 1
bw = 
5×5 Matrix{Float64}:
 0.0  0.0  0.0  0.0  0.0
 0.0  1.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  1.0  0.0
 0.0  0.0  0.0  0.0  0.0

计算距离变换。

D, IDX = bwdist(bw)
D = 
5×5 Matrix{Float32}:
 1.41421  1.0      1.41421  2.23607  3.16228
 1.0      0.0      1.0      2.0      2.23607
 1.41421  1.0      1.41421  1.0      1.41421
 2.23607  2.0      1.0      0.0      1.0
 3.16228  2.23607  1.41421  1.0      1.41421
IDX = 
5×5 Matrix{UInt32}:
 0x00000007  0x00000007  0x00000007  0x00000007  0x00000007
 0x00000007  0x00000007  0x00000007  0x00000007  0x00000013
 0x00000007  0x00000007  0x00000007  0x00000013  0x00000013
 0x00000007  0x00000007  0x00000013  0x00000013  0x00000013
 0x00000007  0x00000013  0x00000013  0x00000013  0x00000013

在最近邻矩阵 IDX 中,值 7 和 19 使用线性矩阵索引表示非零元素的位置。如果像素包含 7,则它最近的非零邻点位于线性位置 7。

# 输入参数

BW — 二值图像
数值数组 | 逻辑数组

二值图像,指定为二维的数值或逻辑数组。对于数值输入,任何非零像素都被视为 1 (true)。

数据类型: Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64 | Bool

method — 距离度量
"euclidean" (默认) | "chessboard" | "cityblock" | "quasi-euclidean"

距离度量,指定为下列值之一。

方法 描述
"chessboard" 在二维中,(x1,y1) 和 (x2,y2) 之间的棋盘距离为
max(│x1x2│,│y1y2│)
"cityblock" 在二维空间中,(x1,y1) 和 (x2,y2) 之间的城市街区距离为
x1x2│ + │y1 – y2│
"euclidean" 在二维空间中,(x1,y1) 和 (x2,y2) 之间的欧几里德距离为
√((x1x2)^2+(y1y2)^2)
"quasi-euclidean" 在二维空间中,(x1,y1) 和 (x2,y2) 之间的准欧几里德距离为
x1x2∣+(√2−1)∣y1y2∣, ∣x1x2∣>∣y1y2
(√2−1)∣x1x2∣+∣y1y2∣, otherwise

数据类型: String

# 输出参数

D — 距离数组
数值数组

距离,以与 BW 大小相同的数值数组形式返回。每个元素的值是该像素与 BW 中最近的非零像素之间的距离,由距离度量 method 定义。

数据类型: Float32

idx — 索引数组
数值数组

索引数组,以与 BW 大小相同的数值数组形式返回。idx 的每个元素都包含 BW 的最近非零像素的线性索引。idx 的类取决于输入图像中的元素数,并按如下方式确定。

范围
'UInt32' length(BW) <= 2^32 − 1
'UInt64' length(BW) >= 2^32

数据类型: Int | Int64