パスワードを忘れた? アカウント作成
14067190 story
グラフィック

JPEG規格上で最も圧縮した写真が記録できる自作デジカメ 35

ストーリー by hylom
そんな仕様なのか 部門より

Raspberry PiのカメラモジュールAPI「picamera」では、JPEG保存時の画質設定を一般的なソフトウェアよりも大幅に低く設定できるそうだ。これを利用して、最低品質で撮影した画像を保存するカメラを作り撮影を行った話がデイリーポータルZで紹介されている

記事では、モバイルバッテリーとRaspbery Pi、小型液晶ディスプレイ、カメラモジュールなどで作った自作カメラで撮影を行っている。撮影された画像はドット絵のようで、ぎりぎり撮影対象が認識できるかできないかというレベルになっているのが面白い。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by jzkey (47353) on 2019年12月11日 18時19分 (#3730141)

    結局、JPEGの品質って、DCTのAC成分データをどれだけ捨てるかって事なので、究極にはdc成分しか残さないような話なのでは。マクロブロックが8x8なので、ある意味縮小画像保存しているような。

    • by Anonymous Coward on 2019年12月11日 20時27分 (#3730219)

      その一歩手前。DC成分から最も周波数が高い成分までを一律で0か1かに落としてる。

      リンク先の画像を拡大して見ると分かるけど、8x8のモザイクだけじゃなく、四角にx字とか、縦縞とか、横縞とかのブロックが並んでる。

      なかなか侮れない良記事。

      親コメント
    • by Anonymous Coward

      同感。JPEGの規格知らないけど、最大の係数一個残すなら、多くの場合DC、まれに市松模様が残るだけなんじゃ無いかと思いながら見てた。

    • として規定されているので、極端な話、DC 成分だけにして実質1ビットにまで圧縮しても、8 bit単位に丸められるわけだ。
      そこに「最低品質圧縮」の余地がある。

      最終出力ファイルサイズに変化が出ない範囲で、どれだけ高周波を残すように DCT を設計するか。だな。

      • by Anonymous Coward

        JPEGは色変換→DCT→量子化→ジグザグスキャンと打ち切り→ハフマン符号化、
        って流れだったと思うけど、後ろにハフマン符号化が居るなら
        8bitワードで2符号(情報量1bitワード)にしたらちゃんとその2符号にだけ符号語割り当てるよ。

  • https://nlab.itmedia.co.jp/nl/articles/1311/20/news104.html [itmedia.co.jp]

    パブリックドメイン化した映画「ローマの休日」の動画データを、フロッピーディスクにも収まる1.38Mバイトにまで圧縮した強者が、その画面の様子をニコニコ動画にアップしています。2013年

    もう6年経つのか。

    まあみんな大好きSERNのLHCなら36バイトまで圧縮 [google.com]できるんだが

  • by minet (45149) on 2019年12月11日 20時36分 (#3730220) 日記

    こんな圧縮されても「しがらき」や神社の紋が判別可能なのが興味深いな。
    JPEG化の前にアンシャープとか処理すればさらに主観的画質が向上しそう?

    タイルベース、キャラクタベースで描画できそうな。
    つか、昔のゲームで数種のタイルで頑張って実写風の表現をしていたのって、原理はこういう事だったんだな。
    プチコンとかで応用できないかな

  • 「どーん! これが最低画質のJPEG写真だ」の画像(約32KB)をMac用のImageOptimというソフトの最低品質で再圧縮してみたら約3KBのもっとグダグダな画像ができた件。ネタにマジレスな様相ではありますが、下を見ればまだ下があったりするんじゃないでしょうか。

    • by tmt (39622) on 2019年12月12日 0時19分 (#3730313)

      多分、それはメタデータを消しただけと思われますよ。
      元画像はexifだけで25kBはありますからね。カラープロファイルもついてるし。

      親コメント
      • by Anonymous Coward

        違うでしょ。
        圧縮とは言っても情報削って小さくしてるだけだから、
        小さくなったデータから、さらに情報削ればもっと小さくなるよねってだけの話でしょ。

        • by Anonymous Coward

          画像そのものの情報を削っているかどうか、の話。この手のお遊びで「メタデータまで含めたファイルサイズ」を基準にすると、メタデータには無関係な凄く長いポエムなんかを仕込んだりもできるから、いくらでもファイルサイズを水増しできるので、遊びの方向性が変わってしまう。

          • by tmt (39622) on 2019年12月12日 17時14分 (#3730733)

            本当に画像情報削ってないのかな、と思って少し調べました。
            ImageMagickで convert -stripすると3274バイトになります。
            一方、ImageOptim(初めて知った)の最低画質で作ったファイルは2795バイト
            ちなみに、最高画質でもファイルサイズは2795バイトです

            ImageMagickの出力結果方はxxdでバイナリを眺める限り、もう少し削れそうです。
            ImageOptimにはないJPEGマーカーがついてる感じなので。
            JPEGのデータ開始マーカーのオフセットを調べると実際の画像データサイズがわかりそうですが、
            ちょっと息抜きの範疇超えそうなのでこの辺で勘弁してください。

            # バイナリエディタの使い方を忘れてしまった

            親コメント
    • by Anonymous Coward on 2019年12月12日 11時36分 (#3730500)

      (時系列的にこの書き込みの方がおそらく先ですが)
      記事に訂正入ってます(のでこの後コメント入れる人注意)

      > ※初出時に「通常のJPEG写真の半分以下になった」と書いていましたが、実際にはJPEGファイル内に24キロバイトのサムネイル画像が埋め込まれていました。それを除くと、正味の圧縮データは約6キロバイトです。お詫びして訂正します。

      親コメント
      • by Anonymous Coward

        サムネの方が大きい、ってのが笑う所だなw

        • by Anonymous Coward

          まさにアレゲ

          • by Anonymous Coward

            心臓がある側の法がちょっと大きいっていうのは聞いたことある。

          • by Anonymous Coward

            この自作カメラなる「カメラ的な何か」も容積としてはほぼバッテリーというのがまた。

  • by Anonymous Coward on 2019年12月11日 18時49分 (#3730161)

    夢見館の物語を思い出す

    • by Anonymous Coward

      あれ、俺いつの間にコメント書いてたっけ?

    • by Anonymous Coward

      わかるわ。この色数の少なさがすごくメガドラっぽい。
      jpegの極限ってこうなるんだなあ。

  • by Anonymous Coward on 2019年12月11日 20時21分 (#3730214)

    何かのライセンスに抵触するのかね
    ユニシス特許を回避する無圧縮GIFみたいな

  • by Anonymous Coward on 2019年12月11日 20時25分 (#3730218)

    「パラメータにはまだまだ余裕があると言っても、そんな圧縮ができるソフトなんて存在しない。もうJPEG圧縮ソフトを自作するしかないかなぁ」って、画像をラズパイの convert -quality 1 コマンドで変換したらダメなのでしょうか?

    試しにやってみたconvertの結果より、確かに画質が悪いような気はするけど…

    • by Anonymous Coward

      「-quality 1と指定されたときにどう動作するか?」はconvertを作ってる人のさじ加減次第。これ以下の設定を使う奴は居ないだろう、という程度に手加減されてる可能性もある。ちらっとマニュアルを見てみたけど、量子化テーブルがちゃんと最低に落ちるかどうかは不明。

      というか、量子化テーブルを直接指定のものにするオプションがあったような気がして探してみたけど、-defineオプション [imagemagick.org]の

      >jpeg:q-table=table
      >q-table=quantization-table.xml Custom JPEG quantization tables.

      この辺がそうかも。こいつらで全部1なりにしてやれば、再現できるんじゃないかな。

      • by Anonymous Coward

        convertを作ってる人のさじ加減次第

        これを言うと記事中の Picamera の API だって実装者の加減次第だから、論点は

        量子化テーブルがちゃんと最低に落ちるか

        ではなくて、「(いかにも技術的な必然性によって)自作してるがそもそも必然性があるのか。ImageMagick で十分では」という意見だと思うが。

        ところでタイトルの「最も圧縮した」も曲者だね。
        「品質を下げた」なら理解できるが、mozjpeg [github.com] 類の話かと思った。

        • ふつーソフトからJPEGの読み書きには libJPEG (つまりIJGのリファレンス)を使うし、そうじゃなくてもqualityパラメータを指定するならIJGのリファレンスに合わせるものだから、quality指定時の、利用環境の違いによる画質の違いは考えなくてもいいかと。ImageMagickはlibJPEG(もしくはその眷属)をリンク。picameraはソースを見たところハードウェアでJPEGエンコードしておりその詳細は未公開だが、APIの引数仕様を見る限りではquality指定時はIJGのtableに合わせるみたい。

          で、今回の自作カメラは、picameraでquality=1を指定してるから、ImageMagickで quality=1を指定したのと結果はほぼ同じじゃないかな。中間画像を介さない分、picameraの方がちょっと画質は上か?

          今回の件は「ImageMagickによる後処理でも要件は実現出来たが、quality=1画質で撮影できるデジカメをでっち上げたことで、より(デイリーポータルZの記事として)面白い結果が得られた」ものだと思う。

          親コメント
        • by Anonymous Coward

          元コメに、

          >試しにやってみたconvertの結果より、確かに画質が悪いような気はするけど…

          とあったので、「convertよりも、Picameraの方がより荒くなるパラメータになっているのかな?」という疑問だと思ったので、画質が違うならこういう理由、と挙げたんだけど。別のコメントによると、同じっぽいので、「気のせい」って結論みたいですね。

    • by Anonymous Coward

      GIMPのExport optionでQualityを0、EXIFとかの付加情報を全て無しにすると10M画素の画像が142.5kB
      保存された画像は、まぁ記事のままです。

  • by Anonymous Coward on 2019年12月11日 22時14分 (#3730281)

    この記事とは真逆で、1画素の素子でもマスクを変化させて複数回撮影すると画像を再現できます。

    ベル研究所、レンズのない1画素カメラ実現。ピンぼけもない
    https://www.gizmodo.jp/2013/06/post_12461.html [gizmodo.jp]

  • by Anonymous Coward on 2019年12月12日 10時43分 (#3730465)

    現在のJPEG圧縮よりさらに数倍圧縮できて画質は高画質という
    ぽしゃったん?

    • 映画館上映用のフォーマットとかで生き残ってます。
      要は可逆圧縮に近い不可逆圧縮が必要な分野で生き残ってます。
      JPEG2000の敗因は,JPEGより画質はよいけど,低画質小容量ファイルが作りにくいことと,処理が若干重たいことですかね。
      親コメント
      • by Anonymous Coward
        ちょっと違います。
        JPEG2000の敗因は、当時発売されていたデジカメが
        記録・再生フォーマットとして採用しなかったことと
        Windows(IE)が標準で再生に対応しなかったことが一番の理由です。
        Macは対応した(今もしてる)んですけどね。

        デジカメがJPEG2000を採用しなかった理由は以下です。

        1. JPEG2000圧縮アルゴリズムはJPEG圧縮に比べて複雑なので、圧縮ハードウェアの回路規模が大きくなりすぎる
              →カメラのコストUP & 消費電力UP

        2. JPEG2000圧縮は処理が重いので、圧縮しながら連写しようとするとJPEG圧縮による連写と比べて連写速度が遅くなる
        • 元中の人参考になります。

          ユーザーからすると、メリットを感じない規格でもあったというのが正直なところ…
          1752x1168 の画像をPhotoshopで保存

          EPS 21.3MB
          PSD 7MB
          TIFF 4.5MB(LZW)
          JPF 3.5MB(無劣化)
          JPF 1.8MB(50%)
          JPG 1.3MB(11)

          JPEG2000の画質50%とJPEGの品質11と画質の差はほとんど感じないけど、
          JPEGの方が軽いもんな…
          親コメント
        • by Anonymous Coward

          HEIFはこないだ初めてデジカメでも採用されたので、もちっと頑張ってくれることを期待します。
          お願い。
          なんか難しそうな気がするけど……。

          • by Anonymous Coward

            HEIFは権利がカオスなので望み薄。

            各色ビット深度が9bit以上の画像フォーマットは必要とされてるはずだけど、全然定着しないわな…。
            権利カオスのH.265に対しロイヤリティーフリーのAV1があるけど、AV1の静止画版としてAVIFがあるそうなので、こっちが普及すると皆幸せかもね。

    • by Anonymous Coward

      気付かずにあちこちで使ってるんですよ。
      例えばpdfとか。

typodupeerror

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

読み込み中...