matlab中图像轮廓变细,Matlab中,用bwmorph函数提取二进制图像的轮廓
时间: 2024-05-07 15:22:58 浏览: 64
用MATLAB实现图像轮廓提取的方法和效果(MATLAB _图像_效果_轮廓
5星 · 资源好评率100%
可以使用 bwmorph 函数中的 'thin' 选项来将二进制图像的轮廓变细。具体步骤如下:
1. 读入二进制图像:
```matlab
img = imread('binary_image.png');
```
2. 提取图像的轮廓:
```matlab
boundary = bwboundaries(img);
```
3. 将图像轮廓变细:
```matlab
thin_boundary = bwmorph(boundary{1}, 'thin', Inf);
```
其中,第一个参数是二进制图像的轮廓,第二个参数是选项,'thin' 表示将轮廓变细,第三个参数 Inf 表示进行无限次迭代,直到轮廓不再变化为止。
4. 将变细后的轮廓绘制在原图像上:
```matlab
figure;
imshow(img);
hold on;
plot(thin_boundary(:,2), thin_boundary(:,1), 'r', 'LineWidth', 2);
```
其中,第一行代码显示原图像,第二行代码保持显示状态,第三行代码绘制变细后的轮廓。注意,变细后的轮廓坐标需要从 thin_boundary 中提取出来,第一列是行坐标,第二列是列坐标。
完整代码如下:
```matlab
img = imread('binary_image.png');
boundary = bwboundaries(img);
thin_boundary = bwmorph(boundary{1}, 'thin', Inf);
figure;
imshow(img);
hold on;
plot(thin_boundary(:,2), thin_boundary(:,1), 'r', 'LineWidth', 2);
```
阅读全文