用matlab去除细化后图像边缘的端点
时间: 2023-08-26 18:15:04 浏览: 109
用matlab提取图像边缘
好的,以下是用MATLAB去除细化后图像边缘的端点的代码:
```matlab
% 读取二值化后的图像
bw = imread('binary_image.png');
% 对图像进行细化操作
bw_thin = bwmorph(bw, 'thin', Inf);
% 使用bwmorph函数的'branchpoints'选项找到端点
branchpoints = bwmorph(bw_thin, 'branchpoints');
% 使用bwareaopen函数去除小的断点
min_branch_length = 10;
branchpoints = bwareaopen(branchpoints, min_branch_length);
% 使用bwmorph函数的'endpoints'选项找到端点
endpoints = bwmorph(bw_thin, 'endpoints');
% 使用bwmorph函数的'spur'选项将端点与主干骨架连接
spur_length = 5;
bw_spur = bwmorph(bw_thin, 'spur', spur_length);
% 将端点与主干骨架连接后的图像与端点取反
bw_cleaned = xor(bw_spur, endpoints);
% 显示去除端点后的图像
imshow(bw_cleaned);
```
这段代码首先读取二值化后的图像,然后对图像进行细化操作,得到细化后的主干骨架。接着,使用`bwmorph`函数的`branchpoints`选项找到端点,并使用`bwareaopen`函数去除小的断点。然后,使用`bwmorph`函数的`endpoints`选项找到端点,并使用`bwmorph`函数的`spur`选项将端点与主干骨架连接。最后,将端点与主干骨架连接后的图像与端点取反,得到去除端点后的主干骨架图像。
阅读全文