パターン刺激1

Bergen, J. R., & Julesz, B. (1983). Parallel versus serial processing in rapid pattern discrimination. Nature, 303, 696-698

のFig.1 のような複数の T の中に L が含まれる刺激の描画について説明します。

またTとLは任意の角度に回転しています。

まず次のTの画像とLの画像の2つをダウンロードして、T.jpg と L.jpg という名前で、プログラムと同じ場所に保存してください。

サンプルプログラムは次の通りです。

function TandL
% 複数の"T"の中に、"L"が1つ含まれる。
% TとLは任意の角度に回転した状態で呈示。
% 何かのキーを押したら終了
try
  AssertOpenGL;
  ListenChar(2); %Matlabに対するキー入力を無効
  %myKeyCheck;
 
  screenNumber = max(Screen('Screens'));
  [win, rect] = Screen('OpenWindow', screenNumber, [255 255 0], [10 50 750 550]);
  %画面の中心座標
  [centerX centerY] = RectCenter(rect);
 
  %実験プログラムを保存しているフォルダ内に T.jpg と L.jpg を準備しておくこと。
  Tfile = 'T.jpg';
  Lfile = 'L.jpg';
 
  %画像の読み込み
  Tdata = imread(Tfile, 'jpg');
  Ldata = imread(Lfile, 'jpg');
 
  %画像サイズの幅が「列数」に相当し、
  %画像サイズの高さが「行数」の相当する
  [Ty, Tx, Td] = size(Tdata);
  [Ly, Lx, Ld] = size(Ldata);
 
  Timagetex = Screen('MakeTexture', win, Tdata);
  Limagetex = Screen('MakeTexture', win, Ldata);
    
  %凝視点の線分座標
  FixationXY=[-20, 20, 0, 0; 0, 0, -20, 20];
  %水平方向のグリッドの数
  HorizGridNum=5;
  %垂直方向のグリッドの数
  VertGridNum=5;
 
  a=[1:HorizGridNum];
  b=[1:VertGridNum];
  [x,y]=meshgrid(a,b);
 
  GridWidth = 70;
  GridHeight = 70;
 
  %赤い凝視点の描画
  Screen('DrawLines', win, FixationXY, 2, [255 0 0], [centerX, centerY]);
 
  for cnt = 1:HorizGridNum*VertGridNum
    if cnt ~= 13 %凝視点部分(グリッドの13番目)は描画しない
      %描画する画像の左上のX座標
      tmpX = (x(cnt)-1) * GridWidth + centerX - (GridWidth * HorizGridNum)/2 + (GridWidth - Tx)/2;
      %描画する画像の左上のY座標
      tmpY = (y(cnt)-1) * GridHeight + centerY - (GridHeight * VertGridNum)/2 + (GridHeight - Ty)/2;
     
      if cnt == 7 %グリッドの7番目に"L"を呈示する
        Screen('DrawTexture', win, Limagetex, [], [tmpX tmpY tmpX+Lx tmpY+Ly], rand(1)*360);
      else
        Screen('DrawTexture', win, Timagetex, [], [tmpX tmpY tmpX+Tx tmpY+Ty], rand(1)*360);
      end;
    end; 
  end;
 
  Screen('Flip', win);
 
  KbWait;
 
  sca;
  ListenChar(0);
catch
  sca;
  ListenChar(0);
  psychrethrow(psychlasterror);
end

上のサンプルプログラムを理解するにはmeshgridの知識が必要です。

分かりやすいように背景を黄色にして、凝視点を赤にしています。

ここでは5×5の格子状の配置を想定しています。

ポイントとしては、例えば左から2番目で上から2番目のグリッドを通し番号7で表しているところです。

サンプルプログラムでは、7番のところに"L"を呈示して、13番目のところに凝視点を呈示しています。

またグリッドの大きさ(GridWidth, GridHeight)は、画像の大きさ(Tx, Ty)より大きくしておかないと、画像を回転させたときに重複部分が出てきてしまいます。

上の例ではすべてのグリッドに画像を呈示していますが、すべてのグリッドに呈示しないことによって、TやLがランダムに配置されているように見せることもできます。

(やや規則的なランダムになりますが)

詳しくはパターン刺激2(ランダム)をご覧ください。