跳到正文

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

这道题的解析和你的作答记录。

問94
頻出度★☆☆

図1は,8×8画素の白黒の画像例である。この図に対して,白を0,黒を1として表すと,図2に示すように8ビットのビット列が8行あるディジタルデータとして,画像データを表現することができる。 文字データしか送れない通信で画像データを送ろうとする場合,画像データを文字データであるかのように変換して通信する必要がある。 また,文字データと比べてデータ量の大きい画像データを効率よく通信するために,データを圧縮して送るという工夫がなされる。図2のビット列を左上から順に見ていくと,0が10個続き,次に1が34個続き,その次に0が20個続いていることが分かる。この同じ値が続く個数のことをランレングスという。これを利用して画像データを圧縮する方法を考える。 次に示す画像データの表現方法は,画像データの情報量を圧縮することを目的とする変換である。図2に示す画像データは,何ビットで表現されるか。 〔画像データの表現方法〕 (1) 画像データをランレングスで表現し,それらの値を最大15の範囲で区切っていく。例えば,ランレングスが20の場合は,15と5の二つのランレングスに分ける。 (2) 白と黒のランレングスをそれぞれ4ビットの2進数で表し,常に“白と黒”の8ビットの組みとして表現する。例えば,白のランレングスが15と5というように続く場合は,その間にランレングス0(2進数では0000)の黒を補い,白のランレングス15と黒のランレングス0の組みを作る。このように,白又は黒が続く場合は間に黒又は白,黒で始まる場合は先頭に白,白で終わる場合は末尾に黒のランレングス0を補うことで,常に白と黒の8ビットの組みを作る。

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

問 94

※ 编写解析时的验算未能完全确认公布答案;判定仍按 IPA 公布的答案。

  • 错误ア

    12 比特相当于既不分段也不做组合,直接把“白10・黑34・白20”这 3 个游程各用 4 比特表示,即 3×4=12。它既没有套用步骤(1) 的按最大 15 分段,也没有套用步骤(2) 的“始终是白和黑的 8 比特组合”。而且 34 和 20 本来就无法用 4 比特(最大 15)表示,所以这种数法本身就违反了题目给出的规则。

  • 错误イ

    24 比特是把“白10・黑34・白20”这 3 个游程不加分段、按 1 个游程=8 比特来数得到的 3×8=24。这是用另一种方法对同一幅图2 进行编码的问95 的答案,而不是本题的方法。本题在步骤(1) 中要按最大 15 分段,因此黑34 会拆成 15・15・4,白20 会拆成 15・5,游程本来就不止 3 个。

  • ウ

    正解 把图2 的比特串从最上面的行开始、按从左到右的顺序连成一串来读: 00000000 / 00111111 / 11111111 / 11111111 / 11111111 / 11110000 / 00000000 / 00000000 把 0 当作白、1 当作黑来数: ・0 有 10 个(第1行的 8 个 + 第2行开头的 2 个) ・1 有 34 个(第2行剩下的 6 个 + 第3~5行的 24 个 + 第6行开头的 4 个) ・0 有 20 个(第6行剩下的 4 个 + 第7、8行的 16 个) 10+34+20=64 个像素=8×8,正好吻合。也就是说游程长度是“白10 → 黑34 → 白20”。 步骤(1):把这些值按最大为 15 的范围进行分段。白10 保持原样,黑34 拆成 15+15+4,白20 拆成 15+5,于是得到 白10 / 黑15 / 黑15 / 黑4 / 白15 / 白5 这 6 个游程长度。 步骤(2):把它们始终整理成“白和黑”的 8 比特组合。开头是白色,所以不需要在开头补入白0。 第1组 白10・黑15 …… 是白→黑的排列,直接就能凑成一组 第2组 白0・黑15 …… 因为黑色继续出现,所以在中间补入游程长度为 0 的白 第3组 白0・黑4 …… 同样因为黑色继续出现,补入白0 第4组 白15・黑0 …… 因为白色继续出现,所以在中间补入游程长度为 0 的黑 第5组 白5・黑0 …… 因为以白色结尾,所以在末尾补入游程长度为 0 的黑 组合共 5 组。每组是 8 比特(白 4 比特+黑 4 比特),所以 5 组 × 8 比特 = 40 比特 因此正确答案是 ウ 的 40。 实际的比特串是 10101111 00001111 00000100 11110000 01010000 (白10=1010、黑15=1111、白0=0000、黑4=0100、白15=1111、黑0=0000),确实是 40 比特。原来的 64 比特缩短成了 40 比特,这一点正说明了这种方法起到了压缩的作用。

  • 错误エ

    48 比特是把步骤(1) 分段之后得到的 6 个游程长度(白10 / 黑15 / 黑15 / 黑4 / 白15 / 白5)各自当作一个独立的组合,机械地数成 6×8=48。但是步骤(2) 补入游程长度 0 的填充,只限于“同一种颜色继续出现时(在中间补入相反颜色的 0)”“以黑色开头时(在开头补入白0)”“以白色结尾时(在末尾补入黑0)”这三种情况,在白→黑自然切换的地方并不需要填充。本题中开头的 白10 和 黑15 正好就是这种白→黑的排列,所以这 2 个会合并成 1 组。正是少了这一组,组数才是 5 而不是 6,答案也就是 40 而不是 48。

ここがポイント
  • 游程编码法(连长压缩)是把相同值连续出现的长度归并起来、用“颜色和个数”来表示的无损压缩。首先要把图像数据整理成白色和黑色的游程序列(本题中是 白10 → 黑34 → 白20),这是出发点,能否从图中准确读出这一点就是胜负所在。
  • 这类考查规则的题目不靠死记硬背,而是按顺序机械地套用题目给出的步骤。(1) 按最大 15 分段,确定游程的个数;(2) 根据“始终是白和黑的组合”这一约束,在同色继续 / 以黑开头 / 以白结尾的情况下补入游程长度为 0 的填充,数出组数;最后计算 组数 × 8 比特。
用語
解答問94ウ
练这一题

作答记录