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