ここでは、マルチメディア情報の処理の基礎として、テキスト処理、音声処理、画像処理の基礎技術について勉強します。
文字コードとは、文字をコンピュータ上でどの2進数に対応させて表現するかを決めたものです。文字と2進数の対応は、一通りではなく、以下のようなコードが存在します。
さらに、漢字コードは以下の3種類に分類されます。
アスキー(ASCII)コードは、英数字を表すための文字コードで、1バイト(2進数の8ビット:10進数では0~255)で1文字を表現する「1バイトコード」です。
具体的には、10進数で表現したときの 0 から 31 までの数字で改行(Enter)やエスケープ(ESC)といった特殊な制御用の文字を表し、32がスペース、 33から126までがアルファベット、数字、記号に対応し、127がデリート(DEL)を表しています。たとえば、"A"という文字は41(10進数表記)、"9"という文字は61(10進数表記)です。
アスキーコードでは、1バイトの8ビットのうち、実際に文字の情報を表しているのは、最上位ビット(MSB: Most Significant Bit)以外の7ビットです。したがって、アスキーコードで表現できるの文字数は128(2の7乗)文字です。
このように、1バイト(8ビット)のうち、7ビットしか文字情報に使わない文字コードを、7ビットコードと呼びます。文字情報に使用されない最上位ビットは、エラー処理のためのビット(パリティービット)として使われています。
漢字コードは、日本語を表すための文字コードです。
日本語は、ひらがな、カタカナ、漢字など文字数も多く、1バイト(256種類)ではすべての文字を表現することはできません。そこで、日本語を表すための漢字コードでは、1文字当たり2バイト(2進数の16ビット)を使って文字情報を表します。2バイトの情報は、最大約6万文字(2の16乗)の情報を表すことができます。
この漢字コードには、以下の3種類があります。
JISコードは、それぞれのバイトのうち7ビットだけを使った7ビットコードです。シフトJISコードとEUCコードは、8ビットすべてを使った8ビットコードであるためインターネットなどでは使用できず、インターネットを使ったサービスではこのJISコードが使用されます。
JISコードでは、たとえば、"00110000 00100001"という2バイトのコードがあった場合、これだけでは漢字の「亜」を表すのか、あるいは英数字2文字の「0 !」を表すのか区別できません。そこで、3文字の特別な文字(エスケープコード)を、その直前で使って、その後のコードが英数字か日本語かを切り替えています。
エスケープコード | 切り替え |
---|---|
ESC + ( + B または ESC + ( + J の後 | 英数字 |
ESC + $ + @ または ESC + $ + B の後 | 日本語 |
シフトJISコードは、JISコードのエスケープコードの扱いが面倒なため、最上位ビットも使うようにしたコードです。文字を表す数値をJISコードからシフトさせて作ったので、シフトJISといいます。
シフトJISコードでは、日本語は第1バイトの最上位ビットが必ず「1」になっており、第1バイトを見ただけで文字種がわかるという利点があります。しかし、8ビットコードであるため、Webや電子メールを使う時にはJISコードに変換する必要があります。
EUCコードは、UNIX OSで標準的に使われる文字コードです。EUCコードは、シフトJISと同じように8ビットコードであり、Webや電子メールを使う場合には、JISコードに変換する必要があります。
ユニコードは、世界中の言語を一つの文字コードで表そうとするものです。
2バイトのコードで最大約6万字を表現できますが、世界中の文字を表すには12万文字は必要だといわれています。そこで、似ている文字や同じ起源の文字を、同じコードに割り振るということになります。
しかし、最近のパソコンの内部コードとしては、このユニコードが使われるようになってきています。また、Java言語などでは標準のコードとして採用されたりしています。
コンピュータの画面上やプリンタの出力で文字を表示するためには、文字コードに対応する文字の形状データが必要になります。この文字の形状(デザイン)のデータがフォントです。
フォントには、表現方法の分類として「ビットマップフォント」と「アウトラインフォント」の2種類があります。
ビットマップフォントは、文字を点データの集まりとして表現する方法であり、コンピュータ処理は高速にできますが、拡大すると文字の輪郭が「ぎざぎざ」に見苦しくなります。
一方、アウトラインフォントは、輪郭線の情報で文字の形状を表すもので、表示の際にはこの輪郭線の中を塗りつぶす処理が必要となります。しかし、文字の拡大、縮小、変形などの処理がきれいにできる特徴があります。コンピュータの処理性能が上がった最近では、アウトラインフォントが使われることが多いようです。
フォントには、文字幅が一定の「等幅フォント」と、文字によって文字幅が変わる「プロポーショナルフォント」があります。
図2.1 等幅フォントとプロポーショナルフォント
たとえば、欧文フォントで、 "W" と "I" や大文字と小文字では文字幅が違うため、プロポーショナルフォントが多く使われます。ただし、タブキーを使ってプログラムや電子メールを記述するような場合には、プログラムの見易さを優先して「等幅フォント」を使います。日本語フォントでも、プロポーショナルフォントが使われることがあります。
さらに、フォント"W"の後にフォント"A"がくる場合など、文字の並び順によってはプロポーショナルフォントを使っても文字の間隔があきすぎる場合もあります。このように、文字の前後の並び順によって、文字の間隔の調整を行う処理を、カーニングと言います。
文字情報を編集する簡単なソフトウェアが、テキストエディタです。テキストエディタの主な機能は、文字コードを使った編集です。
一方、ワープロソフトでは、文字コードを使った編集以外に、文字の大きさ、色、レイアウトなどの編集のほか、最近は図形や表も作成する機能が付属しています。
そして、新聞や雑誌、書籍、論文などの印刷物の組版(印刷用の原版を作ること)に相当する作業もコンピュータ上で電子的に行われることが多くなりました。これは、机上だけで執筆から編集・出版まで完了するので、デスクトップ・パブリッシング(DTP)と呼ばれています。
最近では、紙による印刷ではなく文書などが、メディアやWeb上のファイルで公開されることも多くなりました。電子的なカタログや、取り扱い説明書などです。
このような場合、ファイルの互換性を重視するときには、アドビー(Adobe)社のPDF(Portble Document Format)形式のファイルが用いられることが多いようです。これは、ワープロ文書などがOSやソフトの違いによって見え方が変わる場合があるのに対して、PDF形式の文書では無料の表示ソフト(Acrobat Reader)さえあれば、OSや環境に依存しないほぼ同一の表示が行えるためです。
World Wide Web(WWW、Web)は、インターネット上で情報を発信し、そのWebページを見るための仕組みです。Webで表示するための情報は、HTML(Hyper Text Markup Language)という言語で記述されます。
HTML言語は、表示する文字に"<", ">"で囲まれた文字表示の仕方を指定する「タグ」と呼ばれる記号を追加して記述されます。HTML文書を作成するには、通常のテキストエディタやワープロソフトを利用することができます。ただし、ファイルを保存する際は、保存形式としてワープロ固有のデータを含まない「テキスト形式」で保存する必要があります。また、HTMLファイルの拡張子は、"html"か"htm"です。
Webページを公開するには、作成したHTML文書ファイルを、Webサーバーと呼ばれるコンピュータにFTPソフトを使って送ります。
サーバー上のWebページには、URL(Uniform Resource Locator)と呼ばれるWeb情報のありかを示す情報が割り当てられますWebブラウザ側で、このURLを指定すると、サーバー側の対応するWebページが表示されます。
ネットワークを経由して、テキストを中心とした書籍の情報を流通させる「電子書籍」が普及しつつあります。
「電子書籍」は、紙媒体の小説、雑誌、コミック、教科書などのコンテンツをデジタル電子データ化し、専用の電子書籍リーダー、汎用のタブレット端末、パソコンなどに配信し表示する書籍のインターネット配信です。
電子書籍のデータ形式には、文書ファイルのデータ形式として普及しているPDFのほかに、様々なフォントサイズや表示画面のサイズ(解像度)に柔軟に対応し、表示環境に応じて自由自在に表示ができる電子書籍専用のデータ形式が検討され採用されています。具体的には、業界標準のEPUB (Electronic Publication) や、シャープが提唱しているXMDF (ever-eXtending Mobile Document Format) など様々なデータ形式が存在しているのが現状です。
「電子書籍」を利用すると、検索、文字サイズの変更、音声による読み上げが可能、音声・動画との組み合わせが可能などのメリットもありますが、目が疲れる、専用端末やリーダーソフトが必要などの課題もあります。
音とは、空気の密度の高い部分と低い部分が交互に繰り返して伝播していく波(粗密波あるいは縦波)です。
図2.2 音は縦波
音はもともとアナログ信号ですが、情報として表現したり記録する場合、アナログ方式とディジタル方式の二つの形式があります。
音の情報を記録するのに古くから行われた簡単な方法は、音の信号を直接アナログ方式で記録する方法です。
たとえば、レコードのような円盤に、音の波形の振動に対応した溝をらせん状につけてやれば、音の振動が記録できます。そして、音の再生では、この溝の上を針でなぞれば、その溝の形状のとおりに針が振動し、この振動を空気の振動に変えてやれば音が発生します。
また、音のアナログ振動を磁気的な変位で磁気テープに記録するのが、オーディオテープレコーダの原理です。
音のディジタル方式による記録・表現では、音がもともとアナログ信号であることから、音の情報をディジタル信号に変換しなければなりません。アナログ信号である音をディジタル化するには、標本化、量子化、符号化という3つの処理を順に行います。
図2.2b 標本化と量子化と符号化
標本化とは、サンプリングともいい、短い時間間隔で音の波形を数値化することです。たとえば、電話では1/8000 秒間隔(サンプリング周波数8kHz)、音楽用CDでは1/44100 秒(サンプリング周波数44.1kHz)間隔で数値化します。この間隔が狭い(サンプリング周波数が高い)ほど、元の波形を忠実に再現できるので音質がよくなります。
次に、量子化という処理を行います。これは、標本化で数値化された値の離散化です。すなわち、標本化で得られた値をとびとびの値に変換します。たとえば、量子化のビット数が8ビットの場合、とびとびの値は256段階(2の8乗)となり、量子化ビット数が16ビットの場合、とびとびの値は約6万段階(2の16乗)となります。
量子化ビット数が大きいほど、再現される音質はよくなります。電話では量子化ビット数は8ビット、音楽CDでは16ビットです。
こうして得られた数値は、最後に 1 と 0 の系列からなる符号に変換する符号化処理が行われ、この2進数の信号をCDに記録したり、ネットワーク経由で伝送したりします。
このように、アナログ信号からディジタル信号への変換は、A-D(エー・ディー)変換と呼ばれます。
一方、CDを再生する場合は、0 と 1 の符号に対応させてプラスチック盤のくぼみの「ある」と「なし」として記録した音のディジタル情報を、レーザー光を当てたときの反射の大小で読み取り、 ディジタル信号を元のアナログ信号へ変換(D-A変換)し、増幅の後、スピーカーから聞いているわけです。
音をディジタル化することのメリットは、コンピュータを利用して音声信号に対する加工や処理を行えることです。音は、「音の大きさ」、「音の高さ」、および「音色」という「音の3要素」を持ちますが、これらをコンピュータ処理によって自由に変えることができるのです。
音の大きさは、音波の振幅(音圧)が大きいほど大きくなります。
図2.3 音の大きさ
一方、人間の耳が感じる音の大きさの「相対値」は、音圧p(Pa: パスカル)を使って、20log p/p0 (デシベル)と表すことができます。ここで、p0は人が聞き取れる音圧の最小値(最小可聴レベル)であり、2×10-5(パスカル)です。
このように、人間の耳が感じる音の大きさの感覚は、音の大きさの物理量の対数にほぼ比例するので、最小可聴レベルp0に対する音圧pの比率を求め、 その対数(の20倍)を、「人間の耳が感じる音の大きさ」の定義としています。
音の高さは、1 秒間に音波の振動が何回繰り返されるかで決まります。
図2.4 音の高さ
たとえば、ピアノの音の波形では、繰り返しの最小単位となる波形が基音であり、この基音波形の周波数が音の高さとなります。オーケストラが演奏の前に音合わせをするとき、基準となる「ラ」の音は440Hzの周波数が基音です。
楽器の音程で、「オクターブ」という言葉がありますが、1オクターブ高い音とは、物理的には周波数が2倍の音です。同様に、Nオクターブ高い音というのは、周波数が2のN乗倍の音です。この1オクターブを、半音の間隔で12段階に分けたのが、「平均律」による音階となっています。
音色は、音の基音の波形とその振幅の変化(エンベロープ)により決まります。
エンベロープについては、バイオリンなどの連続音では、音の出だしが小さく、その後、ほぼ一定の大きさでなるのに対し、ドラムなどの衝撃音では、最初の音が大きく、その後、急激に減衰します。
図2.5 連続音と衝撃音
音の波形については、楽器によって形が大きく異なっていますが、これは、基音の周波数の整数倍の音(倍音あるいは高調波)を含んでおり、 その倍音の成分がどの程度強いかが楽器により大きく異なるからです。
人が目で見ることができる光(可視光)の波長は、780 nm(nmは10の-9乗メートル)から380 nmの範囲です。波長の長い方から赤、橙、黄、緑、青、藍、紫と変化します。赤より波長が長いのが赤外線であり、紫より波長が短いのが紫外線です。
人の目では、カメラでいえばレンズに相当する水晶体によって、光が網膜上に集められます。
網膜の上には、おもに明るさを感じる杆体(かんたい)と、おもに色を感じる錐体(すいたい)があります。錐体には主に赤い光に反応する錐体と、主に緑の光に反応する錐体、主に青い光に反応する錐体の3種類があります。
これら3種類の錐体からの信号の大小によって、人は色を感じるわけです。これは、逆に、赤と緑と青の3色の光を割合を変えて混合することで、任意の色を作り出すことができることを意味します。これが、赤(R: Red)と緑(G: Green)と青(B: Blue)の3色からなる「光の三原色」です。
図2.6 光の三原色
図2.6に示すように、赤と緑の光を同じ割合で混合することで黄色(Y)、同様に、緑と青でシアン(C: 青紫)、青と赤でマゼンタ(M: 赤紫)が作れ、赤と緑と青の3色の光を同じ割合で混合することで白を作ることができます。光の三原色では、色を重ねれば重ねるほど明るくなるので、加法混色と呼ばれます。
印刷の場合、色を重ねれば重ねるほど暗くなるので、減法混色と呼ばれます。印刷では、シアン(C: 青紫)、マゼンタ(M: 赤紫)、黄(Y)の3色が用いられ、これらを「色の三原色」と呼びます。
図2.7 色の三原色
シアン、マゼンタ、黄の3色は、それぞれ、赤、緑、青の「補色」になっています。ここで、「補色」とは、二つの色を組み合わせることで、白(または黒)を作り出せる色であり、光の三原色の図で白(色の三原色の図で黒)をはさんだ対角に位置する色は、互いに補色の関係にあります。
コンピュータ上で色を表現する場合、赤(R)、緑(G)、青(B)の強度をそれぞれ1バイト(8ビット=256段階)の2進数で表します。このため、一つの色を表現するためには、3バイト(8×3=24ビット)のデータが必要になります。
したがって、RGBの各要素の強度の組み合わせは、約1600万色 (256 × 256 × 256色) となります。これが、フルカラーのコンピュータで表現できる色の種類です。
また、色を表現し画像を構成する最小の単位は画素(ピクセル) (PICture ELement) と呼ばれ、この画素を2次元に数多く並べたものが画像です。
画像の精細さを表す指標として「解像度」があります。
図2.8 解像度の比較
解像度は、通常1インチ(約2.5センチ)あたりの画素数で示され、単位はdpi (dot per inch) です。解像度が高ければ高いほど、画像のきめが細かくなり画像はきれいになりますが、データ量は大きくなります。
たとえば、解像度が2倍になると、データ量は4倍(2×2)になり、きめが細かくなります。逆に、たとえば、解像度を1/16にすると、データ量は1/256 (1/(16×16))になり、きめが荒くなります。
画像は、テキストなどと比較してデータ量が大きくなります。さらに、画像サイズが大きくなればなるほど、そのデータ量はさらに大きくなります。
たとえば、横640画素、縦480画素の画像のデータ量は、3バイト×640×480=約0.9 MB(メガバイト)なり、テキストデータなどと比較してとても大きい値です。日本語のテキストデータが、1文字2バイトですので、0.9 MBの容量に約45万文字のテキストデータが記録できることを考えると、画像データ量の大きさが実感できます。
このため、画像を扱うときには、多くの場合データ量を小さくするための情報圧縮という処理が行われます。この情報圧縮には、圧縮前のデータを完全に復元できる可逆圧縮と、データ量は小さくできますが圧縮により元の画像と多少変わる部分が生じる非可逆圧縮と呼ばれる方法があります。
これらの圧縮技術については、「第3章 マルチメディア情報圧縮」で述べます。
圧縮方式の違いや、OSやアプリケーションソフトの違いによって、コンピュータ上で処理するためのさまざまな画像のフォーマット(形式)が存在します。たとえば、BMP(ビットマップ)はWindows OSで標準的に用いられるフォーマットですし、PICT(ピクト)はMac OSで標準で用いられるフォーマットです。
また、Webなどで広く使われているGIF(ジフ)やJPEG(ジェイペグ)は、非可逆な画像圧縮フォーマットとして多く使われます。このほか、新しい画像圧縮フォーマットとしてPNG(ピング)があり、256色とフルカラー、およびインタレース表示機能に対応しています。
各画素のRGBの値を書き換えることで、画像の明るさや色合いを変えることができます。たとえば、値αを (R, G, B) の値に加算して、(R+α, G+α, B+α) とすることで、画像を明るく変換することができます。
図2.9 明るさの比較
また、Rの値だけを (R+α, G, B) のように増加させれば、画像全体を赤っぽく変換することができます。
カラー画像からグレースケールの白黒画像を作るには、各画素のRGBの値を平均して (R+G+B)/3 と変換します。このとき、カラー画像で1画素のRGBで3バイトのデータが必要でしたが、グレースケールの白黒画像では、明るさ情報のみの1バイトデータでよいことになります。したがって、カラー画像を白黒画像に変換すると、データ量は1/3に小さくなります。
さらに、グレースケールの白黒画像を、各画素の明るさがある値以上なら白、ある値以下なら黒と変換することで、画像を白と黒の2値化画像に変換できます。2値化画像では、1つの画素を1ビットで表現できるため、必要なデータ量は、グレースケール(1バイト=8ビット)の1/8と小さくなり、もともとのカラー画像(3バイト=24ビット)と比較すると1/24に小さくなります。
画像の透明度を指定することで、半透明の画像を表現することができます。重なりを持つ二つの画像で、前面に表示された画像を半透明にすることで、背景の画像が透けて見えることになります。
図2.10 透明度の比較
半透明としたときの色は、透明度 β としたとき、半透明とする前面の画像の色 (R1, G1, B1)、背景画像の色 (R2, G2, B2) として、以下の式で表されます。
(1-β)×(R1, G1, B1)+β×(R2, G2, B2)
周辺の画素の色情報を使って、ある画素の色情報を変更することをマスク処理といいます。たとえば、このマスク処理を使って画像をぼかすことができます。具体的には、近隣画像のRGBの値を平均化することで、色の変化を滑らかにし、画像全体をぼやけたような表現にできます。
また、近隣画素の明るさの変化を調べ、明るさの変化が大きいエッジ部分を黒、それ以外の明るさの変化が小さい部分を白とすることで、エッジ抽出の処理ができます。
図2.11 エッジの抽出
「動画像」(映像またはビデオ)情報は、最も多くの情報内容を表現できる有効なマルチメディアの媒体です。その反面、最も多くのデータ量(情報量)を必要とするメディアです。通常、動画像情報には、それに関連した「音声情報」を含みます。
「動画像」は、実は、連続した「静止画」を切り替えて高速に表示しており、人の視覚に残像特性があるため、この高速な表示があたかもスムーズに動いている映像に見えるのです。映画の場合は1秒間に24枚(コマ)、通常のテレビでは1秒間に30枚(コマ)の連続した静止画を映し出しています。この1秒あたりの静止画の枚数(コマ数)を、「フレーム数」といいます。
パソコンで映像を扱うには、「ビデオキャプチャカード」が内蔵されているAV(オーディオ・ビデオ)パソコンを使います。AVパソコンの内蔵テレビチューナーや外部のビデオ機器からビデオデータを入力し、 ディジタルデータに変換して記録したり、内蔵DVDプレーヤの映像やネットワーク経由でダウンロードした映像データをディスプレーに容易に表示できます。
パソコンで扱える映像のフォーマットには、以下のような種類があります。
AVI は、マイクロソフト社のWindows OSの標準的な動画像(音声付き)ファイルフォーマットです。ファイル名の拡張子は、".avi"です。
MPEG は、ISOの国際標準方式である映像圧縮フォーマットです。MPEGファイルの作成には、情報圧縮のための「MPEGエンコーダソフトまたはハード」が必要です。MPEGファイルの再生には、「MPEGデコーダソフトまたはハード」が必要です。ファイル名の拡張子は、".mpg"や".mpeg"、そして".mp4"です。
Motion-JPEG は、フレーム内の情報圧縮に静止画圧縮の国際標準方式であるJPEGを使用する動画像圧縮フォーマットで、MPEGよりデータ量は多くなりますが圧縮時間は短くなります。
QuickTime は、マッキントッシュの標準的な動画像ファイルフォーマットです。ファイル名の拡張子は、 ".mov" か ".qt" です。