bwskel
文章目录
- Syntax
- Description
- Examples
- Tips
将所有对象缩小为2-D二进制图像或3-D二进制体积中的线
Syntax
B = bwskel(A)
B = bwskel(V)
B = bwskel(___,'MinBranchLength',N)
Description
B = bwskel(A)将二维二进制图像A中的所有对象缩小为1像素宽的曲线,而无需更改图像的基本结构。
这个过程称为骨架化,它在保留对象的拓扑和欧拉数(也称为欧拉特征)的同时提取中心线。B = bwskel(V)返回3-D二进制体积的骨架。B = bwskel(___,'MinBranchLength',N)指定骨架的最小分支长度N。bwskel删除(修剪)所有短于指定长度的分支。 bwskel使用2-D的8连通性和3-D的26连通性将长度计算为分支中的像素数。
Examples
骨架化二维灰度图像
clear all
close all
clc
I = imread('threads.png');
imshow(I)
%骨架化需要二进制图像,其中前景像素为1(白色),背景为0(黑色)。
%为了使原始图像适合于骨架化,对图像进行反转,以使对象变亮而背景变暗。 然后,将结果二值化。
Icomplement = imcomplement(I);
BW = imbinarize(Icomplement);
imshow(BW)
%使用bwskel执行二进制图像的骨架化
out = bwskel(BW);
%通过使用labeloverlay函数在原始图像上显示骨架。 骨架在暗螺纹上显示为1像素宽的蓝线。
imshow(labeloverlay(I,out,'Transparency',0))
%修剪出现在骨骼上的小刺刺并查看结果。 从图像中心附近的线程修剪一个短分支。
out2 = bwskel(BW,'MinBranchLength',15);
imshow(labeloverlay(I,out2,'Transparency',0))




骨架化二进制图像
clear all
close all
clc
BW1 = imread('circbw.tif');
%使用bwskel函数骨架化图像中的对象。
BW2 = bwskel(BW1);
%并排查看原始图像和框架化图像。
montage({BW1,BW2},'BackgroundColor','blue','BorderSize',5)

骨架化3D体
clear all
close all
clc
load spiralVol.mat;
volshow(spiralVol);
%将spiralVol数据集转换为bwskel函数所需的二进制格式。
spiralVolLogical = imbinarize(spiralVol);
%骨架化数据集中的螺旋形状。 用volshow显示骨架化的体积。
spiralVolSkel = bwskel(spiralVolLogical);


Tips
虽然bwskel和bwmorph都可以将2D图像骨架化,但是使用bwmorph可以获得的结果与使用bwskel时可获得不同的结果。 因为它们使用不同的算法,所以bwskel函数对2D图像使用4连接。 bwmorph使用8连接。
bwskel假定二进制图像中的前景对象是白色的(逻辑上为真)。 如果图像具有白色背景和黑色物体,则使用图像的补码作为bwskel的输入。 可以使用imcomplement.来计算补数。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
