山东大学 数字图像处理 实验一
发布时间
阅读量:
阅读量
实验1.1:图像加载、显示
借助图像处理库的力量,在应用程序中实现从文件加载图片,并将其在显示窗口中展示这一功能;采用常用的图片文件格式(.jpg, .png, .bmp, .gif)作为测试对象做初步测试;
Code
%读取一般的图片用imread即可,动态图用后半部分代码实现,原理的逐帧读取,逐帧显示
I=imread('cc.png');
figure;imshow(I)
info = imfinfo('t3.gif');
len = length(info);
for i = 1 : len
[Ii, map] = imread('t3.gif', 'frames', i);
F(:, i) = im2frame(Ii, map);
end
implay(F);
实验1.2:图像合成
现有一张具有4通道特性的透明图像a.png:
从该图像中分离出alpha通道并进行预览;
通过alpha混合技术,将新的背景图片代入到原始图像a.png中;
[I,map,alpha]=imread(filename)即可取得图像的alpha通道,然后imshow(alpha)显示即可。在替换图片背景时,先分别获取原图以及背景图的RGB三通道的值,对alpha进行/255处理,因为获取到的alpha是uint8类型的数据,所以透明部分的值变为了0,不透明以及半透明的变为了1,然后利用这个值对RGB三通道进行混合,既R.*a+(1-a).*back(:,:,1);(其中a为alpha变换后的值,back为背景图的RGB值,这里需要注意的是截取背景图的大小,矩阵乘法需保证维度相同)(前为alpha通道显示,后图为背景混合后的图像)


Code
I=imread('a2.png');
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
[I2,map,alpha]=imread('a2.png');
figure;imshow(alpha)
back=imread('cc.png');
a=alpha/255;
%615与924是为了适配图片大小,因为代码是很久以前写的了,不太规范,但也只是给后来人提供一个样例而已
img(:,:,1)=R.*a+(1-a).*back(1:615,1:924,1);
img(:,:,2)=G.*a+(1-a).*back(1:615,1:924,2);
img(:,:,3)=B.*a+(1-a).*back(1:615,1:924,3);
figure;imshow(img);
figure;imshow(I);
全部评论 (0)
还没有任何评论哟~
