魔法の数が正確に1:2で、たとえば1:1.1や1:20ではないように見える理由を誰かがまだ説明しているかどうかはわかりません。
1つの理由は、多くの典型的な場合、デジタル化されたデータのほぼ半分がノイズであり、ノイズは(定義により)圧縮できないことです。
私は非常に簡単な実験をしました:
私は灰色のカードを取りました。人間の目には、灰色の厚紙の無地の、中立的な部分のように見えます。特に、情報はありません。
そして、通常のスキャナーを使用しました。これは、写真をデジタル化するために人々が使用する可能性のある種類のデバイスです。
灰色のカードをスキャンしました。(実際、グレーのカードをハガキと一緒にスキャンしました。ハガキは正常性チェックのためにあり、スキャナーソフトウェアが機能のないグレーのカードを見たときに自動的にコントラストを追加するなど、奇妙なことをしないようにしました。)
グレーのカードの1000x1000ピクセルの部分を切り取り、グレースケール(ピクセルあたり8ビット)に変換しました。
私たちが今持っているものは、あなたが勉強するときに何が起こるかのかなり良い例でなければなりません 、晴れた空など、スキャンした白黒写真の特徴のない部分。原則として、見るべきものはまったくないはずです。
ただし、倍率を大きくすると、実際には次のようになります。
はっきりと見えるパターンはありませんが、均一な灰色ではありません。その一部はグレーカードの不完全性が原因である可能性が最も高いですが、そのほとんどはスキャナーによって生成されたノイズ(センサーセル、アンプ、A / Dコンバーターなどの熱ノイズ)であると想定します。ガウスノイズによく似ています。これがヒストグラムです(対数スケール):
ここで、各ピクセルのシェードがこの分布からiid を選択したと仮定した場合、エントロピーはどれくらいありますか?私のPythonスクリプトは、ピクセルごとに最大3.3ビットのエントロピーがあることを教えてくれました。そして、それは多くのノイズです。
これが本当に当てはまる場合、使用する圧縮アルゴリズムに関係なく、1000x1000ピクセルのビットマップは、最良の場合、412500バイトのファイルに圧縮されることを意味します。そして実際に何が起こるのか:432018バイトのPNGファイルを手に入れました。
少し一般化すると、このスキャナーでスキャンする白黒写真に関係なく、次の合計が得られるようです。
- 「有用な」情報(ある場合)、
- ノイズ、約 ピクセルあたり3ビット。
圧縮アルゴリズムが有用な情報を1ピクセルあたり<< 1ビットに圧縮したとしても、1ピクセルあたり3ビットの非圧縮性ノイズが残っています。また、非圧縮バージョンは8ビット/ピクセルです。そのため、圧縮率は、何をしても1:2の大まかな範囲になります。
別の例として、過剰に理想的な状態を見つけようとします。
- 最も低い感度設定(最小ノイズ)を使用した最新のDSLRカメラ。
- 灰色のカードの焦点が外れたショット(灰色のカードに目に見える情報があったとしても、それはぼやけてしまいます)。
- コントラストを追加せずに、RAWファイルを8ビットグレースケールイメージに変換します。市販のRAWコンバーターで典型的な設定を使用しました。コンバーターは、デフォルトでノイズを削減しようとします。さらに、最終結果を8ビットファイルとして保存しています。つまり、本質的には、生のセンサー読み取り値の最下位ビットを破棄しています。
そして、最終結果は何でしたか?スキャナーから得たものよりもずっと良く見えます。ノイズはそれほど目立たず、見られるものはまったくありません。それにもかかわらず、ガウスノイズがあります。
そしてエントロピー?2.7ビット/ピクセル。実際のファイルサイズは?1Mピクセルの場合、344923バイト。いくつかの不正行為を伴う、本当に最良のシナリオでは、圧縮率を1:3に押し上げました。
もちろん、これらはすべてTCSの研究とはまったく関係ありませんが、実際のデジタル化されたデータの圧縮を実際に制限するものを覚えておくことは良いことだと思います。より手の込んだ圧縮アルゴリズムと生のCPUパワーの設計の進歩は役に立たないでしょう。すべてのノイズをロスレスで保存したい場合、1:2をはるかに上回りません。