Ikegami TECH
2024.11.13
Ikegami TECH vol.37 画像圧縮Part1 ~静止画を圧縮する技術~
画像圧縮Part1 ~静止画を圧縮する技術~
昨今、私達は日常的にスマートフォンで画像のやり取りや動画視聴を行っていますが、これを支えている「画像圧縮技術」について意外と知っている方は少ないかと思います。今回は画像や映像を蓄積・伝送する時に意識せずに利用している「画像圧縮技術」の概要について、2回に分けて解説します。
第一回は画像圧縮の必要性と静止画での画像圧縮技術の概要を解説します。
【画像圧縮は何故必要なのか】
理由を単純に言えば、画像・映像情報は情報量(データ量)が多いため、そのまま蓄積・伝送するためには負荷(コストと時間)がかかるためです。図1に例を示します。
(a)は1200万画素のデジタルカメラの圧縮前のデータ量、(b)はフルHDの1秒間のデータ量を示しています。仮に32GByteのメモリへの記録を想定した場合、(a)は約939枚、(b)は約3分しか記録が出来ません。また、通信の実効速度が100Mbpsの環境では、(a)の1枚の画像を送るのに約3秒、(b)の1秒間の動画を送るのに約15秒を要する計算になります。
つまり、画像・映像情報を簡便に活用するためには画像圧縮(データ量削減)は必要不可欠な技術になります。
【画像を圧縮するとは?】
さて、画像はどのようにして圧縮(データ量削減)されているのでしょうか。図2で考えてみましょう。
図2の右側には写真上の(a)~(d)で示す画像の拡大図と黄色い直線上の明暗の変化(輝度変化)をグラフ化したものを示しています。この直線上の明暗の変化を一般的に周波数になぞらえて空間周波数と呼んでいます。
(a)は晴天の空の画像で濃淡が無く塗りつぶされたような画像で、グラフはほぼフラットでDC成分のみです。人はこのような画像は一目で明るさや色を認識できます。
(b)の展望デッキの画像はどうでしょうか。右の拡大画像で小さな縦長の形状が円形に並んでいることがわかります。グラフでもこの形状の濃淡が細かく変化していることがわかり、空間周波数として高いことがわかります。しかし、左側の写真のように遠目で見た場合、細かいところはわからずに全体的にグレーに見えるのではないでしょうか。人は空間周波数が非常に高い画像では濃淡を認識するのが困難になるからです。
また、(c)と(d)は塔脚部の三角形に組まれている鉄骨の構造が、左の遠目に見た写真の(c)では何となく、(d)でははっきり見て取れます。 (b)、(c)、(d)の右の輝度変化のグラフからも、空間周波数が低くなるに連れ画像の認識がしやすくなっていることがわかります。
ここからわかるとおり、人の視覚情報の認識は、画像の空間周波数の低い部分は認識しやすく、高い部分は認識されにくい特性があります。画像圧縮は、この特性を利用して人に認識されにくい画像の空間周波数の高い成分(情報)を削減することで実現しています。
【画像圧縮の流れ】
画像圧縮は基本的に次の3つのステップで行われます。
① 冗長度抑制
② 量子化
③ エントロピー符号化
人に認識されにくい画像の空間周波数の高い成分(情報)を削減する処理は①と②のステップで行われます。ここでは代表的な画像圧縮のJPEG(Joint Photographic Experts Group)方式を例に概要を解説します。JPEGでは画像全体を8×8画素のブロックに分割し、ブロックごとに①と②の処理が行われます。
なお、「③エントロピー符号化」は文字列などのデータ圧縮に使われる可逆圧縮(復元時に完全に元のデータに戻せる)の手法で、画像圧縮に特化した手法では無いため今回の解説では省略します。
①冗長度抑制
冗長度抑制は、画像がどのような空間周波数成分から構成されているかを分析する処理になります。この処理には、空間周波数成分の要素の大きさが、低い周波数から高い周波数の順番に並んで表せる「離散コサイン変換」(DCT:Discrete Cosine Transform)が利用されています。
図2では水平方向の空間周波数をグラフとして示していましたが、JPEGでは8×8画素の2次元ブロックの空間周波数分析を行いますので、2次元の離散コサイン変換(以降DCTとして表現)を用います。
図3右上の「DCT空間周波数分析の画像」(※1)にDCT結果の8×8行列の各要素が示す64個の空間周波数成分の並びを示します。左上が一様で平坦な画像で空間周波数が最も低い画像を、右下が画素単位に白黒が反転した市松模様で最も空間周波数が高い画像の要素を示しています。
DCTはこの様に、8×8の画像をここに示した64種類の空間周波数成分へ置き換える(分解する手法)になります。
図3に画像の一部ブロックの輝度値とそのDCT結果を示します。左の原画像ブロックの輝度の濃淡がわかりやすいように大きい値を白、小さい値を緑で示しています。また、右のDCT結果は大きい値(絶対値)ほど濃い赤で示しています。DCT結果を図3の空間周波数成分の並びと比較して分析すると水平方向は低い周波数成分、垂直方向は中程度から低い周波数成分に集中していることがわかります。
画像圧縮は、この空間周波数成分が集中している低周波成分を残して、残りの高周波成分を削減することで実現します。
具体的な高周波成分の削減は次の量子化のステップで行われます。
②量子化
量子化では、DCT処理で得られた空間周波数成分の情報から高い周波数成分を”0”に丸め込み情報量を削減します。
量子化の処理は図4に示すように、単純にDCT結果を事前に用意している8×8の定数で割り算を行い商の値(小数点以下は切り捨て)に変換します。この割り算に使用する8×8の定数を量子化テーブルと呼び、周波数の高い右下に向かって大きな値(値が大きいほど濃い青)としています。これにより、量子化処理の結果(量子化後情報)からわかるとおり、高い周波数成分の情報が"0"(赤枠で囲った黄色)となり、この”0”の情報をデータとして削減することで画像のデータ量を圧縮しています。
ここで、情報を削減した図6の量子化後情報ブロックを復元してみましょう。
復元は、量子化後情報に量子化テーブルを掛けて、逆離散コサイン変換(IDCT)を行います。
図5に復元した画像ブロックと、原画像ブロック(図3)との比較を示します。右端に原画像と復元画像ブロックの差分を示しています。差分の値が大きいほど濃い赤で示しています。この差分が画像歪として現れます。
図5の例では差分値が全体的に小さいこともあり、視覚的に原画像のブロックとの濃淡を比較しても大きな差は感じられないのではないかと思います。
このように、画像圧縮は人の視覚特性を巧みに利用して、見かけ上、画像歪がわからないようにデータ量を圧縮しています。
次回は、動画像の圧縮技術について解説します。
※1:Discrete cosine transform
https://en.wikipedia.org/wiki/Discrete_cosine_transform