本文へ移動
目次へ
写真は小さくしても、どうして絵が残るの?:内容をイメージした挿絵
コンピューター

写真は小さくしても、どうして絵が残るの?

同じ写真なのに、送るファイルの大きさが違うのはなぜ? 繰り返しをまとめる方法と、細かな違いを省く方法を比べよう。

まず、ひとことで

圧縮は絵をぎゅっと押すことではなく、絵を表すデータの書き方を工夫すること。完全に戻せる方法と、戻せない情報を省く方法があるよ。

写真の大きさには、二つの意味がある

画面いっぱいの写真を送ろうとすると、ファイルが大きいと言われることがあるね。でも、表示する縦と横の長さを変えなくても、送るデータを小さくできる場合があるんだ。この工夫が「圧縮」だよ。紙を小さく折る話とは少し違う。

デジタルの写真は、たくさんの小さな点に色を割り当てたものとして表せる。この点を画素というよ。画素の数は、絵の縦横の細かさに関係する。一方、ファイルの大きさは、その絵を記録するために使うデータの量なんだ。

同じ座席表でも、一人ずつ名前を書く方法と、同じ班の人をまとめて書く方法では紙の量が違うよね。絵も、何を記録し、どんな約束で読むかによってデータ量が変わる。まずは、画素を減らすことと、書き方を工夫することを分けてみよう。

同じ色が続いたら、まとめて書こう

白黒の帯を想像してね。左から白が六つ、黒が二つ、白が四つ並んでいるとする。一つずつ色を十二回書くかわりに、「白を六つ、黒を二つ、白を四つ」と書ける。読む人がこの約束を知っていれば、元の並びを間違いなく作れるよ。

このように、同じものが続く長さを記録する考え方をランレングス符号化という。ここでは圧縮の入口として、色と個数で説明しているよ。実際には色も数もビットで表し、どこで区切るかという約束も必要になる。文字の数だけで実際のファイルサイズは決まらないんだ。

元の並びへ正確に戻せる圧縮を「可逆圧縮」と呼ぶ。可逆とは、逆向きにもたどれるという意味だよ。省略して見える白い点も、個数の記録にちゃんと残っている。情報を捨てるのではなく、重なった説明をまとめたわけだね。

白六個、黒二個、白四個の帯を、色と個数の三つの組へまとめ、元に戻す模式図
同じ並びを、短い約束で伝える

色と個数で表す説明用の例だよ。実際のファイルには、数や区切りを記録する分も必要。PNGやJPEGの内部処理そのものではないよ。

出典資料に基づきEggplanetが作成した模式図

どんな並びでも、短くなるの?

では白、黒、白、黒と交互に並んだ帯ならどうかな。「白一つ、黒一つ」を何度も書くので、まとめる利点が少ないね。個数を付け足したために、記録が長くなることさえある。圧縮は、どんなデータも必ず同じ割合で縮める魔法ではないんだ。

もっと複雑な方式では、何度も現れる並びを見つけ、前に出てきた場所を指すなどの工夫も使う。どの工夫が効くかは、絵の模様や元の保存方法によって違う。すでに十分に圧縮されたファイルをさらに圧縮しても、小さくなりにくいことがあるよ。

PNGは可逆圧縮を使う画像形式の一つ。ただし、さっきの色と個数だけで保存しているわけではないよ。PNGへ保存する前に色数を減らしたなら、その段階の変更までは取り戻せない。「可逆」が守るのは、圧縮の入口に渡されたデータなんだ。

似た色をまとめたら、何が消える?

もう一つ、少し違う方法を考えよう。明るさが百、百一、百二という三つの点を、全部百一として記録する。これは仕組みを考えるための仮の例で、特定の画像形式そのものではない。近い明るさなので、小さく表示すると違いに気づきにくいかもしれないね。

けれども、全部百一になった記録だけでは、最初の点が百だったか百二だったかは決められない。このように、元のデータの一部を戻せなくする圧縮を「非可逆圧縮」という。少しの違いを省いて、もっと少ない量で絵を伝える方法だよ。

写真でよく使われるJPEGの代表的な圧縮方法も非可逆だよ。細かな変化をどれくらい残すかを調整できる。実際の処理には、明るさの変化を別の表し方に変える計算などが含まれる。なお、JPEGという規格の仲間すべてが非可逆というわけではないんだ。

可逆圧縮では元の値に戻り、非可逆の丸めでは百、百一、百二がすべて百一になって元を決められない比較図
元の値へ、正確に戻れるかな?

数値は明るさを想像するための仮の例。似た値を一つにすると、どれだったかは記録だけでは決められない。実際のJPEG処理は簡略化しているよ。

出典資料に基づきEggplanetが作成した模式図

小さくできたら、いつでも成功?

たとえば、遠くの山の写真を小さな画面で見るなら、細かな違いをいくらか省いても十分楽しめるかもしれない。でも、細い文字の書かれた図では、少しのにじみが読みづらさにつながる。絵の用途が変わると、残したい情報も変わるんだ。

「元と同じに見える」と「元とまったく同じデータ」は、別の判断だよ。前者は表示する大きさや、見る人にも左右される。後者は画素ごとの値など、何を比べるかを決めて調べられる。どちらを目指すかを先に考えるのが大切だね。

非可逆で保存した写真を開き直して、また非可逆で保存すると、設定や処理によってさらに情報が変わることがある。元の写真を残しておけば、別の用途に合わせて作り直せるよ。送信用の軽い絵と、編集の出発点になる絵を分けると考えやすい。

小さい画面用にするのは、別の工夫

縦横の画素を減らす「縮小」も、データ量を減らす助けになる。でも、それは同じ画素の並びを短く記録する可逆圧縮とは違う。細かい点を少ない点に置き換えるので、元の細部が残らないことがあるんだ。

四つの点を一つの点にまとめる場面を、方眼紙で想像してみよう。四つが同じ色なら、まとめても印象は変わりにくい。四つのうち一つだけ細い線の一部だったら、その線が薄くなったり消えたりするかもしれないね。

画像を比べるときは、縦横の画素数、ファイルのデータ量、実際の見え方を別々に見よう。小さくなった理由が、圧縮方法の変更なのか、画素数の変更なのかを区別すると、何を得て何を省いたか説明できるよ。

たとえば同じ写真の二つの版を比べるなら、画面では同じ幅にそろえてみよう。一方だけ大きく拡大すると、違いが目立つ条件まで変わってしまう。文字のふちや、空のように色がゆっくり変わる場所を選ぶと、何が残ったか落ち着いて観察できるよ。

どっとと考えよう:戻せる手紙を作れる?

紙に白黒の点を十二個並べ、色と個数の手紙だけを友だちに渡してみよう。相手が同じ並びを描けたら、読む約束が伝わった証拠だね。次は、最初の色を書き忘れたらどうなるか考えよう。個数が正しくても、色の順番を決められなくなるよ。

今度は三種類の灰色で描いた帯を、二種類だけの灰色へ置き換えてみよう。完成した帯だけから、最初の三種類を全部当てられるかな。答えが一通りに決まらないなら、何かの情報を省いたと分かるね。これは写真の圧縮を考えるための紙上の模型だよ。

最後に、家族の写真、文字の多い図、点の色を数える研究用の画像の三つを比べてみよう。どこまで変わってよいか、理由も添えて話してね。圧縮の上手さは小ささだけではなく、必要な情報をちゃんと届けられるかでも決まるんだ。

ことばのメモ

画素
デジタル画像を構成する小さな点。色や明るさの値を持つよ。
可逆圧縮
圧縮の入口に渡したデータを、正確に戻せる圧縮。
非可逆圧縮
データの一部を省くため、元とまったく同じには戻せない圧縮。
ランレングス符号化
同じ値が続く部分を、その値と続く長さで表す方法。

もとになった資料・もっと知りたい人へ

下記の資料をもとに、説明と考える問題を独自に構成しています。外部資料には英語のページもあります。どっとの画像は案内用のイラストで、観測写真や科学的な図ではありません。

分かりやすくするために、説明を短くしたり、たとえ話を使ったりしています。まちがいを見つけたらお問い合わせへお寄せください。制作方法は編集方針、いっしょに読むときのヒントは保護者・先生へで紹介しています。