MATLAB 如何更改带有绿幕背景的图像的背景
在本文中,我们学习如何使用MATLAB编程将图像的绿色背景更改为其他背景。
更改绿幕背景到另一个背景的概念涉及一种称为“色度键”的技术。该技术检测图像中的绝对绿色并将其从图像中删除。然后,我们可以将另一个图像或颜色应用为图像的背景。
步骤
以下是使用MATLAB更改图像的绿幕背景为另一个背景的逐步过程:
第1步 - 读取带有绿幕背景的输入图像。
第2步 - 读取新的背景图像,该图像将在绿幕的位置作为背景插入到图像中。
第3步 - 将输入图像转换为RGB格式,如果需要的话。
第4步 - 从图像中移除绿幕背景。
第5步 - 设置新的背景图像。
第6步 - 显示最终结果图像。
现在,让我们了解在MATLAB编程中实现和执行这六个步骤的过程。
示例
% MATLAB Code for changing green screen background in an image
% Read the input image with green screen background
in_img = imread('https://ak.picdn.net/shutterstock/videos/2322320/thumb/1.jpg');
% Read the new background image
bg_img = imread('https://www.tutorialspoint.com/assets/questions/media/14304-1687425323.jpg');
% Convert the images into the RGB format with double precision for calculations
in_img = im2double(in_img);
bg_img = im2double(bg_img);
% Resize the new background image to match the size of the input image
bg_img = imresize(bg_img, [size(in_img, 1), size(in_img, 2)]);
% Remove the green screen background from the input image
x = 0.65; % Adjust the value based on your image’s requirements
a = in_img(:, :, 2); % Specify the green channel of the image
m = a > x;
% Change the green screen background with the new background image
out_img = in_img;
out_img(repmat(m, [1, 1, 3])) = bg_img(repmat(m, [1, 1, 3]));
% Display the original image, background image, and the output image
subplot(1, 3, 1); imshow(in_img); title('Original Image');
subplot(1, 3, 2); imshow(bg_img); title('New Background Image');
subplot(1, 3, 3); imshow(out_img); title('Output Image');
输出
代码解释
在这个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编码将图像的绿屏背景更改为另一个背景。