Создание полноэкранного фильма в MATLAB

Итак, я пытаюсь создать фильм на MATLAB, который содержит несколько серых кругов в определенных местах, причем один из кругов в процессе его перехода от черного к белому. Однако я не могу заставить его только записывать изображения по всему экрану с правильным разрешением вместо того, чтобы показывать их в окне рисунка. Вот что у меня есть на данный момент:

h=ones(1080,1920);
trap1=.5*circ(1920,1080,55,532,534,2);
trap2=.5*circ(1920,1080,55,528,798,2);
pcf=circ(1920,1080,18,1520,504,2); %Makes the circles


for ii=1:256
    pcfl=pcf*(ii-1)/255; %Steps through greylevels
    m=h.*(trap1+trap2+pcfl); %Make everything but the circles black    
    hfig=imshow(m); %Display image
    colormap('gray') %This is probably unnecessary
    mov(ii)=getframe(gcf);
end

myVideo = VideoWriter('trapmov.avi');
open(myVideo);
writeVideo(myVideo,mov)
close(myVideo)

Я нашел это и this, которые кажутся мне близкими к тому, что я хочу (особенно второй), но я не знаю достаточно о java, чтобы иметь возможность сделать фильм из первого, а второй не работает, потому что он утверждает, что разрешение изображения не 1920x1080 - я думаю, это потому, что MATLAB масштабирует его до того, как функция имеет шанс ' как бы добраться до него ».

Я мог бы заставить его работать, просто сохраняя изображение с каждой итерации цикла и создавая из него .gif, но я не уверен, как мне заставить его отображать полноэкранный режим, и было бы намного приятнее быть возможность управлять воспроизведением с помощью VLC.

Также есть способы сделать это с обычными графиками:

set(hfig,'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);

но это работает только с объектами, созданными с помощью команд построения, а не image / imshow.

РЕДАКТИРОВАТЬ: ОК, я сдался и просто создал .gif, и он работает в полноэкранном режиме Chrome, но решение этого все равно было бы неплохим, поскольку это кажется довольно полезным, чтобы знать, как это сделать.


person llama    schedule 24.08.2012    source источник
comment
На самом деле, теперь, когда я подумал об этом, проще сделать .avis из фреймов с помощью virtualDub.   -  person llama    schedule 29.08.2012


Ответы (1)


Я бы сделал это с помощью psychotoolbox. Это гораздо более подходящая отправная точка, чем классы фигур в Matlab. Пакет создан для Matlab и поставляется с множеством демонстраций, которые можно легко изменить для создания вашего стимула.

Если вы хотите создать фильм, вы можете взять полноэкранные кадры из Psychtoolbox с помощью

imageArray = Screen('GetImage', wPtr, [0 0 1024 768]);

где wPtr - указатель на созданное вами окно, а вектор - это размеры экрана. Дополнительную информацию об этом можно найти здесь

На случай, если вы проводите поведенческое тестирование или психофизику ... Я бы действительно придерживался Psytoolbox и игнорировал VLC.

person Salain    schedule 24.08.2012