# bwulterode


极限滤波

函数库: TyImageProcessing

# 语法

BW2 = bwulterode(BW)
BW2 = bwulterode(BW,method)
BW2 = bwulterode(___,conn)

# 说明

BW2 = bwulterode(BW) 计算二值图像 BW 的终极腐蚀。BW 的终极腐蚀由其补集的欧氏距离变换的区域最大值组成。示例


BW2 = bwulterode(BW,method) 可以指定距离变换的方法。


BW2 = bwulterode(___,conn) 可以指定像素的连接方式。

# 示例

执行二值图像的最终侵蚀

读取一个二值图像到工作空间,并显示它。

using TyImageProcessing
using TyPlot

originalBW = imread("circles.png");
imshow(originalBW)

对图像执行终极腐蚀操作,并显示结果。

ultimateErosion = bwulterode(originalBW);
figure(), imshow(ultimateErosion)

# 输入参数

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

conn — 像素连通性
4 | 8 | 6 | 18 | 26 | 由 0 和 1 组成的 3×3×...×3 矩阵

像素连通性,指定为下表中的值之一。对于二维图像,默认连通性是 8,对于三维图像,默认连通性是 26。

二维连通

意义
4 如果像素的边缘相互接触,则这些像素具有连通性。如果两个相邻像素都为 on 并在水平或垂直方向上连通,则它们是同一对象的一部分。
当前像素以灰色显示。
8 如果像素的边缘或角相互接触,则这些像素具有连通性。如果两个相邻像素都为 on 并在水平、垂直或对角线方向上连通,则它们是同一对象的一部分。
当前像素以灰色显示。

三维连通(暂不支持)

意义
6 如果像素的面接触,则这些像素具有连通性。如果两个相邻像素都为 on 并以如下方式连通,则它们是同一对象的一部分:
- 在所列方向之一上连通:内、外、左、右、上、下

当前像素是立方体的中心。
18 如果像素的面或边缘接触,则这些像素具有连通性。如果两个相邻像素都为 on 并以如下方式连通,则它们是同一对象的一部分:
- 在所列方向之一上连通:内、外、左、右、上、下
- 在两个方向的组合上连通,如右下或内上

当前像素是立方体的中心。
26 如果像素的面、边缘或角接触,则这些像素具有连通性。如果两个相邻像素都为 on 并以如下方式连通,则它们是同一对象的一部分:
- 在所列方向之一上连通:内、外、左、右、上、下
- 在两个方向的组合上连通,如右下或内上
- 在三个方向的组合上连通,如内右上或内左下

当前像素是立方体的中心。

对于更高的维度,imregionalmin 使用默认值 conndef(ndims(BW),"maximal")。

也可以通过指定由 0 和 1 组成的 3×3×...×3 矩阵,以更通用的方式来定义任意维度的连通性。值为 1 的元素定义相对于 conn 的中心元素的邻域位置。请注意,conn 必须关于其中心元素对称。

数据类型: Int64

# 输出参数

BW2-腐蚀后的图像
逻辑数组

腐蚀后的图像,返回和 BW 相同尺寸大小的逻辑数组。

数据类型: Bool