基本情報技術者 2013年 春期 午後 問01
カラー画像に関する次の記述を読んで、設問1〜3に答えよ。
赤、緑、青の色の光(以下、色という)を、光の3原色という。赤、緑、青の色を発光させて重ね合わせることによって様々な色を表現することができる。緑と青の色を重ね合わせるとシアンに、青と赤の色を重ね合わせるとマゼンタに、赤と緑の色を重ね合わせると黄に、赤緑青全ての色を重ね合わせると白になる。光の3原色のどれも発光していないと黒になる。光の3原色による色の表現を、図1に示す。ここで、図1中の記号は、表1に示す色を表す。

設問1:
問題文を見る ディスプレイにカラー画像を表示するために、1画素を3ビットで表現することにする。3ビットの先頭(左端)から各ビットに赤、緑、青の色の情報を順に割り当て、2階調(1のとき発光、0のとき非発光)で表現する。この3ビットのビットパターンで8色を表現することができる。色とビットパターンの対応を表2に示す。に入れる正しい答えを、解答群の中から選べ。

解答群
ア:011
イ:101
ウ:110
模範解答
a:イ
解説
解答の導き方
この問題では、マゼンタを表すビットパターンを考えます。
問題文には、3ビットを左から順に赤、緑、青に割り当て、「1のとき発光、0のとき非発光」とあります。つまり、ビットパターンの各位置は次の色に対応します。
また、本文には「青と赤の色を重ね合わせるとマゼンタに」とあります。マゼンタでは、赤と青を発光させ、緑は発光させません。
そのため、赤は「1」、緑は「0」、青は「1」です。左から並べると「101」になります。解答群では、これはイです。
誤りやすいポイント
- ビットの並び順を取り違えないようにします。この問題では、左から赤、緑、青です。
- マゼンタは赤と青の組合せです。緑も発光させる「111」は白になります。
- 2番目のビットが「1」の「110」は、赤と緑を発光させた色、つまり黄を表します。
FAQ
Q: なぜ緑のビットは「0」なのですか?
A: マゼンタは赤と青を重ね合わせた色で、緑は含まれないためです。この問題では、発光しない色を「0」で表します。
A: マゼンタは赤と青を重ね合わせた色で、緑は含まれないためです。この問題では、発光しない色を「0」で表します。
Q: 3ビットで、何色を表せますか?
A: 各ビットには「0」か「1」の2通りがあります。3つのビットの組合せは 通りなので、8色を表せます。
A: 各ビットには「0」か「1」の2通りがあります。3つのビットの組合せは 通りなので、8色を表せます。
関連キーワード: 光の三原色、加法混色、RGB、ビット、画素
設問2:
問題文を見る 次の記述中のに入れる正しい答えを、解答群の中から選べ。
ディスプレイに画像を表示するとき、画像データは、ビデオRAM(以下、VRAMという)と呼ばれるメモリに格納されている。
カラー画像データをVRAMに格納する方法の一つに、プレーンドアクセス方式がある。プレーンドアクセス方式では、VRAM上にディスプレイの画素数と同じ数のビットをもつプレーンという区分を複数用意する。各プレーンの先頭に位置するビットをディスプレイの最左上の画素に対応づけ、ディスプレイの左から右、上から下の画素へと順にプレーンのビットを割り当てる。赤、緑、青それぞれの色を2階調で表現する場合、色の情報を格納するために、VRAM上にプレーン1、プレーン2、プレーン3と呼ぶ、三つの区分を用意する。プレーン1、プレーン2、プレーン3のそれぞれを、赤、緑、青の色に割り当て、各プレーンの同じ位置のビットを取り出した3ビットで、1画素を表現する。
例えば、プレーン1の先頭ビットが0、プレーン2の先頭ビットが1、プレーン3の先頭ビットが1のとき、ディスプレイの最左上の画素の色はbとなる。
VRAMの内容が図2のとおりであった場合、各プレーンの先頭から数えて6番目のビットに対応するディスプレイの画素の色はcとなる。ここで、VRAMの内容は16進数で表記している。

解答群
ア:青
イ:赤
ウ:黄
エ:黒
オ:シアン
カ:白
キ:マゼンタ
ク:緑
模範解答
b:オ、c:ア
解説
解答の導き方
この問題では、各画素に対応する赤・緑・青のビットを読み取り、どの色が発光するかを考えます。
まず、「各プレーンの同じ位置のビットを取り出した3ビットで、1画素を表現する」とあります。プレーン1は赤、プレーン2は緑、プレーン3は青を表すので、3ビットは順に「赤・緑・青」の発光状態を示します。ビットが1ならその色が発光し、0なら発光しません。
bについて
最左上の画素では、プレーン1、プレーン2、プレーン3の先頭ビットが、それぞれ0、1、1です。
緑と青が発光する組合せはシアンです。したがって、bはオ:シアンです。
cについて
VRAM(Video Random Access Memory:画面に表示する画像データを一時的に置くメモリ)の内容は16進数で書かれています。各プレーンの値を2進数に直し、左端から順にビットを数えると、6番目のビットは次のとおりです。
青だけが発光するので、6番目のビットに対応する画素の色は青です。したがって、cはア:青です。
16進数を2進数に直すときは、16進数1桁を4ビットに置き換えます。図2の値を左から読み、各プレーンで6番目に当たるビットを確認します。画素の順序は、問題文にあるとおり左から右、上から下です。
誤りやすいポイント
- ビットの並びを、赤・青・緑の順だと取り違えないようにします。この問題ではプレーン1が赤、プレーン2が緑、プレーン3が青です。
- 1つの画素の色は、3つのプレーンの同じ位置のビットで決まります。別々の位置のビットを組み合わせてはいけません。
- 0が一つでもあると黒になるわけではありません。黒になるのは、赤・緑・青のすべてが0のときです。
- 16進数を2進数に直すときは、左端から数えます。16進数の桁をそのまま「1ビット」として数えないようにします。
FAQ
Q: なぜ各プレーンの同じ位置のビットを見るのですか?
A: 各プレーンの同じ位置が、ディスプレイ上の同じ画素に対応しているからです。赤・緑・青の情報をそろえて、その画素の色を決めます。
A: 各プレーンの同じ位置が、ディスプレイ上の同じ画素に対応しているからです。赤・緑・青の情報をそろえて、その画素の色を決めます。
Q: 1つの色のビットが0なら、その画素は黒ですか?
A: いいえ。その色だけが発光しないという意味です。ほかの色が発光していれば、その組合せで色が表現されます。
A: いいえ。その色だけが発光しないという意味です。ほかの色が発光していれば、その組合せで色が表現されます。
Q: 16進数1桁は、2進数にすると何ビットですか?
A: 4ビットです。たとえば、16進数の各桁を4ビットずつに置き換えると、プレーン上のビットを順に数えられます。
A: 4ビットです。たとえば、16進数の各桁を4ビットずつに置き換えると、プレーン上のビットを順に数えられます。
関連キーワード: 光の3原色、プレーンドアクセス方式、VRAM、ビット、16進数
設問3:
問題文を見る 次の記述中のに入れる正しい答えを、解答群の中から選べ。
設問2のプレーンドアクセス方式では、赤、緑、青それぞれの色に一つのプレーンを用意することによって、8色を表現することができた。一つの色に複数のプレーンを用意することによって、その色の階調数を増やすことができる。その結果、より多くの色を表現することができるようになる。
(1) VRAM上に五つの区分を用意し、各区分をプレーン1、プレーン2、…、プレーン5と呼ぶ。各プレーンの同じ位置のビットを取り出した5ビットで、1画素を表現する。プレーン1を赤に、プレーン2とプレーン3を緑に、プレーン4とプレーン5を青に割り当てる。
このとき、赤は2階調、緑と青はそれぞれd階調となり、この5ビットでe色を表現することができる。
(2) 縦600×横800画素のディスプレイに16色を表現するためには、少なくともfkバイトのVRAMが必要である。ここで、1kバイトは1,000バイトとする。
解答群
ア:2
イ:4
ウ:8
エ:16
オ:32
カ:60
キ:64
ク:120
ケ:128
コ:240
模範解答
d:イ、e:オ、f:コ
解説
解答の導き方
まず、各色に割り当てるビット数から、色ごとの階調数を求めます。階調とは、色の明るさの段階のことです。
プレーンは、画面の各画素(画面を構成する小さな点)について、色の情報を1ビットずつ記録する領域です。1ビットで表せる状態は「0」と「1」の2通りです。
(1) 赤にはプレーンを1つ割り当てているので、赤の階調数は2通りです。緑にはプレーンを2つ割り当てています。2ビットの組合せは「00」「01」「10」「11」の4通りなので、緑は4階調です。青も同じくプレーンが2つあるため、4階調です。したがって、dには4が入ります。
色全体の種類は、赤・緑・青それぞれの階調数を掛けて求めます。赤の2通りそれぞれに、緑の4通りと青の4通りを組み合わせられるため、色です。よって、eには32が入ります。
(2) 次に、画像を記憶するために必要なVRAM(Video Random Access Memory:画面に表示する画像データを一時的に記憶するメモリ)の容量を求めます。
16色を表すには、画素ごとに何ビット必要かを考えます。なので、1画素につき4ビットあれば16色を表せます。
画素数は、縦600画素と横800画素を掛けて求めます。
1画素あたり4ビットなので、必要なビット数は次のとおりです。
8ビットで1バイトなので、バイト数に直すには8で割ります。
問題文では1kバイトを1,000バイトとするため、kバイトです。したがって、fには240が入ります。
誤りやすいポイント
- 緑と青はそれぞれプレーンが2つあるため、階調数は2ではなく、です。
- 色全体の種類は、各色の階調数を足すのではなく、組合せの数として掛けます。
- 16色を表すのに必要なのは、1画素あたり16ビットではありません。4ビットで通りを表せます。
- VRAMの容量をバイトで求めるときは、ビット数を8で割ります。また、kバイトへの換算では、問題文にあるとおり1kバイトを1,000バイトとして計算します。
FAQ
Q: 1つのプレーンで表せる色の状態が2通りなのはなぜですか?
A: 1つのプレーンが持つ情報は1ビットだからです。1ビットの値は0か1のどちらかなので、2通りになります。
A: 1つのプレーンが持つ情報は1ビットだからです。1ビットの値は0か1のどちらかなので、2通りになります。
Q: なぜ16色を表すのに4ビット必要なのですか?
A: 1ビットでは2通り、2ビットでは4通り、3ビットでは8通りです。4ビットになると通りを表せるため、16色に足ります。
A: 1ビットでは2通り、2ビットでは4通り、3ビットでは8通りです。4ビットになると通りを表せるため、16色に足ります。
関連キーワード: 光の3原色、階調、ビットプレーン、画素、VRAM



