2026a
# graydist
灰度图像的灰度加权距离变换
函数库: TyImageProcessing
# 语法
T = graydist(I,mask)
T = graydist(I,C,R)
T = graydist(I,ind)
T = graydist(___,method)
# 说明
T = graydist(I,mask) 用于计算灰度图像 I 的灰度加权距离变换。mask 中值为 true 的位置即为种子点位置。
T = graydist(I,C,R) 通过向量 C 和 R 分别指定种子点位置的列坐标和行坐标。示例
T = graydist(I,ind) 通过 ind 指定种子点位置的线性索引。
T = graydist(___,method) 通过 method 指定一种替代的距离度量方法。
# 示例
计算幻方中的最短路径
创建一个幻方矩阵。由 magic 函数生成的矩阵具有行和、列和以及对角线和都相等的特性。该矩阵左上角与右下角之间的最短路径位于对角线上。
using TyImageProcessing
using TyMath
A = Float64.(magic(3))
A =
3×3 Matrix{Float64}:
8.0 1.0 6.0
3.0 5.0 7.0
4.0 9.0 2.0
计算灰度加权距离变换,将该方阵的左上角和右下角指定为种子点位置。
T1 = graydist(A, 1, 1);
T2 = graydist(A, 3, 3);
将这两个变换结果相加,以找出种子点位置之间的最短路径。正如预期的那样,沿着对角线存在一条具有恒定值的最短路径。
T = T1 + T2
T =
3×3 Matrix{Float64}:
10.0 11.0 17.0
13.0 10.0 13.0
17.0 17.0 10.0
# 输入参数
I — 灰度图像数值数组 | 逻辑数组
灰度图像,以数值数组或逻辑数组形式指定。
mask — 二值掩码逻辑数组
用于指定种子点位置的二值掩码,以与 I 大小相同的逻辑数组形式指定。
C — (C,R)列坐标和行坐标正整数
种子点的列坐标和行坐标,以正整数向量的形式指定。坐标值是 I 中有效的 C、R 下标。
R — (C,R)列坐标和行坐标正整数
种子点的列坐标和行坐标,以正整数向量的形式指定。坐标值是 I 中有效的 C、R 下标。
ind — 索引正整数向量
种子点位置的索引,指定为正整数向量。
数据类型: Int | Int64
method — 距离度量"chessboard" (默认) | "cityblock" | "quasi-euclidean"
距离度量,指定为以下选项之一:
| 方法 | 描述 |
|---|---|
| "chessboard" | 在二维空间中,点 (x1,y1) 和点 (x2,y2) 之间的棋盘距离为 max(abs(x1-x2),abs(y1-y2)) |
| "cityblock" | 在二维空间中,点 (x1,y1) 和点 (x2,y2) 之间的街区距离为 abs(x1-x2) + abs(y1-y2) |
| "quasi-euclidean" | 在二维空间中,点 (x1,y1) 和点 (x2,y2) 之间的准欧几里得距离为 ∣x1−x2∣+(√2−1)∣y1−y2∣, ∣x1−x2∣>∣y1−y2∣ (√2−1)∣x1−x2∣+∣y1−y2∣, ∣x1−x2∣<=∣y1−y2∣. |
数据类型: String
# 输出参数
T — 灰度加权距离变换结果数值数组
灰度加权距离变换结果,以与 I 大小相同的数值数组形式返回。如果 I 的输入数值类型为 Float64,则 T 的输出数值类型为 Float64;如果输入为其他任何数值类型,则输出 T 的类型为 Float32。
数据类型: Float32 | Float64