MATLAB之图片合成



将两张图片进行合成,先上代码:

img = imread('b1.png');
%R通道
R = double(img(:,:,1));
%G通道
G = double(img(:,:,2));
%B通道
B = double(img(:,:,3));
%Alpha通道
[I,map,Alpha] = imread('b1.png');
%imshow(Alpha);background = imread('b2.png');
%R通道
R1 = double(background(:,:,1));
%G通道
G1 = double(background(:,:,2));
%B通道
B1 = double(background(:,:,3));%计算参数
a = double(Alpha)/255.00;%三通道合成
img2(:,:,1) = uint8(R .* a + (1-a) .* R1);
img2(:,:,2) = uint8(G .* a + (1-a) .* G1);
img2(:,:,3) = uint8(B .* a + (1-a) .* B1);imshow(img2),title('合成的图片');
imwrite(img2,'combine3.png')

合成结果

代码解释

先上一个元老图

  根据上述表达式,就可以得到合成图的步骤,先获取图像的Alpha通道,在图像处理中,Alpha用来衡量一个像素或图像的透明度。在非压缩的32位RGB图像中,每个像素是由四个部分组成:一个Alpha通道和三个颜色分量(R、G和B)。当Alpha值为0时,该像素是完全透明的,而当Alpha值为255时,则该像素是完全不透明。

使用[I,map,Alpha] = imread(‘b1.png’);即可得到。

%Alpha通道
[I,map,Alpha] = imread('b1.png');
imshow(Alpha);
imwrite(Alpha,'Alpha.png')

可得到图像的Alpha通道

再对alpha进行/255处理,即得到参数a,因为获取到的alpha是uint8类型的数据,所以透明部分的值变为了0,不透明以及半透明的变为了1。

%计算参数
a = double(Alpha)/255.00;

下一步,进行图片三通道提取,由于参数是一维的,但是图片却是三维的,因此要取出RGB三通道,对每个通道都进行合成,原图片和背景均要提取出RGB三通道。

img = imread('b1.png');
%R通道
R = double(img(:,:,1));
%G通道
G = double(img(:,:,2));
%B通道
B = double(img(:,:,3));background = imread('b2.png');
%R通道
R1 = double(background(:,:,1));
%G通道
G1 = double(background(:,:,2));
%B通道
B1 = double(background(:,:,3));

最后,进行表达式计算以及三通道混合,既使用R.*a+(1-a).*back(:,:,1);进行合成。

img2(:,:,1) = uint8(R .* a + (1-a) .* R1);
img2(:,:,2) = uint8(G .* a + (1-a) .* G1);
img2(:,:,3) = uint8(B .* a + (1-a) .* B1);

最后的最后。。。。
两张图片大小一定相同!
两张图片大小一定相同!
两张图片大小一定相同!

重要的话说三遍,说多了都是泪,是我太菜了。。。。。

MATLAB小白之图片合成相关推荐

  1. 手机上怎么在线生成gif?1分钟教你手机图片合成gif

    怎样通过手机实现在线制作GIF图片的操作呢?接下来,给大家分享两招gif制作(https://www.gif.cn/)小窍门-[GIF中文网]不需要下载任何软件,小白也能轻松上手.支持原画质导出,图片 ...

  2. 怎么把四个图片合成一个图片?

    怎么把四个图片合成一个图片?关于图片的合成,我们一般都会用到图片处理软件来进行.但是对于一些职场新人来说,他根本不会用一些专业的图片处理软件,那么这个问题对他来说就是非常棘手的.其实遇到这样的问题,新 ...

  3. 如何将jpg图片变成gif?教你一分钟图片合成gif的方法

    Jpg.png.gif格式的图片是我们日常生活中比较常见的三种图片格式.当我们想要将jpg格式的图片变成有趣丰富的gif格式图片时,应该如何完成jpg格式图片转gif制作(https://www.gi ...

  4. 小猿圈web前端简述canvas如何实现二维码和图片合成

    你经常看到活动海报什么的,上都是有各种宣传文案以及二维码形成的,你知道怎么用canvas实现二维码和图片合成,下面小猿圈Linux讲师为你详细介绍一下canvas如何实现二维码和图片合成的. 使用ur ...

  5. Android 图片合成:添加蒙板效果 不规则相框 透明度渐变效果的实现

    Android 图片合成:添加蒙板效果 不规则相框 透明度渐变效果的实现 暂时还未有时间开发这效果,所以先贴出来. 先贴一张效果图,这是一张手机截屏: 左上方的风景图:背景图片 右上方的人物图:前景图 ...

  6. matlab显示的图片,手动保存时四周有白边

    matlab显示的图片,或者用matlab画出来的图片,手动保存时四周有白边. girl = imread('girl.jpg'); imshow(girl); 用File-Save或者Save As ...

  7. matlab图片拼接变成白的,利用matlab实现对图片的拼接

    利用matlab实现对图片的拼接 (图像处理的课堂小作业,简单地手打代码,有问题请联系) 1.效果图 (先看效果图,后思考怎么实现) 原图: 简单拼接: 再进一步操作,加了线: 2.原理 1.matl ...

  8. 图片合成gif_使用在线图片工具处理静态和动态图片的技巧

    图片一般分为两种,一种是静态图片,常用的图片格式有jpg,png等.处理静态图片可用用手机自己带的图片处理工具处理,也能够使用线上的在线作图工具来进行操作,比如找图设计,懒设计,稿定设计等设计类型的网 ...

  9. 图片合成gif_谈谈有哪些好用的制作GIF的方式

    今天咱们谈谈计算机上几种制作 GIF 的方式,而且他们都是免费的,但可能需要你会一点计算机操作技能.本文会简单的介绍一些常用的GIF软件,比较一下功能和上手程度.常见的GIF录制方式大概有这么几种方式 ...

最新文章

  1. Py之any函数【转载】
  2. 大厂的 404 页面都长啥样?最后一个绝了...
  3. 算法提高 身份证排序
  4. 终于有人能把Telnet跟SNMP讲明白了
  5. 对gitShell的使用
  6. golang设置运行CPU数量及sync.Mutex全局互斥锁的使用示例
  7. flink-jdbc-driver和flink-sql-gateway的作用
  8. API的非向后兼容性无论如何通常代表着一种比较差的设计
  9. Nat Biotechnol | 杨弋团队报道RNA光遗传学工具,可时空精确操纵活细胞RNA代谢与功能...
  10. Javascript基于对象三大特征
  11. python以二进制读取的文件显示b'b'_python - Python读取二进制文件并解码 - 堆栈内存溢出...
  12. 最新30款免费好看英文字体下载
  13. 三维电子沙盘数字沙盘M3DGIS无人机倾斜摄影三维建模
  14. 全国哀悼日,黑白网页CSS滤镜代码
  15. python打包deb_python开发将项目打包成deb
  16. 停止精神内耗 每日分享
  17. 简单制作百度注册页面
  18. redis的zadd命令
  19. 华为云桌面--引领移动办公新潮流
  20. TRON、ITRON与T-Engine

热门文章

  1. C#通过函数名字符串执行相应的函数
  2. 同花顺程序交易接口实现类
  3. Android 11 内置原生壁纸!速度来取
  4. 自动化测试、自动化测试框架和云测试相关论文列表
  5. 深圳买学区房要注意事项有哪些
  6. pc端网页实现微信扫码登录
  7. Java面试八股文整理
  8. python rgb转整数,如何在Python中将RGB转换为CMYK和反之亦然?
  9. 存储历史(从古老的绳子记忆到如今)
  10. A-瑞神的序列 B- 消消乐大师-Q老师(M3)