本文へスキップ

平成24年度 秋期 ITパスポート試験 問93

この問題の解説と、これまでの解答の記録です。

問93
頻出度★★☆

図1は,8×8画素の白黒の画像例である。この図に対して,白を0,黒を1として表すと,図2に示すように8ビットのビット列が8行あるディジタルデータとして,画像データを表現することができる。 文字データしか送れない通信で画像データを送ろうとする場合,画像データを文字データであるかのように変換して通信する必要がある。 また,文字データと比べてデータ量の大きい画像データを効率よく通信するために,データを圧縮して送るという工夫がなされる。図2のビット列を左上から順に見ていくと,0が10個続き,次に1が34個続き,その次に0が20個続いていることが分かる。この同じ値が続く個数のことをランレングスという。これを利用して画像データを圧縮する方法を考える。 次に示す画像データの表現方法は,画像データを文字データに変換するものである。図2の画像データの中の 9~12 ビット(2行目の先頭4ビット)のビット列は,どの文字として表現されるか。 〔画像データの表現方法〕 (1) 画像データのビット列を4ビットずつ取り出し,それぞれの先頭に4ビットの値“0100”を補い,8ビットで表現する。 (2) (1)で求めた各8ビットの値を JIS X 0201 の文字コードに対応する文字で表現する。01000000, 01000001, 01000010, …, 01001111 の8ビットの値は,JIS X 0201 の文字コード体系では,文字@, A, B, …, O に対応する。

出典 平成24年度 秋期 ITパスポート試験 問93
解説

問 93

  • 不正解ア

    @ は 01000000、すなわち下位4ビットが 0000 の場合に対応する文字である。図2 で 0000 になるのは 1行目 (1〜4 ビット目や 5〜8 ビット目) や 7行目・8行目のように白画素だけが並ぶ4ビットであり、9〜12 ビット目ではない。9〜12 ビット目を 0000 と読んでしまうのは、2行目が 00111111 で始まることを見落とし、1行目の値をそのまま答えてしまう誤りである。

  • 不正解イ

    B は 01000010 で、下位4ビットは 0010 である。図2 の 2行目先頭4ビットは 0011 であって 0010 ではない。@ を 0 番目として数えるところを、@ を 1 番目と数えて 1つ手前の文字を選んでしまう (0011 は十進3 なのに 3番目の B と数える) のが典型的な誤りで、対応表が 01000000 = @ から始まる点、つまり 0 から数え始める点の確認が必要である。

  • ウ

    正解 図2 は図1 の 8×8画素の画像を、白=0・黒=1 として 1行8ビット・全8行で表したビット列である。実際の並びは上から 00000000 / 00111111 / 11111111 / 11111111 / 11111111 / 11110000 / 00000000 / 00000000 となる。ビットは左上から順に数えるので、1行目が 1〜8 ビット目、2行目が 9〜16 ビット目であり、設問の 9〜12 ビット目 (2行目の先頭4ビット) は 0011 である。ここに表現方法 (1) を適用し、先頭に 0100 を補うと 01000011 という8ビットになる。表現方法 (2) は、01000000 を @ とし、値が1増えるごとに A・B・C…・O と進む対応を与えている。つまり下位4ビットを2進数として読んだ値が、@ から何文字先かを表す。0011 は十進の 3 なので、@ (0)・A (1)・B (2)・C (3) と数えて C になる。したがって正解はウ の C である。この方式は、0 と 1 の並びしか持たない画像データを、4ビットずつ区切って印字可能な文字に置き換えることで、文字データしか送れない通信路でも画像を送れるようにする考え方であり、Base64 などの実用的な符号化方式と同じ発想である。

  • 不正解エ

    O は 01001111 で、下位4ビットは 1111 である。図2 で 1111 となるのは 3〜5行目のように黒画素が連続する部分であり、9〜12 ビット目には該当しない。9〜12 ビット目を 1111 と読むのは、2行目冒頭の白画素2個 (00) を見落として黒だけの行と誤認した場合や、ビットの数え始めを 1行目ではなく 2行目としてずれて数えた場合に起こる誤りである。

ここがポイント
  • 白黒2値画像のディジタル化: 各画素を白=0・黒=1 の1ビットに対応させ、左上から行方向に並べるとビット列になる。「何ビット目」は画像全体を左上から通し番号で数えるので、8×8画素なら 9〜12 ビット目は2行目の先頭4ビットにあたる。
  • ビット列を文字に変換する符号化: 4ビットを取り出して固定の上位ビット (ここでは 0100) を付け、文字コード表の連続した文字に対応させる。01000000 = @ を 0 とすると、下位4ビットの2進数値がそのまま @ からのずれ (0=@, 1=A, 2=B, 3=C, …, 15=O) になる。文字しか送れない通信路で画像を送るための考え方で、Base64 と同系統である。
用語

解答の記録