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(│x1 – x2│,│y1 – y2│) |
"cityblock" | 在二维空间中,(x1,y1) 和 (x2,y2) 之间的城市街区距离为 │x1 – x2│ + │y1 – y2│ |
"euclidean" | 在二维空间中,(x1,y1) 和 (x2,y2) 之间的欧几里德距离为 √((x1−x2)^2+(y1−y2)^2) |
"quasi-euclidean" | 在二维空间中,(x1,y1) 和 (x2,y2) 之间的准欧几里德距离为 ∣x1−x2∣+(√2−1)∣y1−y2∣, ∣x1−x2∣>∣y1−y2∣ (√2−1)∣x1−x2∣+∣y1−y2∣, 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