Matlab中实现两张图片的叠加显示效果
** 在matlab中以50%透明度实现两张图图片的叠加显示,图片的大小可以任意设置,不同大小的图片,较小的图片在整幅图中居中显示。**
1、相同大小图片的叠加显示
matlab代码如下:
%两张尺寸大小相同的图片的叠加
clc; %清除命令代码
clear %清除变量
close all; %关闭所有窗口
m = imread('Lena.jpg');
m1 = imread('scen1.jpg');
result = imadd(0.5*m,m1);
subplot(1, 3, 1);
imshow(m);title('Lena');
subplot(1, 3, 2);
imshow(m1);title('scen1');
subplot(1, 3, 3);
imshow(result);title('result');
运行结果如下所示:
2、不同大小图片的叠加显示
图片尺寸的大小可以通过电脑自带的画图软件进行修改,设计中把背景图片放大作为底图,设计代码如下所示:
clc; %清除命令代码
clear %清除变量
close all; %关闭所有窗口
% 导入图像1,2,显示图像基本信息
im1 = imread('scen.jpg');%大图
im2 = imread('lena.jpg');%小图
% 显示大尺寸的彩色风景图和小尺寸彩色照片的原始图
figure(1)
imshow(im1)
figure(2)
h_im2 = imshow(im2)
% 显示图片文件的详细信息
infoIm1 = imfinfo('scen.jpg')
infoIm2 = imfinfo('Lena.jpg')
% 小尺寸彩色照片在风景图当中的居中处理
[m1,n1,l1] = size(im1);
[m2,n2,l2] = size(im2);
t = zeros(m1,n1,l1);
t = uint8(t);
t((m1/2-m2/2+1):(m1/2+m2/2),(n1/2-n2/2+1):(n1/2+n2/2),:) = im2 ;%做居中处理
C = imadd(0.5*t,im1);%乘以0.5对中间小照片做透明处理
C((m1/2-m2/2+1):(m1/2+m2/2),(n1/2-n2/2+1):(n1/2+n2/2),:) =...
C((m1/2-m2/2+1):(m1/2+m2/2),(n1/2-n2/2+1):(n1/2+n2/2),:)-...
im1((m1/2-m2/2+1):(m1/2+m2/2),(n1/2-n2/2+1):(n1/2+n2/2),:).*0.5; %对pic_1乘以0.5做补偿处理
figure(3)
imshow(C);
运行结果如下所示: