JPEG規格上で最も圧縮した写真が記録できる自作デジカメ 35
ストーリー by hylom
そんな仕様なのか 部門より
そんな仕様なのか 部門より
Raspberry PiのカメラモジュールAPI「picamera」では、JPEG保存時の画質設定を一般的なソフトウェアよりも大幅に低く設定できるそうだ。これを利用して、最低品質で撮影した画像を保存するカメラを作り撮影を行った話がデイリーポータルZで紹介されている。
記事では、モバイルバッテリーとRaspbery Pi、小型液晶ディスプレイ、カメラモジュールなどで作った自作カメラで撮影を行っている。撮影された画像はドット絵のようで、ぎりぎり撮影対象が認識できるかできないかというレベルになっているのが面白い。
DCT (スコア:2)
結局、JPEGの品質って、DCTのAC成分データをどれだけ捨てるかって事なので、究極にはdc成分しか残さないような話なのでは。マクロブロックが8x8なので、ある意味縮小画像保存しているような。
Re:DCT (スコア:1)
その一歩手前。DC成分から最も周波数が高い成分までを一律で0か1かに落としてる。
リンク先の画像を拡大して見ると分かるけど、8x8のモザイクだけじゃなく、四角にx字とか、縦縞とか、横縞とかのブロックが並んでる。
なかなか侮れない良記事。
Re: (スコア:0)
同感。JPEGの規格知らないけど、最大の係数一個残すなら、多くの場合DC、まれに市松模様が残るだけなんじゃ無いかと思いながら見てた。
JPEG 規格の出力はバイト単位出力 (スコア:0)
として規定されているので、極端な話、DC 成分だけにして実質1ビットにまで圧縮しても、8 bit単位に丸められるわけだ。
そこに「最低品質圧縮」の余地がある。
最終出力ファイルサイズに変化が出ない範囲で、どれだけ高周波を残すように DCT を設計するか。だな。
Re: (スコア:0)
JPEGは色変換→DCT→量子化→ジグザグスキャンと打ち切り→ハフマン符号化、
って流れだったと思うけど、後ろにハフマン符号化が居るなら
8bitワードで2符号(情報量1bitワード)にしたらちゃんとその2符号にだけ符号語割り当てるよ。
「フロッピー1枚に約2時間の映画を圧縮して入れた結果wwwww」が分かる動画 (スコア:2)
https://nlab.itmedia.co.jp/nl/articles/1311/20/news104.html [itmedia.co.jp]
もう6年経つのか。
まあみんな大好きSERNのLHCなら36バイトまで圧縮 [google.com]できるんだが
タイルベースぽい (スコア:1)
こんな圧縮されても「しがらき」や神社の紋が判別可能なのが興味深いな。
JPEG化の前にアンシャープとか処理すればさらに主観的画質が向上しそう?
タイルベース、キャラクタベースで描画できそうな。
つか、昔のゲームで数種のタイルで頑張って実写風の表現をしていたのって、原理はこういう事だったんだな。
プチコンとかで応用できないかな
まだ再圧縮できた件 (スコア:1)
「どーん! これが最低画質のJPEG写真だ」の画像(約32KB)をMac用のImageOptimというソフトの最低品質で再圧縮してみたら約3KBのもっとグダグダな画像ができた件。ネタにマジレスな様相ではありますが、下を見ればまだ下があったりするんじゃないでしょうか。
Re:まだ再圧縮できた件 (スコア:2)
多分、それはメタデータを消しただけと思われますよ。
元画像はexifだけで25kBはありますからね。カラープロファイルもついてるし。
Re: (スコア:0)
違うでしょ。
圧縮とは言っても情報削って小さくしてるだけだから、
小さくなったデータから、さらに情報削ればもっと小さくなるよねってだけの話でしょ。
Re: (スコア:0)
画像そのものの情報を削っているかどうか、の話。この手のお遊びで「メタデータまで含めたファイルサイズ」を基準にすると、メタデータには無関係な凄く長いポエムなんかを仕込んだりもできるから、いくらでもファイルサイズを水増しできるので、遊びの方向性が変わってしまう。
Re:まだ再圧縮できた件 (スコア:2)
本当に画像情報削ってないのかな、と思って少し調べました。
ImageMagickで convert -stripすると3274バイトになります。
一方、ImageOptim(初めて知った)の最低画質で作ったファイルは2795バイト
ちなみに、最高画質でもファイルサイズは2795バイトです
ImageMagickの出力結果方はxxdでバイナリを眺める限り、もう少し削れそうです。
ImageOptimにはないJPEGマーカーがついてる感じなので。
JPEGのデータ開始マーカーのオフセットを調べると実際の画像データサイズがわかりそうですが、
ちょっと息抜きの範疇超えそうなのでこの辺で勘弁してください。
# バイナリエディタの使い方を忘れてしまった
Re:まだ再圧縮できた件 (スコア:1)
(時系列的にこの書き込みの方がおそらく先ですが)
記事に訂正入ってます(のでこの後コメント入れる人注意)
> ※初出時に「通常のJPEG写真の半分以下になった」と書いていましたが、実際にはJPEGファイル内に24キロバイトのサムネイル画像が埋め込まれていました。それを除くと、正味の圧縮データは約6キロバイトです。お詫びして訂正します。
Re: (スコア:0)
サムネの方が大きい、ってのが笑う所だなw
Re: (スコア:0)
まさにアレゲ
Re: (スコア:0)
心臓がある側の法がちょっと大きいっていうのは聞いたことある。
Re: (スコア:0)
この自作カメラなる「カメラ的な何か」も容積としてはほぼバッテリーというのがまた。
メガドライブ (スコア:0)
夢見館の物語を思い出す
Re: (スコア:0)
あれ、俺いつの間にコメント書いてたっけ?
Re: (スコア:0)
わかるわ。この色数の少なさがすごくメガドラっぽい。
jpegの極限ってこうなるんだなあ。
APIによる話か? (スコア:0)
何かのライセンスに抵触するのかね
ユニシス特許を回避する無圧縮GIFみたいな
ラズパイだってLinuxだよ (スコア:0)
「パラメータにはまだまだ余裕があると言っても、そんな圧縮ができるソフトなんて存在しない。もうJPEG圧縮ソフトを自作するしかないかなぁ」って、画像をラズパイの convert -quality 1 コマンドで変換したらダメなのでしょうか?
試しにやってみたconvertの結果より、確かに画質が悪いような気はするけど…
Re: (スコア:0)
「-quality 1と指定されたときにどう動作するか?」はconvertを作ってる人のさじ加減次第。これ以下の設定を使う奴は居ないだろう、という程度に手加減されてる可能性もある。ちらっとマニュアルを見てみたけど、量子化テーブルがちゃんと最低に落ちるかどうかは不明。
というか、量子化テーブルを直接指定のものにするオプションがあったような気がして探してみたけど、-defineオプション [imagemagick.org]の
>jpeg:q-table=table
>q-table=quantization-table.xml Custom JPEG quantization tables.
この辺がそうかも。こいつらで全部1なりにしてやれば、再現できるんじゃないかな。
Re: (スコア:0)
これを言うと記事中の Picamera の API だって実装者の加減次第だから、論点は
ではなくて、「(いかにも技術的な必然性によって)自作してるがそもそも必然性があるのか。ImageMagick で十分では」という意見だと思うが。
ところでタイトルの「最も圧縮した」も曲者だね。
「品質を下げた」なら理解できるが、mozjpeg [github.com] 類の話かと思った。
Re:ラズパイだってLinuxだよ (スコア:1)
ふつーソフトから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の記事として)面白い結果が得られた」ものだと思う。
Re: (スコア:0)
元コメに、
>試しにやってみたconvertの結果より、確かに画質が悪いような気はするけど…
とあったので、「convertよりも、Picameraの方がより荒くなるパラメータになっているのかな?」という疑問だと思ったので、画質が違うならこういう理由、と挙げたんだけど。別のコメントによると、同じっぽいので、「気のせい」って結論みたいですね。
Re: (スコア:0)
GIMPのExport optionでQualityを0、EXIFとかの付加情報を全て無しにすると10M画素の画像が142.5kB
保存された画像は、まぁ記事のままです。
1画素カメラ (スコア:0)
この記事とは真逆で、1画素の素子でもマスクを変化させて複数回撮影すると画像を再現できます。
ベル研究所、レンズのない1画素カメラ実現。ピンぼけもない
https://www.gizmodo.jp/2013/06/post_12461.html [gizmodo.jp]
JPEG2000はどうなったん? (スコア:0)
現在のJPEG圧縮よりさらに数倍圧縮できて画質は高画質という
ぽしゃったん?
Re:JPEG2000はどうなったん? (スコア:2)
要は可逆圧縮に近い不可逆圧縮が必要な分野で生き残ってます。
JPEG2000の敗因は,JPEGより画質はよいけど,低画質小容量ファイルが作りにくいことと,処理が若干重たいことですかね。
Re: (スコア:0)
JPEG2000の敗因は、当時発売されていたデジカメが
記録・再生フォーマットとして採用しなかったことと
Windows(IE)が標準で再生に対応しなかったことが一番の理由です。
Macは対応した(今もしてる)んですけどね。
デジカメがJPEG2000を採用しなかった理由は以下です。
1. JPEG2000圧縮アルゴリズムはJPEG圧縮に比べて複雑なので、圧縮ハードウェアの回路規模が大きくなりすぎる
→カメラのコストUP & 消費電力UP
2. JPEG2000圧縮は処理が重いので、圧縮しながら連写しようとするとJPEG圧縮による連写と比べて連写速度が遅くなる
Re:JPEG2000はどうなったん? (スコア:2)
ユーザーからすると、メリットを感じない規格でもあったというのが正直なところ…
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の方が軽いもんな…
Re: (スコア:0)
HEIFはこないだ初めてデジカメでも採用されたので、もちっと頑張ってくれることを期待します。
お願い。
なんか難しそうな気がするけど……。
Re: (スコア:0)
HEIFは権利がカオスなので望み薄。
各色ビット深度が9bit以上の画像フォーマットは必要とされてるはずだけど、全然定着しないわな…。
権利カオスのH.265に対しロイヤリティーフリーのAV1があるけど、AV1の静止画版としてAVIFがあるそうなので、こっちが普及すると皆幸せかもね。
Re: (スコア:0)
気付かずにあちこちで使ってるんですよ。
例えばpdfとか。