您的位置:首页 > 编程语言 > MATLAB

图像叠加及透明度的调整在matlab下实现

2016-03-05 11:47 2331 查看
clc;clear

%% 导入图像1,2,显示图像基本信息

%pic_1是大尺寸的彩色风景图,pic_2为小尺寸彩色照片

pic_1 = imread('trim.jpg');

pic_2 = imread('钢铁侠.jpg');

%% 显示大尺寸的彩色风景图和小尺寸彩色照片的原始图像

figure(1)

imshow(pic_1)

figure(2)

h_pic_2 = imshow(pic_2)

%% 显示图片文件的详细信息

info_pic_1 = imfinfo('trim.jpg')

info_pic_2 = imfinfo('钢铁侠.jpg')

%% 小尺寸彩色照片在风景图当中的居中处理

[m1,n1,l1] = size(pic_1);

[m2,n2,l2] = size(pic_2);

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),:) = pic_2 ;%做居中处理

C = imadd(0.5*t,pic_1);%乘以0.5对中间小照片做透明处理

%原理:简易Alpha混合算法:首先,要能取得上层与下层颜色的 RGB三基色,

%然后用r,g,b 为最后取得的颜色值;r1,g1,b1是上层的颜色值;r2,g2,b2是下层颜色值

%若Alpha=透明度,则

%当Alpha=50%时,

%  r = r1/2 + r2/2;

%  g = g1/2 + g2/2;

%  b = b1/2 + b2/2;

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),:)-...

pic_1((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);

%%
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: