デジタル画像の可逆圧縮、「ランレングス(連長)圧縮」の簡単な具体例と説明、圧縮率の計算~高校『情報Ⅰ』
2022年度から全面的にスタートした高校の新必修科目、『情報Ⅰ』。先日アップした、音声のデジタル化の記事に続いて、今日は画像の可逆圧縮について書いてみよう。
綺麗なカラー画像(24ビット、約1678万色など)というものは、そのままデジタル表現するとデータ量が多くなってしまう。だから普通は、「圧縮」することになる。
ネット上で綺麗な写真などによく使われてるのが、JPEG圧縮。かなりデータ量を減らせるし、圧縮率90%くらいなら見た目も元の画像データとほとんど変わらない。しかし、JPEG圧縮画像から元の画像に戻すことはできない。非可逆圧縮(不可逆圧縮)だから。
☆ ☆ ☆
それに対して、元に戻せる可逆圧縮もあって、その1つがランレングス圧縮。これは、同じ色が連続してる時に、その色と連続の長さとで表す方法。「ランレングス」を直訳すると、「連続の長さ」になるから、例えば日本語では「連長圧縮」とも呼ばれてる。
最大手の東京書籍の教科書を見ると、わりと大きめ(16ピクセル×16ピクセル)のリンゴの画像でかなり短く説明してたが、データ量の変化まで完全に理解・計算できる高校生は少ないと思う。
見方を変えると、そこまで新カリキュラムは要求してないのかも知れない。だから、短い説明に留めてるとか。ただ、大人の私自身は面白かったので、もっと簡単な例でやや詳しく解説してみよう。
個人的には、ランレングス圧縮の画像を人間が手作業で作るのは大変だということが実感できただけでも意味はある。むしろ、元のオリジナル画像の方が、遥かに簡単に作れたのだ。あと、「ロジック」(論理)と呼ばれてるお絵描きパズルと似てることに気付いた。試しに後で、パズルの方もやってみるかも知れない。
☆ ☆ ☆
まず、極端に簡単な例から始めよう。
上図は、横1列、6マスの画像で、後で見るリンゴの画像の下の段の左側だけ取り出したもの。マス目は、ピクセル(画素)と呼ばれる。左の2ピクセルが白、その右の4ピクセルが赤になってるから、ランレングス圧縮では、白2赤4のように表現する。図にすると、次の通り。黒い斜線部は、何も記録されてない部分で、教科書では「データ消滅分」と書かれてた。
では、データ量はどう変化したのか、計算してみよう。色は、後でリンゴ全体を見る時に4色使うので、1ピクセルあたり2ビット(2×2)の情報量と考える。例えば、白は00、赤は01、グレーは10、黄色は11。2ケタの2進数で表せる。
元の画像は6ピクセルだから、(元のデータ量)=2×6=12ビット。
一方、圧縮後は、色が2ビットで同じ。連続の数は、最大で6ピクセル(1~6)だから、それぞれ3ビット(2×2×2)。上の例だと、2ピクセルは、010。4ピクセルは、100。3ケタの2進数で表せる。
だから、(圧縮後のデータ量)=(2+3)+(2+3)=(2+3)×2=10ビット。
∴(圧縮率)=10/12≒83%。
あまり圧縮されてないが、それほど色が連続してないし、可逆圧縮だから仕方ない。
ちなみに、数学的にはまぎらわしい言い方だが、「圧縮率の%の数字が大きい」ことを、「圧縮率が低い」と言うらしい。つまり、あまり圧縮されてないという意味。逆に、「圧縮率の%の数字が小さい」ことを、「圧縮率が高い」と言う。かなり圧縮されてるという意味。
だから教科書にも、「一般に可逆圧縮より非可逆圧縮のほうが圧縮率が高い」と書いてた。私は一読して間違ってると思ってしまったが、「高い」=「小さい」と読みかえるのなら正しい。例えば、ランレングス圧縮よりJPEG圧縮のほうが圧縮率が高い。
☆ ☆ ☆
続いて、64ピクセル(8×8)で描いたリンゴのデジタル画像。ちなみに、グレーはヘタの部分、黄色は光沢がある場所を表してる。
上図をランレングス圧縮すると、下図のように表せる。色と数の組合せは全部で28セットになる。横のピクセル数は10まで増えてしまうが、問題ないはず。教科書の図では増えてないが、それは同じ色の連続数が多い図にしてあるから。
では、データ量の計算。(元のデータ量)=2×64=128ビット。
(圧縮後のデータ量)=(2+3)×28=140ビット。
色の連続が少ないので、圧縮後の方がデータ量が増えてしまってる。
(圧縮率)=140/128≒109パーセント
理論的には最初から予想できてたが、すぐに実例と出会うとは思わなかった。試しにGoogleで、「ランレングス圧縮 データ 増える」を検索してみると、その欠点を指摘する記事が色々とヒットした。
日本語ウィキペディアの「連長圧縮」の項目にも、欠点が指摘されて、その解決方法の説明も書かれてた(PackBits法など)。ここでは扱わない。
☆ ☆ ☆
最後に、意外と圧縮される例も示しとこう。4色で16ピクセル(4×4)の格子状の画像。
ランレングス圧縮では、下の図のように表せる。
これなら、かなり圧縮されてるように見える。圧縮後の計算では、横が4ピクセルだから、連続の数が3ビットではなく2ビットになることに注意。1ピクセルなら00、2ピクセルなら01、3ピクセルなら10、4ピクセルなら11と表せる。結局、色で2ビット、連続の数でも2ビット使う。色と数の組合せ(2+2ビット)が、計4セット。
(元のデータ量)=2×16=32ビット
(圧縮後のデータ量)=(2+2)×4=16ビット
(圧縮率)=16/32=50%
☆ ☆ ☆
以上から、単純なランレングス圧縮は、色の連続が多い単純な画像の時だけ上手く行くことが分かる。
あらためて、教科書の図が大きめに作られてた理由が理解できた。要するに、色の連続を増やして、本当に圧縮されるように配慮した図を掲載してるのだ。確かに、1つだけ例を挙げるのなら、成功例を挙げる方が教育的だろう。一般的な高校生にとっては。
それでは今日はこの辺で。。☆彡
(計 2442字)
| 固定リンク | 0
「数学」カテゴリの記事
- パズル「ナンスケ」の解き方、考え方10~難易度4、ニコリ作、朝日新聞be、2023年2月25日(2023.02.26)
- パズル「絵むすび」26、解き方とコツ、考え方(難易度3、ニコリ作、朝日新聞be、2023年2月11日)(2023.02.12)
- 1~7の数字を並べた整数A、Bの和が9723になるのは何通りか(高校・場合の数)~開成中2023年入試、算数・問題5の解き方(2023.02.04)
- 桜(ソメイヨシノ)の開花予想と、気温の時間積分(1次関数、2次関数)~2023年共通テスト数学ⅡB・第2問〔2〕(2023.01.29)
- パズル「推理」、小学生向け7、カンタンな解き方、表の書き方(難易度5、ニコリ作、朝日be、23年1月28日)(2023.01.28)
「教育」カテゴリの記事
- 1~7の数字を並べた整数A、Bの和が9723になるのは何通りか(高校・場合の数)~開成中2023年入試、算数・問題5の解き方(2023.02.04)
- 桜(ソメイヨシノ)の開花予想と、気温の時間積分(1次関数、2次関数)~2023年共通テスト数学ⅡB・第2問〔2〕(2023.01.29)
- トランプの4種の絵柄(ハート・スペード・クラブ・ダイヤ)を並べた暗号と解読方法~2023年共通テスト・情報関係基礎・第2問(2023.01.26)
- バスケットボールのシュートの軌道(リングへの放物線)、高身長プロ選手と普通女子~23年共通テスト数学ⅠA・第2問〔2〕(2023.01.17)
- 誰が、何に、どれほど飢えているのか?~梅崎春生『飢えの季節』(初出『文壇』2巻1号、2023年・共通テスト・国語)(2023.01.15)
「情報」カテゴリの記事
- Python(パイソン)入門1~人気プログラミング言語を高校教科書副教材(東京書籍)とオンライン環境Bit Arrowで簡単に(2023.02.28)
- トランプの4種の絵柄(ハート・スペード・クラブ・ダイヤ)を並べた暗号と解読方法~2023年共通テスト・情報関係基礎・第2問(2023.01.26)
- Excel(表計算ソフト)を用いたシミュレーションの具体例、乱数による円周率の近似値計算~高校『情報Ⅰ』(2023.01.13)
- 令和3年度、文科省・情報活用能力調査の調査問題例と正答(小中高、4年1~2月)、感想とレビュー(2022.12.28)
- デジタル画像の可逆圧縮、「ランレングス(連長)圧縮」の簡単な具体例と説明、圧縮率の計算~高校『情報Ⅰ』(2022.12.13)
コメント