感覚におけるコントラストと差動結合
明るさなど感覚の強さは、その絶対的な物理量と1対1に対応しているのではなく、相対的な変化量(差)によって大きく影響される。コントラストはその1例であるが、他の例として差動結合があげられる。
コントラスト(対比)
プログラムContrast.exeはコントラストを示すものである。このプログラムContrast.exeは.NET Framework 3.5対応であり、クリックしてダウンロード実行できる。実行すると図1の画面となる。
図1
左側の灰色の長方形と右側の灰色の長方形は同じ灰色である。ともに次のコード
Brush ^bsh3 = gcnew
SolidBrush( Color::FromArgb(150, 150, 150) );
g->FillRectangle(bsh3, 4*w/12, 2*h/5,
w/12, h/5);
g->FillRectangle(bsh3, 7*w/12, 2*h/5, w/12, h/5);
によって描かれており、FromArgb(150, 150, 150)で与えられる色である。しかし、白で囲まれた灰色の方が暗く見えるというのがコントラストである。左右の灰色が同じ灰色であることは、「Connected」ボタンをクリックすると左の灰色が右側に伸びて右側の灰色の長方形に繋がるので確認することができる(図2)。
図2
画面左上の「Separated」ボタンをクリックすると図1の状態に戻る。図1の状態に戻ると白で囲まれた灰色の方が暗く見えることを確認することができる。
プログラムのソースコードファイルなどは圧縮ファイルContrast.zipにまとめた。圧縮ファイル名Contrast.zipをクリックしてダウンロードすることができる。ダウンロードしたファイル名をマウスの右ボタンでクリックするとVistaあるいはWindow7の場合、「展開」あるいは「解凍」などのメニュが表示されるので、適当なものを選んで解凍することができる。解凍したファイルはVisual C++2008などで開くことができる。Visual C++プログラミングの入門書として<岡本安晴「大学生のための心理学VC++プログラミング入門」勁草書房>を上梓している。
差動結合(Differential Coupling)
感覚情報処理は、物理刺激値がそのままダイレクトに感覚情報として受け取られているのではなく、変化(差分)が入力情報となっているというのが差動結合のモデルである。このことを示すプログラムDiffCoupling.exeを用意した。プログラムDiffCoupling.exeは.NET Framework 3.5対応であり、ファイル名DiffCoupling.exeをクリックしてダウンロード実行することができる。このプログラムを実行すると図3のフォームが表示される。
図3
「Draw」ボタンをクリックすると図4の画面になる。
図4
帯の左右の部分は物理的には同じ値である。しかし、中央での明るさの違いが緩やかに左右に向かって変化しているため、左側と右側の灰色の帯は一様な明るさに見え、中のギャップ部での違いが主観的な左右の端の領域での見えの違いとして知覚される。この左右の帯の部分の描画は以下のコードによって行われている。
for (int i = 0; i <= 400; i++){
if (i
< 150){
int v = int(120 + gap
* (150 - i) / 150.0);
Pen
^ pn = gcnew Pen(Color::FromArgb(v, v, v));
g->DrawLine(
pn, x0-i, y0-50, x0-i, y0+50);
v
= int(120 - gap * (150 - i) / 150.0);
pn
= gcnew Pen(Color::FromArgb(v, v, v));
g->DrawLine(
pn, x0+1+i, y0-50, x0+1+i, y0+50);
}else{
v
= 120;
Pen
^ pn = gcnew Pen(Color::FromArgb(v, v, v));
g->DrawLine(
pn, x0-i, y0-50, x0-i, y0+50);
g->DrawLine(
pn, x0+1+i, y0-50, x0+1+i, y0+50);
}
}
図1の画面の左上のtextBox内のgap値を変えてdrawボタンをクリックすると、そのgap値に対応した描画が行われる。適切なgap値はディスプレイとパソコンとの組み合わせによって決まるので、いろいろな値を試して差動結合の効果を比べることができる。
checkボタンをクリックすると、中央の灰色の明るさの変化している部分が青色で塗り潰される(図5)。中央が青色で塗り潰されると、物理的に同じ灰色である帯の左右の端の領域が同じ灰色に見える。
図5
この青色に塗り潰すコードは以下のようになっている。
Brush ^ bsh = gcnew
SolidBrush(Color::Blue);
Graphics ^ g = Graphics::FromImage(
pictureBox1->Image );
g->FillRectangle( bsh, x0-150, y0-50, 301, 101 );
プログラムのソースコードファイルなどは圧縮ファイルDiffCoupling.zipにまとめた。圧縮ファイル名DiffCoupling.zipをクリックしてダウンロードすることができる。ダウンロードしたファイル名をマウスの右ボタンでクリックするとVistaあるいはWindow7の場合、「展開」あるいは「解凍」などのメニュが表示されるので、適当なものを選んで解凍することができる。解凍したファイルはVisual C++2008などで開くことができる。Visual C++プログラミングの入門書として<岡本安晴「大学生のための心理学VC++プログラミング入門」勁草書房>を上梓している。