*デモ用ムービーを作る
gratingのapperance、reversal、写真のappearanceなんかのデモムービーを作成します。
もちろん写真とかは適当な場所に置いておく必要があります。
ムービーファイルはaviででかいです。500mbとかもっと大きくなるかも知れません。圧縮の方法とか知らないもので。
いろいろマジックナンバーを含んでます。すいません。
以下のスクリプトを「なんとか.m」のテキストで保存してmatlabで実行させましょう
%%デモ用ムービーを作るスクリプト
%%RG apperance%%%%%%%%%%%%%
imgRGgrating=double(ones(360,480));%imgのサイズ
imgRGgrating(:,:,2)=imgRGgrating*0.9;
imgRGgrating(:,:,3)=double(zeros(360,480));
imgRGblank=imgRGgrating;
for ii=1:360
for jj=1:480
dist=((ii-180)^2+(jj-240)^2)^0.5;
imgRGgrating(ii,jj,1)=(1+sin(2*pi*jj/12))/2*0.7+0.3;
imgRGgrating(ii,jj,2)=(1-sin(2*pi*jj/12))/2*0.7+0.3;
if dist>=150
imgRGgrating(ii,jj,1)=1;
imgRGgrating(ii,jj,2)=0.9;
end
end
end
%%imgの確認
subplot(1,2,1);imshow(imgRGgrating);
subplot(1,2,2);imshow(imgRGblank);
%%フレームの作成
%%fps=15?か不明
idxFr=1;
for jj=1:10
for ii=1:36
if ii >=11 && ii <=16
fr(idxFr)=im2frame(imgRGgrating);
else
fr(idxFr)=im2frame(imgRGblank);
end
idxFr=idxFr+1;
end
end
movie2avi(fr,'RgGrating.avi','fps',30,'compression','none','quality',100,'keyframe',2);
%%BW reversalのムービー
%%gratingの作成
imgBWgrating=double(ones(360,480))*0.5;
imgBWgrating(:,:,2)=imgBWgrating;
imgBWgrating(:,:,3)=imgBWgrating(:,:,1);
imgBWblank=imgBWgrating;
imgBRgratingRev=imgBWgrating;
for ii=1:360
for jj=1:480
dist=((ii-180)^2+(jj-240)^2)^0.5;
imgBWgrating(ii,jj,1)=(1+sin(2*pi*jj/24))/2*0.7+0.3;
imgBWgrating(ii,jj,2)=imgBWgrating(ii,jj,1);
imgBWgrating(ii,jj,3)=imgBWgrating(ii,jj,1);
imgBWgratingRev(ii,jj,1)=(1-sin(2*pi*jj/24))/2*0.7+0.3;
imgBWgratingRev(ii,jj,2)=imgBWgratingRev(ii,jj,1);
imgBWgratingRev(ii,jj,3)=imgBWgratingRev(ii,jj,1);
if dist>=150
imgBWgrating(ii,jj,1)=0.5;
imgBWgrating(ii,jj,2)=0.5;
imgBWgrating(ii,jj,3)=0.5;
imgBWgratingRev(ii,jj,1)=0.5;
imgBWgratingRev(ii,jj,2)=0.5;
imgBWgratingRev(ii,jj,3)=0.5;
end
end
end
%%imgの確認
figure;
subplot(2,2,1);imshow(imgBWgrating);
subplot(2,2,2);imshow(imgBWblank);
subplot(2,2,3);imshow(imgBWgratingRev);
%%フレームの生成
clear fr;
idxFr=1;
for jj=1:10
for ii=1:48
if (ii>=9 && ii<=40)
if mod(ii,2)==0
fr(idxFr)=im2frame(imgBWgrating);
else
fr(idxFr)=im2frame(imgBWgratingRev);
end
else
fr(idxFr)=im2frame(imgBWblank);
end
idxFr=idxFr+1;
end
end
movie2avi(fr,'BwGrating.avi','fps',16,'compression','none','quality',100,'keyframe',2);
%%face appearance
clear;
sDir='D:\Users\ogata_2\Desktop\刺激動画\face';
strFnames=dir([sDir,'\*.bmp']);
%%フレームの作成
%%fps=15?か不明
idxFr=1;
for kk=1:10
vecImgOrder=randperm(length(strFnames));
for jj=1:length(strFnames)
for ii=1:13
matFace=double(imread([sDir,'\',strFnames(vecImgOrder(jj)).name]))/255;
matFaceStretch=imadjust(matFace,[0.04 0.4], [0 1]);
for kk=1:3
matFaceStretch3(:,:,kk)=matFaceStretch;
end
nBackgroundLevel=matFaceStretch(1,1);
matFaceBlank=ones(size(matFaceStretch))*nBackgroundLevel;
for kk=1:3
matFaceBlank3(:,:,kk)=matFaceBlank;
end
%subplot(1,2,1);imshow(matFaceStretch);
%subplot(1,2,2);imshow(matFaceBlank);
if ii >=4 && ii <=6
fr(idxFr)=im2frame(matFaceStretch3);
else
fr(idxFr)=im2frame(matFaceBlank3);
end
idxFr=idxFr+1;
end
end
end
movie2avi(fr,'FaceAppearance.avi','fps',10,'compression','none','quality',100,'keyframe',2);
%%Word appearance
clear;
sDir='D:\Users\ogata_2\Desktop\刺激動画\word';
strFnames=dir([sDir,'\*.bmp']);
%繰り返すならここから下
idxFr=1;
for kk=i:4
vecImgOrder=randperm(length(strFnames));
%%フレームの作成
for jj=1:length(strFnames)
for ii=1:20
matWordOrig=double(imread([sDir,'\',strFnames(vecImgOrder(jj)).name]))/255;
matWord=matWordOrig;%サイズを変えるならここで
matWordStretch=imadjust(matWord,[0.04 0.4], [0 1]);
for kk=1:3
matWordStretch3(:,:,kk)=matWordStretch;
end
nBackgroundLevel=matWordStretch(1,1);
matWordBlank=ones(size(matWordStretch))*nBackgroundLevel;
for kk=1:3
matWordBlank3(:,:,kk)=matWordBlank;
end
%subplot(1,2,1);imshow(matFaceStretch);
%subplot(1,2,2);imshow(matFaceBlank);
if ii >=4 && ii <=11
fr(idxFr)=im2frame(matWordStretch3);
else
fr(idxFr)=im2frame(matWordBlank3);
end
idxFr=idxFr+1;
end
end
end
movie2avi(fr,'WordAppearance.avi','fps',10,'compression','none','quality',100,'keyframe',2);