matlab写一个抠图的代码
时间: 2023-12-01 16:00:39 浏览: 101
以下是使用 Matlab 中的图像处理工具箱实现抠图的示例代码:
```matlab
% 读入原图像
img = imread('input.png');
% 显示原图像
figure, imshow(img), title('Original Image');
% 转换为灰度图像
gray_img = rgb2gray(img);
% 使用 Otsu 阈值法进行二值化处理
level = graythresh(gray_img);
bw_img = imbinarize(gray_img, level);
% 对二值图像进行形态学处理,填充小孔洞
se = strel('disk', 6);
bw_img = imclose(bw_img, se);
% 提取前景对象,生成掩模
mask = bwlabel(bw_img);
mask = repmat(mask, [1, 1, 3]);
mask = uint8(mask == 1);
% 将掩模应用到原图像上,抠出前景对象
result = img .* mask;
% 显示结果
figure, imshow(result), title('Result Image');
```
其中,`imread` 函数用于读入原图像,`rgb2gray` 函数将图像转换为灰度图像,`imbinarize` 函数使用 Otsu 阈值法进行二值化处理,`strel` 函数生成形态学处理的结构元素,`imclose` 函数对二值图像进行形态学处理,`bwlabel` 函数对二值图像进行标签化处理,`repmat` 函数将标签图像扩展为与原图像相同的三通道图像,`uint8` 函数将标签图像转换为 8 位无符号整型,`.*` 运算符将掩模应用到原图像上,抠出前景对象。
阅读全文