47
Psychtoolbox 入入 入入 入入入入入入入 () 入入入入入入 2013 入 入入入

Psychtoolbox 入門

Embed Size (px)

DESCRIPTION

Psychtoolbox 入門. 草野 勉 (東京海洋大学). このチュートリアルについて. 対象とする方 授業等でプログラム言語を学習する機会がなく、いままで PowerPoint などで実験をして いた 方々 よくご存知の方には、 適宜 、 情報の補足・修正をして いただける と幸いです。。 ねらい とにかく実験のためのプログラミングの敷居が低く感じられること. 細かい話は。。. Web で公開 する予定なので、記録のためのメモをとって頂く必要はありません。 - PowerPoint PPT Presentation

Citation preview

Psychtoolbox入門

草野 勉(東京海洋大学)

日本視覚学会 2013 年夏季大会

このチュートリアルについて• 対象とする方–授業等でプログラム言語を学習する機会がなく、いままで PowerPointなどで実験をしていた方々

–よくご存知の方には、適宜、情報の補足・修正をしていただけると幸いです。。

• ねらい–とにかく実験のためのプログラミングの敷居が低く感じられること

日本視覚学会 2013 年夏季大会

細かい話は。。• Webで公開する予定なので、記録のためのメモをとって頂く必要はありません。

• ウェブサイトが検索に引っかからないことがあるので、 Facebookで探してください。登録せずとも URLが見られるようにしますので。。

日本視覚学会 2013 年夏季大会

今日の話題• 実験のためのプログラム:選択肢

• Psychtoolboxによる実験プログラム–簡単なプログラムと、関連するサンプルコード• 刺激提示、反応取得・記録

–さまざまな機能の紹介–インストールなど

日本視覚学会 2013 年夏季大会

実験のためのプログラム:選択肢(はじめに )

• 実験用のソフトウェア– SuperLab, E-Prime, Experiment Builderなど

• プログラミング言語のライブラリとして–ライブラリ:プログラミングの際に再利用可能なプログラムの集まり

日本視覚学会 2013 年夏季大会

これから、複数の OSで同様に使える(クロス・プラットフォームの)視覚実験用のライブラリの例を紹介します。

実験のためのプログラム:選択肢(ライブラリの一例です )

• PsychoPy–プログラミング言語 Pythonがベース–使いやすいビルダー

– YouTube上でのチュートリアル• http://www.youtube.com/watch?v=VV6qhuQgsiI

–日本語解説• 小川洋和先生(関西学院大学)• 十河宏行先生(愛媛大学)

日本視覚学会 2013 年夏季大会

実験のためのプログラム:選択肢(ライブラリの一例です )

• Psychlopes– C++のライブラリ–日本発(東大心理佐藤研の細川研知さん)• 分からないことは聞きやすいかも。

–教育的なサンプルコードを多数用意

日本視覚学会 2013 年夏季大会

実験のためのプログラム:選択肢(その他にも )

日本視覚学会 2013 年夏季大会

• Vision Scienceのサイト(ここやここ)• 木村英司先生(千葉大)のサイト

実験のためのプログラム:選択肢(今回紹介するもの )

• Psychophysics Toolbox (Psychtoolbox)– MATLABと GNU Octaveのライブラリ• 習得が容易(と言われている)

–教育的なサンプルコードが充実–利用者数が多い(と思う)。フォーラムの充実

–無料で導入可能

日本視覚学会 2013 年夏季大会

Psychtoolboxの情報源• 検索すると日本語の解説もちらほら• 日本語で得られる貴重な情報源

日本視覚学会 2013 年夏季大会

簡単なプログラム

日本視覚学会 2013 年夏季大会

ねらい• 簡単なプログラムを例に、基本的な

Psychtoolboxの機能を紹介。

• 付属のサンプルコードの中から、関連するものを紹介。それらを活用できるようにする。

日本視覚学会 2013 年夏季大会

「簡単なプログラム」の例• 画面左上に 200 x 200 px の円を表示• クリックで表示終了

window = Screen('OpenWindow',0,0);Screen('FillOval',window,255,[0,0,200,200]);Screen('Flip',window);GetClicks;Screen('CloseAll');

日本視覚学会 2013 年夏季大会

サンプルについて• PsychDemosフォルダ( Psychtoolbox直下)

• それ以外の場所にもサンプルは存在– Bits++関連は Psychtoolbox > PsychHardware >

BitsPlusToolbox > BitsPlusDemos

• Web上にも– Psychtoolboxユーザーのフォーラムなど

日本視覚学会 2013 年夏季大会

Psychtoolboxのフォーラム

日本視覚学会 2013 年夏季大会

「簡単です」の例• 画面左上に 200 x 200 px の円を表示• クリックで表示終了

window = Screen('OpenWindow',0,0);Screen('FillOval',window,255,[0,0,200,200]);Screen('Flip',window);GetClicks;Screen('CloseAll');

日本視覚学会 2013 年夏季大会

例 1

「簡単です」という例• 画面左上に 200 x 200 px の円を表示• クリックで表示終了

window = Screen('OpenWindow',0,0);Screen('FillOval',window,255,[0,0,200,200]);Screen('Flip',window);GetClicks;Screen('CloseAll');

日本視覚学会 2013 年夏季大会

全画面ウィンドウを作成

例 1

「簡単です」という例• 画面左上に 200 x 200 px の円を表示• クリックで表示終了

window = Screen('OpenWindow',0,0);Screen('FillOval',window,255,[0,0,200,200]);Screen('Flip',window);GetClicks;Screen('CloseAll');

日本視覚学会 2013 年夏季大会

円を描画

例 1

「簡単です」という例• 画面左上に 200 x 200 px の円を表示• クリックで表示終了

window = Screen('OpenWindow',0,0);Screen('FillOval',window,255,[0,0,200,200]);Screen('Flip',window);GetClicks;Screen('CloseAll');

日本視覚学会 2013 年夏季大会

描いた内容を表示

例 1

「簡単です」という例• 画面左上に 200 x 200 px の円を表示• クリックで表示終了

window = Screen('OpenWindow',0,0);Screen('FillOval',window,255,[0,0,200,200]);Screen('Flip',window);GetClicks;Screen('CloseAll');

日本視覚学会 2013 年夏季大会

ウィンドウを閉じる

クリックを待つ

例 1

ちなみに、コメントは“ %”で(コメントアウトにもよく使われる)

% 全画面ウィンドウ作成window = Screen('OpenWindow',0,0); % 画面は黒% 円を描画Screen('FillOval',window,255,[0,0,200,200]);% 描画内容を表示Screen('Flip',window);GetClicks; % クリックを待つScreen('CloseAll'); % 全画面表示終了

日本視覚学会 2013 年夏季大会

例 1

文章の区切りと改行• 文末のセミコロン (;)は、戻り値をコマンドウィンドウに表示させないようにするためのもの。

• 改行、セミコロン、カンマで 1 文の区切り– tic, pause(1),toc

日本視覚学会 2013 年夏季大会

例 1

Screen関数のサブコマンド(1)

• 画像の表示に関する様々な機能を、 1つ目の引数である「サブコマンド」によって指定する。

• 例: window = Screen('OpenWindow',0,0);

日本視覚学会 2013 年夏季大会

サブコマンド:ウィンドウ作成 モニタを指

色は黒

例 1

Screen関数のサブコマンド(2)

• 例: Screen('FillOval',window,255,[0,0,200,200]);

日本視覚学会 2013 年夏季大会

サブコマンド:

長方形描画

ウィンドウを指定(前の OpenWindowの戻り

値)

色は白 ウィンドウ左上からの

位置とサイズ

例 1

Screen関数

• 例: Screen('FillOval',window,255,[0,0,200,200]);

日本視覚学会 2013 年夏季大会

サブコマンド:

長方形描画

ウィンドウを指定(前の OpenWindowの戻り

値)

色は白 ウィンドウ左上からの

位置とサイズ

例 1

レクト:よく使う表示形式計算を容易にする関数が用意:

“help PsychRects”

for 文について• MATLABの for 文

for i = 1:10  % iが 1から 10になるまでa = i % 変数 aに iを代入

end

日本視覚学会 2013 年夏季大会

例 1

for 文で円の位置を変化window = Screen('OpenWindow',0,0);for i = 1:100

Screen('FillOval',window,255,[i,i,i+20,i+20]);

Screen('Flip',window);endScreen('CloseAll');

日本視覚学会 2013 年夏季大会

例 1

関連するサンプルコード:MovieDemo.m

• 153行目 -159行目(上はほぼ解説)for i=[1:n/2, n/2:-1:1]

r=[0 0 2 2]*(i);Screen(window,'FillRect', white);Screen(window,'FillOval',black,r);t=t+1;s(t)=Screen(window, 'Flip');

end日本視覚学会 2013 年夏季大会

例 1

関連サンプルコード:MovieDemo.m

• 153行目 -159行目(上はほぼ解説)for i=[1:n/2, n/2:-1:1]

r=[0 0 2 2]*(i);Screen(window,'FillRect', white);Screen(window,'FillOval',black,r);t=t+1;s(t)=Screen(window, 'Flip');

end日本視覚学会 2013 年夏季大会

知らないサブコマンド

例 1

知らない関数・サブコマンドの調べ方

• 関数のヘルプ: help {関数名 }– help Screen– (Screen関数の特殊事情) Screen と入力するだけで、サブコマンドの一覧が表示

• サブコマンドのヘルプ : {関数名 } {サブコマンド }?– Screen OpenWindow?

• ググる日本視覚学会 2013 年夏季大会

画像ファイルの提示• 画像ファイルの読み込み

• 全画面ウィンドウを作成

• ウィンドウに描画

• ウィンドウを提示

日本視覚学会 2013 年夏季大会

例 2

画像の読み込み• imread関数を使う例–ルートディレクトリ直下の画像 test.tiffm = imread('/test.tiff','tiff'); % 赤文字はファイルのパス

• 戻り値 mは行列(または多次元配列)size(m)

3つめの次元は RGBをあらわす。日本視覚学会 2013 年夏季大会

例 2

行列(3次元配列)の画像データを表示

m = imread('/test.tiff','tiff'); % 画像読み込みwindow = Screen('OpenWindow',0,0); % ウィンドウ開くtex=Screen('MakeTexture',window,m); % テクスチャ作成Screen('DrawTexture', window,tex); % 描画Screen('Flip',window); % 描画した結果を表示GetClicks; % クリックを待つScreen('CloseAll'); % ウィンドウを閉じる

日本視覚学会 2013 年夏季大会

例 2

行列の画像データを作る(meshgrid関数)

• 正弦波格子などを表示する際には、 meshgrid関数を使うことが多い。

• [x,y] = meshgrid(-3:3,-3:3)の出力

日本視覚学会 2013 年夏季大会

-3 -2 -1 0 +1

+2

+3

-3 -2 -1 0 +1

+2

+3

-3 -2 -1 0 +1

+2

+3

-3 -2 -1 0 +1

+2

+3

-3 -2 -1 0 +1

+2

+3

-3 -2 -1 0 +1

+2

+3

-3 -2 -1 0 +1

+2

+3

-3 -3 -3 -3 -3 -3 -3-2 -2 -2 -2 -2 -2 -2-1 -1 -1 -1 -1 -1 -10 0 0 0 0 0 0+1

+1

+1

+1

+1

+1

+1

+2

+2

+2

+2

+2

+2

+2

+3

+3

+3

+3

+3

+3

+3

x 座標が要素の値 y 座標が要素の値

戻り値 X

戻り値 y

例 3

Sine関数

正弦波格子縞(垂直)を作成

日本視覚学会 2013 年夏季大会

-4 -4 -4 -4 -4 -4 -4-3 -3 -3 -3 -3 -3 -3-2 -2 -2 -2 -2 -2 -2-1 -1 -1 -1 -1 -1 -10 0 0 0 0 0 0+1

+1

+1

+1

+1

+1

+1

+2

+2

+2

+2

+2

+2

+2

+3

+3

+3

+3

+3

+3

+3

+4

+4

+4

+4

+4

+4

+4引数 y

m = sin(2*pi*(1/4)*y)

0 0 0 0 0 0 0

+1

+1

+1

+1

+1

+1

+1

0 0 0 0 0 0 0

-1 -1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0

+1

+1

+1

+1

+1

+1

+1

0 0 0 0 0 0 0

-1 -1 -1 -1 -1 -1 -1

0 0 0 0 0 0 0戻り値 y

例 3

関連するサンプルコード:GratingDemo.m

[x y] = meshgrid(widthArray, widthArray);a=cos(tiltInRadians)*radiansPerPixel; % 112行目b=sin(tiltInRadians)*radiansPerPixel; % 113行目gratingMatrix = sin(a*x+b*y);

日本視覚学会 2013 年夏季大会

前の例の” 2*pi*(1/4)”と同じ要領

例 3

反応の取得・記録• キーボードの Fと J、どちらかが押されるまで

待機

left_key = KbName('f');right_key = KbName('j');[keydown, time, keyCode] = KbCheck;while ~(keyCode(left_key)|keyCode(right_key))

[keydown, time, keyCode] = KbCheck;end

日本視覚学会 2013 年夏季大会

例 4

関連するサンプルコード:OldNewRecogExp.m

% 289行目 while ( KeyCode(oldresp)==0 && KeyCode(newresp)==0 )

[KeyIsDown, endrt, KeyCode]=KbCheck;WaitSecs(0.001);

end

日本視覚学会 2013 年夏季大会

例 4

サンプルコードを使った学習• Psychtoolboxの関数がどのように使われるか、自分で改変しながら確かめられる。

• 実験のテンプレートとしても使える–  PsychExampleExperimentsフォルダ

• 書き換えるときは「別名で保存」してからに!

日本視覚学会 2013 年夏季大会

さまざまな機能

日本視覚学会 2013 年夏季大会

提供される機能の一例• PsychHardware: ハードウェアのサポート– Bits++, Eyelink, DataPixx, Daq, 各種輝度計…–もちろんMATLABでサポートしている機能が使える

• 刺激の書き出し–画像、動画( Screen関数)

• 心理物理学的測定法・データのフィティング– Palamedes toolboxが便利な気も

日本視覚学会 2013 年夏季大会

モニタのキャリブレーション

日本視覚学会 2013 年夏季大会

• キャリブレーション(測光・フィッティング)– CalibrateMonitorPhotometer .m– CalibrateMonSpd.m– ColorCalなど複数の輝度計をサポート–要 Curve fitting toolbox

• CLUTの操作– Screen関数の‘ LoadNormalizedGammaTable’

動画の書き出し• 4つのコマンドで書き出しができる– Screen CreateMovie– Screen AddFrameToMovie– Screen FinalizeMovie

• ImagingStereoDemo.mを参考に

日本視覚学会 2013 年夏季大会

導入(インストール)

日本視覚学会 2013 年夏季大会

必要な環境• OS: Windows, Mac, Linux– Window:時間精度などに制約– Mac: 複数ディスプレイの場合などに、提示のタイミングに問題

– Linux: 開発のベース

• 動作環境:MATLAB, Octave– OSとの相性(WindowsではMATLABのみサポート)

日本視覚学会 2013 年夏季大会

インストールについて• 公式サイトや、上述の日本語サイトに親

切なインストラクション–日本語サイトには、非推奨環境へのインストールの例もあり、大変参考になる。

• 動画関係(再生・録画など)の機能については、 GStreamerなどが必要になることも。

日本視覚学会 2013 年夏季大会

ご清聴有り難うございました。

日本視覚学会 2013 年夏季大会