matlab 得到轮廓矩阵后 进行填充,matlab轮廓提取
时间: 2023-08-06 14:22:07 浏览: 91
在MATLAB中,可以使用以下代码来提取图像的轮廓:
```
% 读取图像
img = imread('image.jpg');
% 转换为二值图像
bw = im2bw(img);
% 提取轮廓
B = bwboundaries(bw);
% 显示轮廓
imshow(img);
hold on;
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'r', 'LineWidth', 2);
end
```
其中,`imread`函数用于读取图像,`im2bw`函数将图像转换为二值图像,`bwboundaries`函数用于提取轮廓。提取的轮廓保存在一个`cell`数组中,每个元素表示一个轮廓,其格式为`[x1, y1; x2, y2; ...]`。
要对得到的轮廓进行填充,可以使用`poly2mask`函数将轮廓转换为掩码,然后使用`imfill`函数进行填充。具体代码如下:
```
% 提取轮廓
B = bwboundaries(bw);
% 将轮廓转换为掩码
mask = poly2mask(B{1}(:,2), B{1}(:,1), size(bw,1), size(bw,2));
% 填充掩码
mask_filled = imfill(mask, 'holes');
% 显示填充后的图像
imshow(mask_filled);
```
其中,`poly2mask`函数将轮廓转换为掩码,`imfill`函数用于填充掩码。填充后的图像保存在`mask_filled`中。
阅读全文