tags:

views:

60

answers:

2

I need to put a background image in a movie created using MATLAB?

+1  A: 

If you have access to MATLAB code that creates movie, you can place an axes with IMAGE or IMSHOW as a background and make axes on the top of it transparent.

Here is a simple example:

im = image; % create image object (default pic)
imax = get(im,'parent'); % get image axes handle
axis ij
set(imax,'position',[0 0 1 1]) % make it to fill the whole figure

ax = axes; % new axes
h = plot(ax,rand(100),'ro'); % initial plot
for i=1:20
    set(h,'ydata',rand(100,1)); % change the data in a loop
    pause(0.1)
end

You can get get better answer if you show your code how you create a movie.

EDIT:

I simplified the code in your answer a little. For example you don't need loops to fill up 3D array. And you don't need to repeat surface function in the loop. Just change zdata property.

Try this code (substitute yourimage.jpg to real file name):

p = randn(128,128,200);
[u,v,w]=size(p);
frm_r=1:128;
frm_c=1:128;

figure; 
im = imshow('yourimage.jpg'); % create and display image object from a file
imax = get(im,'parent'); % get image axes handle
set(imax,'position',[0 0 1 1]) % make it to fill the whole figure

ax = axes('color','none'); % new axes
hsurf = surface(frm_c,frm_r,p(:,:,1),'EdgeColor','none','Parent',ax); 
colorbar; 
xlim([1 u])
ylim([1 v])

j=1; 
for t=1:w
    set(hsurf,'zdata',p(:,:,t))
    F(j) = getframe; 
    j=j+1; 
end
movie(F,1,50)
yuk
A: 

Hi I have posted below an example code of how I am generating a movie in Matlab. I need to add a background image to this movie. Thanks for your help.

for i=1:128 for j=1:128 p(i,j,:)=randn(1,200); end end [u,v,w]=size(p);

frm_r=1:128;
frm_c=1:128;

figure; j=1; for t=1:w
surface(frm_c,frm_r,p(:,:,t),'EdgeColor','none'); pause(0.1) colorbar; F(j) = getframe; j=j+1; end movie(F,1,50)

Anuj
Learn how to format your code.
yuk

related questions