文档

bwmorph3

二进制卷的形态运算

语法

J = bwmorph3(V,运算)

描述

例子

J= bwmorph3 (V操作应用由字符串或字符向量指定的形态运算操作到二进制体积Vbwmorph3在逻辑卷中返回操作结果J,与输入体积尺寸相同。

例子

全部折叠

加载3-D MRI体积数据并创建二进制体积。使用Volume Viewer应用程序查看体积数据。

负载mristack;BW1 = mristack > 127;

若要删除设置为1且被设置为0的体素包围的体素,请执行“清洁”对容量数据的操作。在确定要删除哪些体素时,“清洁”操作考虑26个相邻的体素。您可以使用Volume Viewer应用程序查看结果。

BW2 = bwmorph3(BW1,“清洁”);

为了进行比较,请执行'大多数的对容量数据的操作。“大多数的操作执行类似于'干净的操作,但仅在目标体素附近超过一半(大多数)的体素被设置为1时才保留体素。当决定保留哪些体素时,大多数的操作还考虑26个相邻的体素。您可以使用Volume Viewer应用程序查看结果。

BW3 = bwmorph3(BW1,“大多数”);

此示例显示了如何支持的每个形态操作万博1manbetxbwmorph3适用于简单卷。

做一个9 × 9 × 3的0长方体,它的中心是一个3 × 3 × 3的1立方体。

Innercube = ones(3,3,3);Cube_center = padarray(innercube,[3 3],0,“两个”
cube_center = cube_center (:: 1) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 cube_center (:,: 2) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 cube_center (:,:, 3) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1100000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

用移除操作关闭像素

将内部立方体的中心体素设置为0使用“删除”操作。此操作设置any的值“上”体素完全被包围“上”体素,“关闭”。

Remove_center = bwmorph3(cube_center,“删除”
remove_center =9x9x3逻辑数组0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

使用填充操作将像素设置为On

将内部立方体的中心体素设置为1使用“填满”操作。此操作设置any的值“关闭”体素完全被包围“上”体素,“上”

Fill_center = bwmorph3(remove_center,“填满”
fill_center =9x9x3逻辑数组0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

使用Clean操作移除未连接的像素

使用“清洁”操作以删除设置为的任何杂散体素1但不连接到卷中的组件。示例通过将第二个平面上的随机体素设置为1来创建一个游离体素,然后使用“清洁”操作将其移除。

Cube_center (2,2,2) = 1
cube_center = cube_center (:: 1) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 cube_center (:,: 2) = 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 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 cube_center (:,:, 3) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1100000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Cube_cleaned = bwmorph3(cube_center,“清洁”
cube_cleaned =9x9x3逻辑数组0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

找到多数

找到大多数的cube_center使用'大多数的操作。只有当体素周围26个连接的邻域中超过一半(大多数)的体素被设置为时,该操作才会保留体素1

Cube_major = bwmorph3(cube_center,“大多数”
cube_major =9x9x3逻辑数组0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

创建一个类似于骨架的形状

为了说明分支点和端点选项,创建另一个小矩阵,这次是线性形状,就像骨架一样。

X1 =眼睛(5);X2 = 0 (5);X2 (3,3) = 1;X3 = x2;Shape = cat(3,x1,x2,x3)
形状=形状(:,:1)= 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1形状(:,:2)= 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形状(:,:,3)= 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

找到终点

方法查找形状的端点“端点”操作。该形状有三个端点,一个在第一个平面对角线的两端,另一个在第三个平面通过中心的直线的末端。

Shape_endpts = bwmorph3(形状,“端点”
shape_endpts =5x5x3逻辑数组1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

寻找分支点

方法查找形状的分支点的分歧点操作。该形状只有一个分支点,即对角线和水平线相交的地方。

Shape_brpts = bwmorph3(形状,的分歧点
shape_brpts =5x5x3逻辑数组0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

输入参数

全部折叠

输入卷,指定为实数、非稀疏、数字或逻辑数组。bwmorph3接受1-D, 2-D或3-D数组。如果指定1-D或2-D输入数组,bwmorph3执行为3-D卷定义的形态操作。如果你想要二维的行为,使用bwmorph代替。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

要执行的形态操作,指定为以下字符向量或字符串标量之一。有关这些操作的示例,请参见形态学运算图解

操作

描述

插图

的分歧点

找到骨架的分支点。分支点是多个分支相交处的体素。

为了找到分支点,必须对图像进行骨架化。要创建骨架化图像,请使用bwskel

“清洁”

删除孤立的体素,将它们设置为0。孤立体素是一个单独的、26连接的体素,被设置为1被设置为的体素包围0

“端点”

找到骨架的终点。端点是分支末端的体素。

注意:为了找到端点,必须对图像进行骨架化。要创建骨架化图像,请使用bwskel

“填满”

填充孤立的内部体素,将它们设置为1.孤立的内部体素是设置为的个体体素0被设置为的体素包围(6连接)1

“大多数”

保持体素设置为1如果在其3 × 3 × 3中的14个或更多的体素(大多数),26个连接的邻域被设置为1;否则,将体素设置为0

看到形态学运算图解

“删除”

删除内部体素,将其设置为0.内部体素是设置为的个体体素1被设置为的体素包围(6连接)1

数据类型:字符|字符串

输出参数

全部折叠

输出卷,作为逻辑数组返回。

提示

  • 若要在3-D体上执行侵蚀或膨胀的形态操作,请使用imerodeimdilate函数,指定构造元素的(3,3,3)

  • 要对3-D卷执行形态学关闭、打开、顶帽过滤或底帽过滤,请使用imcloseimopenimtophat,或imbothat函数,指定构造元素的(3,3,3)

在R2018a中引入

这个话题有用吗?