matlab将两张图片融合,中间部分仅仅显示某一张图片
时间: 2023-10-08 15:11:02 浏览: 211
要将两张图片融合,并且只在中心部分显示其中的一张图片,可以使用 MATLAB 中的矩阵运算和逻辑运算。
以下是一个简单的示例代码,以将两张图片水平拼接并只显示左侧图片的中心部分为例:
```matlab
% 读取图片
img1 = imread('example1.jpg');
img2 = imread('example2.jpg');
% 获取图片大小
[height, width, ~] = size(img1);
% 计算拼接后的图片大小
new_width = width * 2;
new_height = height;
% 创建新的图片矩阵
new_img = uint8(zeros(new_height, new_width, 3));
% 将两张图片拼接到新的图片矩阵上
new_img(:, 1:width, :) = img1;
new_img(:, width+1:end, :) = img2;
% 计算中心部分的位置
center_x = floor(width / 2);
center_y = floor(height / 2);
center_width = floor(width / 4);
center_height = floor(height / 4);
% 创建逻辑矩阵,表示中心部分的位置
mask = false(height, width);
mask(center_y:center_y+center_height, center_x:center_x+center_width) = true;
% 将左侧图片中心部分的像素复制到右侧图片上
new_img(mask, width+1:end, :) = img1(mask, 1:width, :);
% 显示融合后的图片
imshow(new_img);
```
在上述示例中,我们首先读取了两张图片,然后将它们水平拼接到一个新的图片矩阵上。接着,我们计算出左侧图片中心部分的位置,并创建了一个逻辑矩阵 `mask` 来表示这个位置。最后,我们将左侧图片中心部分的像素复制到右侧图片上,即将 `mask` 中为真的像素复制到 `new_img` 中。最终,我们使用 `imshow` 函数显示融合后的图片。
你可以根据需要修改中心部分的位置和大小,以及融合的方式,来适应你的图片。
阅读全文