Xiyan
Articles6
Tags6
Categories4
Matlab实现图片叠加

Matlab实现图片叠加

图片叠加:可以用来二次曝光

[toc]

题目如下:

利用MATLAB工具编写一段代码,实现一幅小尺寸彩色照片居中叠加于一幅大尺寸的彩色风景图上,彩色照片保留50%的透明度。

你需要将两张将要叠加的图片,分别命名为e1.jpg和e2.jpg,我使用的两张照片如下:

e1.jpg

e2.jpg

接下来,运行以下代码:

clc,close all,clear all;

% 分别读取两幅彩色图像
% 注意I1要比I2大一些
I1=imread('e1.jpg');
I2=imread('e2.jpg');

% 显示原图1
imshow(I1);

% 显示原图2
figure,imshow(I2);

% 确定加权融合系数
a = 0.5; b = 1-a;

% 两幅不同尺寸的图像叠加
% 分别计算两幅彩色图像的尺寸
s1 = size(I1); 
s2 = size(I2); 

r1 = floor((s1(1)-s2(1))/2)+1;
r2 = floor((s1(1)+s2(1))/2);
c1 = floor((s1(2)-s2(2))/2)+1;
c2 = floor((s1(2)+s2(2))/2);

% 取出I1中与I2尺寸一致的局部图像块,作为临时图像
tmp = I1(r1:r2, c1:c2,:);

% 局部叠加
im_fusion = a*tmp + b*I2;

% 局部叠加结果赋值给I1中对应的位置
I1(r1:r2,c1:c2,:) = im_fusion; 

% 显示结果
figure,imshow(I1);

得出叠加后的照片,用Photoshop裁剪掉未叠加的部分,最终图像如下:

Author:Xiyan
Link:http://xiyan122.github.io/posts/1790024619.html
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可