複数のJPEG画像を1つの大きな画像としてまとめて保存する際に、保存容量を減らすという問題を検討しています。基本的な直感は、画像が(同じ場所または同じ時点で撮影されたもののような)類似点を持つ傾向があり、この類似性を利用して空間を節約できるかどうかです。JPEG画像圧縮
全体的な流れは以下のとおりです。入力JPG
画像 - >似たRGB
タイルを一緒に再編成 - - >再びJPG
形式に変換>各画像はRGB
画像タイルに変換します。当然、画像を取り込むときには、の逆処理が必要になります。
タイル再構成の類似度としてY成分のDC係数を使用して、10画像に対して約8%のスペース節約を得ました。私が100枚の画像に対してこれを行うと、節約は約3%に減少します。
タイル再編成後の節約、つまりJPEGエンコード処理のどの部分がこの画像タイルの再編成を利用するのですか?
は、他のいくつかのあります:代わりにY成分のDC係数の、あなたがそれについて考えることができ、いくつかの他のメトリックより良い
改訂JPEGエンコードによって悪用されますがあります JPG以外の画像フォーマットは、この種の類似性を利用することができます複数の画像を集約するとより良いですか?例えばPNGのように?これは可能でしょうが - あなたは次の画像の縁が無い不連続と完全に一致する場合は特に(お互いに類似の領域を置くとき、
まず:あなたがメリットが表示されますどこ
ありがとう、それはたくさんの意味があります!私は、libjpegを使ってエンコードとデコードを行います。 JPEGは8×8マクロブロック内でDCTを行うので、タイル間の類似度(マクロブロックよりも大きい)はおそらくあまり役に立ちません。しかし、私は、隣接するマクロブロックのDCT係数が比較的に符号化されていると思います。これは、このタイルの再編成によってある程度向上する可能性があります。私は私の質問を改訂しました。どうぞご覧ください。 – user655617
うれしいことを明確にするのに役立ちます。はい、libjpegはJPEG規格のIJGのリファレンスJFIF実装です。デルタエンコーディング(隣接マクロブロックの間で)を使用してDCT係数を覚えていません。 AFAIRでは、すべてのマクロブロックが係数の単一の8x8マトリックスになり、デシメーションされます(これを保存するために必要なビット数を減らすために分割されます)。これは損失圧縮の「損失」が発生する場所です) -zagファッション。この順序付けにより、0の長いランが生成されます。これは、ランレングスエンコーディングによって効率的に圧縮されます(17の0を格納する代わりに、17,0を格納します)。 –