matlab二值化后抠图
时间: 2023-10-25 22:32:14 浏览: 150
在MATLAB中进行二值化后的抠图,可以通过以下步骤实现:
1. 首先,读取前景图像和背景图像,并将它们转换为double精度,以便于计算。
2. 使用im2bw函数对前景图像进行二值化处理,将阈值设置为适当的值来得到二值化的图像。
3. 对二值化后的图像进行取反操作,因为背景通常是偏白色的。
4. 使用find函数找到二值化图像中值为1的像素的位置。
5. 将前景图像中值为1的像素块填补到背景图像中对应的位置,实现抠图效果。
6. 最后,显示抠图结果。
以下是一个MATLAB代码示例,实现了二值化后的抠图效果:
```matlab
clear all; clc;
% 读取文件
front=imread('frontground.jpeg');
back=imread('background.jpeg');
% 将图片转化为double精度
front=im2double(front);
% 二值化前景图像
BW_front=im2bw(front,0.8);
% 显示RGB二值化结果
BW_front=imcomplement(BW_front); % 二值化取反,因为背景是偏白色
[a,b]=find(BW_front==1); % 查找interest值
% 抠图:将二值化数值1标记像素块填补到背景中
for i=1:size(a,1)
back(a(i),b(i),1)=front(a(i),b(i),1);%第一通道赋值
back(a(i),b(i),2)=front(a(i),b(i),2);%第二通道赋值
back(a(i),b(i),3)=front(a(i),b(i),3);%第二通道赋值
end
% 显示抠图结果
figure('NumberTitle', 'off', 'Name', '抠图结果');
imshow(back);
title("抠图结果");
```
这段代码可以实现将前景图像中二值化为1的像素块抠取出来,并将其填补到背景图像中,得到抠图的效果。
阅读全文