Table of Contents
Table of Contents
人間は感覚(五感+α)によって得た刺激信号を神経システムで処理することに より人間にとって有効な「情報」に変換しています。計算機の中にある信号は そのそのままでは人間は感知する事ができませんので、人間が感知できる刺激 信号に変換する装置が必要です。それは何でも良いです。例えば、計算機の中 のビット列にしたがって、針をチクチクでも良いです(神林長平「迷惑一番」 より)。CD-ROM を聞いた事はありますか?音楽 CD じゃなくて。酷い雑音に聞 こえますが、これを聞いて中に入っている画像を見ることは理論的には不可能 では無いはずです。単に訓練していないからできないだけです(多分)。
単一の刺激センサに入るのは時系列の1次元信号です。複数の刺激センサに入っ た刺激を演算処理して、人間にとって理解できる(理解している、思い込んで いる)外界の状態からの刺激と理解しているに過ぎません。複数の刺激センサ からの刺激信号を処理して仮想的な空間として扱うことも可能でしょう。
可視化(Visualize)というのは、人間が視覚刺激をどう処理して情報を得てい るか、の逆変換を行うことで、計算機の中に有ると人間が考えている情報を有 効に伝えようとする方法です。
なぜ、可視化が有効かと言えば、それは事実をそのまま伝えないで真実のよう に伝える事ができるからです。特に重要な点は時間や空間をごまかすことがで きることです。例えば、時系列の現象を観測するには、同じだけの時間がかか ります。もし、130億年の宇宙の膨張を観測するには、人間も130億年生 きてそれにつき合わなければなりません。それは事実だからです。しかし、事 実を事実のままに観測させる事が不可能なのであれば、嘘をついて観測者をだ ますしかありません。同様に空間にしても、例えば、恒星は点ではなく直径数 100万キロメートルの立体です。しかし、人間は黒い背景に輝点を見ればそ れが星だと理解するように訓練されています。これを利用することで、宇宙の 事実は見せずに、宇宙の姿を人間に観測させることができます。
なんであれ、単なる計算機内部のデータを人間に提示しても何の意味もありま せん。必ず上手な可視化が必要です。それは、プレゼンテーションの技術でも あります。どんなに工学/科学技術的に優れた可視化を行っても、それを見た 人に意図したことが伝わらなければ何の価値もありませんし、それは「情報」 ですらありません。単なるデータ。
画像データでは、輝点のサイズは無限に小さいと考えます。いわゆるデルタ関 数です。つまり、無限に小さい輝点が間隔を開けて輝いているという風に解釈 します。これは数学的な各種の処理を行う上で、輝点に面積の概念を導入する と計算が複雑になるからです。それに、計算機の上でいってもアドレスという のは離散しています。メモリのアドレスは整数で振られます。もし、メモリの アドレスが実数値だったりしたらもうわけわかりません。なので、それで良い んです。
しかし、物理的には無限小の輝点というのは存在しません。つまり近似してい るという事です。近似しても人間が近似誤差を感じとることができなければと りあえずよしです。CRTモニタを虫メガネなどで拡大してみると、3色のスポッ トが光っています。これは、人間の近似誤差に対する不感を逆に利用している 例です。LCDモニタだと四角の区画が光っています。
輝点の事を画素と言います。あるいはピクセルといいます。Picture Cell の 略だと言われています(なので、3次元画像では Voxel という言葉もあります)。
人間は光りの強さや色味の分布を視覚として認識します。よって、ピクセルの 輝きにはその強さや色味を与えなければなりません。よって、画像データでは ピクセルの輝き具合というのを、単純に一つの値として保持することはできま せん。
通常、波動現象にはスペクトルがあります。人間は波長のスペクトルを処理 (解釈)して色味として感じています。よって、同じスペクトルの分布を再現す れば同じ色に見えます。しかし、スペクトルは強さだけでなく周波数において も連続値です。仮に離散化するとしても例えば可視領域の400nmから700nmまで を10nm間隔で発光装置を並べるとしたら大変です。なので、人間の視覚処理の 曖昧さを利用して、何とか波長方向でのサンプリングを減らそうとしました。 結局3サンプルあればなんとかなるということがわかりました。しかし、どの 三つの波長をとれば良いかについては、確定していません。人間の視覚はもっ と多くの波長を識別しているはずですが、それを冗長なものとして処理してい るようです。人間にとって視覚というのは非常に重要なので、視覚システムも かなりの冗長度をもって設計されているようです。おかげで、表示システムを 作るときに何とか3サンプルでそこそこごまかせるわけです。しかし、これは ごまかしで有ることを忘れていはなりません。本当に3サンプルで全ての色味 を再現できているわけではありません。実際、高度な撮影装置では4サンプル とったりします。3サンプルしか出せない表示装置ばかり見ていると、視覚が だんだんおかしくなってきて、立体処理や色彩処理の機能が適応してダメになっ てきますので、注意してください。
なんであれ、1ピクセルには3つの値を割り当てればよいわけです。
モニタに写っている画像のピクセルの値は、当然、何処かのメモリの値を反映 したものです。通常の PC ではビデオコントローラが管理するメモリ(ビデオ メモリ)の値です。昔は常に専用のメモリチップが使われていましたし、今で も一般的にはビデオカードの上にある専用のメモリです。しかし、低価格PCで は、部品点数を減らすため普通のメインメモリの一部をビデオメモリとして使 うようなものも出て来ました。
通常のコンピュータのビデオサブシステム(ビデオカードとモニタ)では、ビデ オカード上のあるビデオメモリとモニタ上の発光素子が1対1対応するように なっています。つまり、あるメモリの値(ディジタル値)を電圧か電流に変換し て発光素子の輝度を制御しています。ビデオカードと言ったところで、中身は コンピュータ(今やビデオカード上にはパソコン本体のCPUより強力が GPU が のっています)であって、コンピュータとしての構造が根本から違うわけでは ありません。何を言っているかと言えば、ビデオメモリも1次元だということ です。つまり、メモリのアドレスをX座標値とY座標値のペアで指定できるわけ ではありません(それが出来る変なCPU が作られた事は実際にありますが)。
CRTというのには走査線というのがあるのは知ってますでしょうか?画面は同 時に光っているのではなく、電子ビームが当たった所が電子ビームの強度にし たがって光っている。同時に面として光っているように見えるのは、蛍光体の 残光と人間の視覚のやはり残光(?)の効果によるごまかしだというのは。
この仕組みは実は計算機のビデオサブシステムでも同じです。もともと、CRT しか表示装置が無かったからというのもありますが、基本的に同じ仕組みです。 ビデオカード上では、GPUがビデオメモリをスキャンしてそのディジタル値を 読み取り、A/Dコンバータによってアナログ値に変換して、それを走査線とし て供給しているのです。だから、もともと、ビデオメモリが2次元だと困るの です。
モニタ上の発光素子とビデオメモリ上のアドレスの関係というのは、ビデオカー ド上のプログラムによって対応づけられています。
表示についてばかり考えてきました。なぜなら、計算機にとって画像を表示す るというのは常に大変な事だったからです。
画像をファイルに保存するというのは、表示されているビデオメモリの内容を ファイルに保存し、再度表示することを目的として普及しました。そうなった 理由としていくつか考えられます。まず、描画する機能というのがビデオシス テムの一部として作られたため、そもそも画像はビデオメモリ上にしか作りよ うがなかった。実際、単に線を引くだけでも結構面倒くさい。特に1ビット1 ピクセルではビット演算をしなければならず、とても素人さんには手が出せる しろものではなかった。また、システムによってはハードウェアにコマンドを 発行してビデオメモリ上に描画するシステムなんかもあったし、今でも3次元 処理は実際にそうやっている。そういう歴史があったので、まず、ビデオメモ リ上に画像をつくって、それをファイルに保存する。というのが普通だった。
今では、高速の3Dグラフィックスでも無い限りはそんな事はしない。逆にメ インメモリ上で画像を作って、ビデオメモリに転送するような仕組みととって いる。なので、ビデオシステム無しに画像を作るようなライブラリも出てきま した(GD とか ImageMagick)。