• 検索結果がありません。

Psychtoolbox 入門 草野勉 ( 東京海洋大学 ) 日本視覚学会 2013 年夏季大会

N/A
N/A
Protected

Academic year: 2022

シェア "Psychtoolbox 入門 草野勉 ( 東京海洋大学 ) 日本視覚学会 2013 年夏季大会"

Copied!
47
0
0

読み込み中.... (全文を見る)

全文

(1)

Psychtoolbox 入門

草野 勉  

(東京海洋大学)

(2)

このチュートリアルについて

•  対象とする方  

– 授業等でプログラム言語を学習する機会がなく、

いままでPowerPointなどで実験をしていた方々  

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

•  ねらい  

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

(3)

細かい話は。。

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

•  ウェブサイトが検索に引っかからないことがあ

るので、Facebookで探してください。登録せず

ともURLが見られるようにしますので。。  

(4)

今日の話題

•  実験のためのプログラム:選択肢  

•  Psychtoolboxによる実験プログラム  

– 簡単なプログラムと、関連するサンプルコード  

•  刺激提示、反応取得・記録  

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

(5)

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

•  実験用のソフトウェア  

– SuperLab,  E-­‐Prime,  Experiment  Builderなど  

•  プログラミング言語のライブラリとして  

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

これから、複数のOSで同様に使える(クロス・

プラットフォームの)視覚実験用のライブラリ の例を紹介します。

(6)

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

•  PsychoPy  

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

– YouTube上でのチュートリアル  

•  hJp://www.youtube.com/watch?v=VV6qhuQgsiI  

– 日本語解説  

•  小川洋和先生(関西学院大学)  

•  十河宏行先生(愛媛大学)  

(7)

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

•  Psychlopes  

– C++のライブラリ  

– 日本発(東大心理佐藤研の細川研知さん)  

•  分からないことは聞きやすいかも。  

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

(8)

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

•  Vision  Scienceのサイト(ここやここ)  

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

(9)

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

•  Psychophysics  Toolbox  (Psychtoolbox)  

– MATLABGNU  Octaveのライブラリ  

•  習得が容易(と言われている)  

– 教育的なサンプルコードが充実  

– 利用者数が多い(と思う)。フォーラムの充実   – 無料で導入可能  

(10)

Psychtoolbox の情報源

•  検索すると日本語の解説もちらほら  

•  日本語で得られる貴重な情報源  

(11)

簡単なプログラム

(12)

ねらい

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

Psychtoolboxの機能を紹介。  

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

(13)

「簡単なプログラム」の例

•  画面左上に200  x  200  px  の円を表示  

•  クリックで表示終了    

window  =  Screen('OpenWindow',0,0);  

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

Screen('Flip',window);  

GetClicks;  

Screen('CloseAll');  

(14)

サンプルについて

•  PsychDemosフォルダ(Psychtoolbox直下)  

•  それ以外の場所にもサンプルは存在  

– Bits++関連はPsychtoolbox  >  PsychHardware  >  

BitsPlusToolbox  >  BitsPlusDemos  

•  Web上にも  

– Psychtoolboxユーザーのフォーラムなど  

(15)

Psychtoolbox のフォーラム

(16)

「簡単です」の例

•  画面左上に200  x  200  px  の円を表示  

•  クリックで表示終了    

window  =  Screen('OpenWindow',0,0);  

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

Screen('Flip',window);  

GetClicks;  

Screen('CloseAll');  

1

(17)

「簡単です」という例

•  画面左上に200  x  200  px  の円を表示  

•  クリックで表示終了    

window  =  Screen('OpenWindow',0,0);  

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

Screen('Flip',window);  

GetClicks;  

Screen('CloseAll');  

全画面ウィンドウを作成

1

(18)

「簡単です」という例

•  画面左上に200  x  200  px  の円を表示  

•  クリックで表示終了    

window  =  Screen('OpenWindow',0,0);  

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

Screen('Flip',window);  

GetClicks;  

Screen('CloseAll');  

円を描画

1

(19)

「簡単です」という例

•  画面左上に200  x  200  px  の円を表示  

•  クリックで表示終了    

window  =  Screen('OpenWindow',0,0);  

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

Screen('Flip',window);  

GetClicks;  

Screen('CloseAll');  

描いた内容を表示

1

(20)

「簡単です」という例

•  画面左上に200  x  200  px  の円を表示  

•  クリックで表示終了    

window  =  Screen('OpenWindow',0,0);  

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

Screen('Flip',window);  

GetClicks;  

Screen('CloseAll');  

ウィンドウを閉じる

クリックを待つ

1

(21)

ちなみに、コメントは“ % ”で  

(コメントアウトにもよく使われる)

%  全画面ウィンドウ作成  

window  =  Screen('OpenWindow',0,0);    %  画面は黒  

%  円を描画  

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

%  描画内容を表示  

Screen('Flip',window);  

GetClicks;  %  クリックを待つ  

Screen('CloseAll');  %  全画面表示終了  

1

(22)

文章の区切りと改行

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

•  改行、セミコロン、カンマで1文の区切り  

– fc,  pause(1),toc  

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

1

(23)

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

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

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

サブコマンド:ウィンドウ作成

モニタを指定 色は黒

1

(24)

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

   

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

サブコマンド:  

長方形描画

ウィンドウを指定  

(前の OpenWindow の戻り値)

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

位置とサイズ

1

(25)

Screen 関数

   

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

サブコマンド:  

長方形描画

ウィンドウを指定  

(前の OpenWindow の戻り値)

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

位置とサイズ

1

レクト:よく使う表示形式  

計算を容易にする関数が用意:  

“help  PsychRects”

(26)

for 文について

•  MATLABのfor文    

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

end    

1

(27)

for 文で円の位置を変化

window  =  Screen('OpenWindow',0,0);  

for  i  =  1:100  

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

 Screen('Flip',window);  

end  

Screen('CloseAll');  

1

(28)

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

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  

1

(29)

関連サンプルコード: 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  

知らないサブコマンド

1

(30)

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

•  関数のヘルプ:help  {関数名}  

– help  Screen  

– (Screen関数の特殊事情)Screen  と入力するだけで、

サブコマンドの一覧が表示  

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

– Screen  OpenWindow?  

•  ググる  

(31)

画像ファイルの提示

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

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

•  ウィンドウに描画  

•  ウィンドウを提示

2

(32)

画像の読み込み

•  imread関数を使う例  

– ルートディレクトリ直下の画像test.fff  

m  =  imread('/test.fff','fff');  %赤文字はファイルのパス    

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

size(m)    

3つめの次元はRGBをあらわす。  

 

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

2

(33)

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

m  =  imread('/test.fff','fff');  %  画像読み込み  

window  =  Screen('OpenWindow',0,0);  %  ウィンドウ開く   tex=Screen('MakeTexture',window,m);  %  テクスチャ作成   Screen('DrawTexture', window,tex); % 描画  

Screen('Flip',window);  %  描画した結果を表示   GetClicks;  %  クリックを待つ  

Screen('CloseAll');  %  ウィンドウを閉じる  

2

(34)

行列の画像データを作る  

( meshgrid 関数)

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

•  [x,y]  =  meshgrid(-­‐3:3,-­‐3: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 -­‐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 -­‐1

0 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

3

(35)

             

Sine関数

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

-­‐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 -­‐1

0 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

(36)

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

GrafngDemo.m

 

[x  y]  =  meshgrid(widthArray,  widthArray);  

a=cos(fltInRadians)*radiansPerPixel;  %  112行目   b=sin(fltInRadians)*radiansPerPixel;  %  113行目   grafngMatrix  =  sin(a*x+b*y);

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

3

(37)

反応の取得・記録

•  キーボードのFとJ、どちらかが押されるまで待機  

les_key  =  KbName('f');

right_key  =  KbName('j');  

[keydown,  fme,  keyCode]  =  KbCheck;  

while  ~(keyCode(les_key)|keyCode(right_key))    [keydown,  fme,  keyCode]  =  KbCheck;  

end  

4  

(38)

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

OldNewRecogExp.m

%  289行目  

 while  (  KeyCode(oldresp)==0  &&  KeyCode(newresp)==0  )    [KeyIsDown,  endrt,  KeyCode]=KbCheck;  

 WaitSecs(0.001);  

end  

4  

(39)

サンプルコードを使った学習

•  Psychtoolboxの関数がどのように使われるか、

自分で改変しながら確かめられる。  

•  実験のテンプレートとしても使える  

–  PsychExampleExperimentsフォルダ  

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

(40)

さまざまな機能

(41)

提供される機能の一例

•  PsychHardware: ハードウェアのサポート  

– Bits++,  Eyelink,  DataPixx,  Daq,  各種輝度計…  

– もちろんMATLABでサポートしている機能が使える  

•  刺激の書き出し  

– 画像、動画(Screen関数)  

•  心理物理学的測定法・データのフィティング  

– Palamedes  toolboxが便利な気も  

(42)

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

•  キャリブレーション(測光・フィッティング)  

– CalibrateMonitorPhotometer  .m   – CalibrateMonSpd.m  

– ColorCalなど複数の輝度計をサポート  

– Curve  fi}ng  toolbox  

•  CLUTの操作  

– Screen関数の‘LoadNormalizedGammaTable’

(43)

動画の書き出し

•  4つのコマンドで書き出しができる  

– Screen  CreateMovie  

– Screen  AddFrameToMovie   – Screen  FinalizeMovie  

•  ImagingStereoDemo.mを参考に  

(44)

導入(インストール)

(45)

必要な環境

•  OS:  Windows,  Mac,  Linux  

– Window:時間精度などに制約  

– Mac:  複数ディスプレイの場合などに、提示のタイミン

グに問題  

– Linux:  開発のベース  

•  動作環境:MATLAB,  Octave  

– OSとの相性(WindowsではMATLABのみサポート)  

(46)

インストールについて

•  公式サイトや、上述の日本語サイトに親切な インストラクション  

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

•  動画関係(再生・録画など)の機能について

は、GStreamerなどが必要になることも。

(47)

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

参照

関連したドキュメント

旅行者様は、 STAYNAVI クーポン発行のために、 STAYNAVI

えて リア 会を設 したのです そして、 リア で 会を開 して、そこに 者を 込 ような仕 けをしました そして 会を必 開 して、オブザーバーにも必 の けをし ます

2)海を取り巻く国際社会の動向

並んで慌ただしく会場へ歩いて行きました。日中青年シンポジウムです。おそらく日本語を学んでき た

 「世界陸上は今までの競技 人生の中で最も印象に残る大 会になりました。でも、最大の目

そのため、夏季は客室の室内温度に比べて高く 設定することで、空調エネルギーの

真竹は約 120 年ごとに一斉に花を咲かせ、枯れてしまう そうです。昭和 40 年代にこの開花があり、必要な量の竹

関西学院大学社会学部は、1960 年にそれまでの文学部社会学科、社会事業学科が文学部 から独立して創設された。2009 年は創設 50