急求MATLAB高人帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/23 00:11:05
【作业一,难度系数0.8】 图像变形技术的实现
【算法原理】图像变形技术是指将一副图像A平滑地变换为另一幅图像B的方法,它实质上是将原图像平滑地变换到目标图像的一种数学变换。它是一种非常有效的视觉效果,常被用在教育及娱乐业上。图像变形的思路与技术方案有多种,其中有一个重要分支是Morphing技术。其思想是指定一个变换,该变换把第一幅图像变形成为第二幅图像。它的逆变换把第二幅图像变形为第一幅图像。由变形而生成的图像序列中,前面部分很象第一幅原始图像,中间部分既象第一幅原始图像又象第二幅图像,后面部分则很象第二幅图像。显然,图像变形不但是图像在空间域 上的变换,同时也是在时间域 上的变换。本作业的目的是利用图像变形算法产生图像A逐渐变换到图像B的过程中的每一“祯”图像,并将由变形而生成的图像序列生成一个视频文件(如AVI格式)。
设图像A与B的空间域描述函数为 和 ,其中 表示像素点的位置,而 和 则表示该位置像素点的值(可以是灰度值或RGB色彩值)。则每次变形变换产生的“一祯”图像是A图像和B图像的线性组合: ,其中 表示经过变换的时间。这个公式即是图像变形技术的基础。需要注意的是,不能将像素点值直接相加,而应该将它的RGB分量求出后(灰度图像的RGB分量值是互相相等的),再利用上面的公式分别计算新像素点的RGB分量并合成为新像素点的值。Matlab®中提供了一个名为imlincomb的函数,它可以实现多幅图像的线性组合,该函数的实现中考虑了上述分量的计算问题。它的原形为: ,其中 为组合系数, 为各个被组合的图像数据(各个图像尺寸相同)。组合结果图像为: 。至此,整个图像变形过程可以用伪代码描述为算法1:
算法1:
procedure MorphingImages;
begin
f = LoadImage(A); // 读入图像文件A和B,变形为 A -> B
g = LoadImage(B);
avi = CreateAVIFile; // 创建一个 AVI 动画文件
t = 0.00;
while (t <= 1.00) do
begin
h(x,y) = (1-t) * f(x

a=imread('beach_011.jpg');
b=imread('bird_048.jpg');
mov=avifile('tuxiangbianxing.avi');
t=0.00;
while(t<=1.00)
c=imlincomb(t,a,(1-t),b);
mov=addframe(mov,c);
t=t+0.01;
end;
mov=close(mov);
附言:楼主找两张相同大小的图片取代上面的图片,把图片和M文件放在同一个文件夹里面,就可以了