如何在 MATLAB 中更改带有绿屏背景的图像的背景?

matlabdata analysisprogramming

在本文中,我们将学习如何使用 MATLAB 编程将图像的绿色背景更改为其他背景

将绿屏背景更改为另一个背景的概念涉及使用一种称为"色度键"的技术。该技术可检测图像中的绝对绿色并将其从图像中省略。然后,我们可以将另一幅图像或颜色应用为图像的背景。

算法

在 MATLAB 中,将图像的绿屏背景更改为另一个背景的分步过程如下:

步骤 (1) - 读取具有绿屏背景的输入图像。

步骤 (2) - 读取必须插入到图像中作为绿屏背景的新背景图像。

步骤 (3) - 如果需要,将输入图像转换为 RGB 格式。

步骤 (4) - 从图像中删除绿屏背景。

步骤 (5) - 设置新的背景图像。

步骤 (6) - 显示最终结果图像。

现在,让我们了解这六个MATLAB 编程中的步骤。

示例

% 用于更改图像中绿屏背景的 MATLAB 代码
% 读取带有绿屏背景的输入图像
in_img = imread('https://ak.picdn.net/shutterstock/videos/2322320/thumb/1.jpg');

% 读取新背景图像
bg_img = imread('https://www.tutorialspoint.com/assets/questions/media/14304-1687425323.jpg');

% 将图像转换为 RGB 格式,并使用双精度进行计算
in_img = im2double(in_img);
bg_img = im2double(bg_img);

% 调整新背景图像的大小以匹配输入图像的大小
bg_img = imresize(bg_img, [size(in_img, 1), size(in_img, 2)]);

% 从输入图像中删除绿屏背景
x = 0.65; % 根据图像要求调整值
a = in_img(:, :, 2); % 指定图像的绿色通道
m = a > x;

% 使用新背景图像更改绿屏背景
out_img = in_img;
out_img(repmat(m, [1, 1, 3])) = bg_img(repmat(m, [1, 1, 3]));

% 显示原始图像、背景图像和输出图像
subplot(1, 3, 1); imshow(in_img); title('原始图像​​');
subplot(1, 3, 2); imshow(bg_img); title('新背景图像');
subplot(1, 3, 3); imshow(out_img); title('输出图像');

输出

代码说明

在此 MATLAB 中,我们首先使用"imread"函数读取绿屏输入图像和新的背景图像,并分别将它们存储在变量"in_img"和"bg_img"中。然后,我们使用"im2double"函数将两个图像转换为双精度 RGB 格式,以便更好地进行计算。然后,我们调整背景图像的大小以匹配绿屏图像的大小。

之后,我们从输入图像中删除绿屏背景。为此,我们定义一个阈值"x"来确定我们要从图像中删除的绿色像素,您应该根据您的图像调整此值。

接下来,我们使用公式"in_img(:, :, 2)"提取绿屏图像的绿色通道"a",并创建二进制掩码"m"。在这个二进制掩码中,当绿色通道"a"的值大于阈值"x"时,每个像素的值设置为 1。

之后,我们用背景图像"bg_img"替换"in_img"的绿屏背景。为了执行此替换,我们使用"repmat"函数。然后将结果存储在变量"out_img"中。

最后,我们调用"imshow"函数来显示绿屏图像、背景图像和输出图像。

因此,在本文中,我们解释了如何使用 MATLAB 编码将图像的绿屏背景更改为另一个背景。


相关文章