数字图像处理(四) 彩色图像拼接
2013-12-03 22:50
513 查看
圣诞礼物大作战前奏:拼图
ps的话简单,所以才有人开发了ps。现在使用matlab拼图,我喜欢的人喜欢下列的图,所以直接拿来拼。
bg.jpg
small.jpg
现在,把猪嵌到图片中去。
彩色图像有RGB层,红,绿,蓝。所以到时嵌入需要两张图片的每一层对应后再叠加。
先裁剪麦兜图片。利用
这是二值图像,只有0和1,保存之后为uint8,8位无符号整数类型。
接下来拿到麦兜rgb层的裁剪图片,就是将原图的rgb层与mdb.jpg这个矩阵进行点乘运算后,因为黑色的地方为0,所以相乘后将会去除边界。
同时补全图片,因为要和bg.jpg这个大图片叠加。
与大图片叠加之前,我们要将bg.jpg中准备嵌入的那块置零。不然原本的背景数据叠加上麦兜图片便会失真。
因为保存之后为uint8,要将其转成logical类型,0和1,麦兜的图像为1,取反为零,s为uint8,再转成uint8类型,点乘后乘零的那部分就没有了。
接下来将两个rgb层的图像叠加。
全代码:
还有其余两层,不贴了,最终大功告成。
阿狸看着天空,想:“麦兜,你怎么不用穿内裤的?”。
麦兜:“因为我不知道理想和真谛”。
ps的话简单,所以才有人开发了ps。现在使用matlab拼图,我喜欢的人喜欢下列的图,所以直接拿来拼。
bg.jpg
small.jpg
现在,把猪嵌到图片中去。
彩色图像有RGB层,红,绿,蓝。所以到时嵌入需要两张图片的每一层对应后再叠加。
先裁剪麦兜图片。利用
a = imread('small.jpg'); g = roipoly(f); imwrite(g,'mdb.jpg');roipoly,多边形裁剪图片。裁剪完后mdb.jpg
这是二值图像,只有0和1,保存之后为uint8,8位无符号整数类型。
接下来拿到麦兜rgb层的裁剪图片,就是将原图的rgb层与mdb.jpg这个矩阵进行点乘运算后,因为黑色的地方为0,所以相乘后将会去除边界。
同时补全图片,因为要和bg.jpg这个大图片叠加。
%补全图片剩余的其他空间 拿的是R层 b = a(:,:,1); d = b.*uint8(g); f = [zeros(50,160);g]; f = [f;zeros(430,160)]; f = [f,zeros(600,320)]; f = [zeros(600,320),f];
与大图片叠加之前,我们要将bg.jpg中准备嵌入的那块置零。不然原本的背景数据叠加上麦兜图片便会失真。
s = imread('bg.jpg'); s = s.*uint8(~logical(f));
因为保存之后为uint8,要将其转成logical类型,0和1,麦兜的图像为1,取反为零,s为uint8,再转成uint8类型,点乘后乘零的那部分就没有了。
接下来将两个rgb层的图像叠加。
全代码:
function y = md() %读入插入图像和roipoly的图像 a = imread('small.jpg'); c = imread('mdb.jpg'); %roipoly提取的二值图像 保存之后又变成uint8类型 但是为了提取所需要的图像 需要进行二值图像的转换 c = logical(c); %背景图片的读入 r = imread('bg.jpg'); for i= 1:3 %rgb图层的提取 b = a(:,:,i); d = b.*uint8(c); %补全图片剩余的其他空间 f = [zeros(50,160);d]; f = [f;zeros(430,160)]; f = [f,zeros(600,320)]; f = [zeros(600,320),f]; s = r(:,:,i); s = s.*uint8(~logical(f)); %将rgb三层分别叠加,得到彩色图像 image(:,:,i) = s+f; pig(:,:,i) = f; figure; imshow(s+f); end imshow(image); figure(); imshow(pig); %合成图像的输出 %imwrite(image,'final.jpg'); y =1;
还有其余两层,不贴了,最终大功告成。
阿狸看着天空,想:“麦兜,你怎么不用穿内裤的?”。
麦兜:“因为我不知道理想和真谛”。
相关文章推荐
- 数字图像处理 RGB与HIS彩色空间分割
- 彩色图像边缘检测--求RGB的最大变化率方向(数字图像处理(Digital Image Processing Second Edition)冈萨雷斯)
- 【原】数字图像处理学习之三彩色图像处理
- 数字图像处理之24位真彩色转256色调色边图
- 数字图像处理:3.伪彩色处理
- 系统学习数字图像处理之彩色图像处理
- 冈萨雷斯数字图像处理——彩色图像增强3实例
- 数字图像处理:第十八章 彩色图象处理
- 数字图像处理基础:教你如何区分单色图像、灰度图像、伪彩色图像、真彩色图像
- 数字图像处理——用Java将彩色图像转换为灰度图像
- 数字图像处理之彩色图像的直方图均衡化
- Win8 Metro(C#)数字图像处理--2.41彩色图像密度分割算法
- 彩色数字图像处理基础
- Win8 Metro(C#)数字图像处理--2.60部分彩色保留算法
- 基于数字图像处理的人民币碎片拼接
- Win8Metro(C#)数字图像处理--2.7图像伪彩色
- 数字图像处理 彩色图象处理
- 数字图像处理10--基于特征提取的拼接方法
- 从OpenCV学习数字图像处理
- 系统学习数字图像处理之图像分割