web-dev-qa-db-ja.com

高品質のpngに基づいてアニメーションGIFからアーティファクトを削除するにはどうすればよいですか?

256色に制限されているため、あまりできないことはわかっていますが、大きなアニメーションGIFの中には非常に高品質に見えるものがあることに気づきました。秘密は何ですか(私はGimpを使用しています)?色の特別な削減または幸運であり、ビデオは適切ですか(おそらく低色)?

2
j riv

これはあなたが見ているものではないかもしれませんが、広く信じられていることに反して、GIF画像は256色以上になる可能性があります。 GIFファイルには多くのフレームを含めることができます。これがアニメーションGIFの仕組みです。より複雑なビデオ表現のように、一連のフレームを(タイミング情報とともに)保存できます。ここで用語が間違っているかもしれませんが、個々の画像フレームは全体の画像フレームよりも小さい場合があります。たとえば、すべてのアニメーションが画像全体の象限で発生する場合、50×50フレームのシーケンスで100×100の画像を作成できます。これにより、実際にアニメーション化されるのがごく一部である場合に、画像の静的部分n回複製する必要がなくなるため、ファイルサイズが削減されます。

「落とし穴」は、各フレームが独自のカラーマップを持つことができるということです。タイミング情報について触れたことを覚えていますか? GIFファイルには、画像空間全体を並べて表示し、さまざまなカラーマップを持ち、遅延がゼロで表示される多くのフレームを含めることができます。申し立てられた例は次のとおりです。

 GIF file (image) with thousands of colors

Cyde Weysのブログ からダウンロードしました。注:過去に、一部の画像ソフトウェア、特にアニメーションをサポートしていないプログラムは、そのようなファイルの最初のフレームのみをレンダリングするため、目的の表示が生成されないことを確認しました。

ああ!最初に読んだとき、あなたのGIFが明らかにアニメーション化されているという事実を見逃しました。さて、私が上で書いたことはまだ当てはまります。たとえば、アニメーションの更新ごとに6つのフレームのシーケンスがある場合があります(たとえば、30ミリ秒ごと)。1つは30ミリ秒の遅延があり、5つは0ミリ秒の遅延があります。これらはアニメーション領域の2×3のタイリングを形成する可能性があり、各タイルに256色、合計1536(6×256)色を含めることができます。

2
Scott

【自己回答】

見つけた。 「インデックスモード」に変換するときは「ディザリング」と呼ばれます。例えばGimpでは、256色へのインデックス作成を行うときに、いくつかのアルゴリズムを使用してディザリングするオプションもあります。

スムーズな移行を実現します。

見た目は悪くなりますが、オリジナルの範囲が十分に制限されている場合(たとえば、ほとんどがダークブラウンである場合)、ほぼ同じように見える可能性があります。しかし、それが非常に鮮やかで複雑な場合(たとえば、すべての基本色を複雑に含む場合)、表示されます。

1
j riv

あなたは実際の例を提供しなかったので、誰も具体的な詳細を提供することはできず、一般的なガイドラインのみを提供しました。さらに、参照している実際のアーティファクトを見ずに、問題が発生している可能性があるため、問題を推測することしかできません。

アニメーションGIFは特別なものではなく、すばやく連続して表示されるGIFの山にすぎません。

発生するアーティファクトは、GIF形式が提供するカラーパレットが限られていることが原因である可能性があります。ご存知のように、ディザリングを使用して8ビット画像の見栄えを良くすることができますが、それはオプションの1つにすぎません。グラフィックプログラムに応じて、提供するオプションが多いものと少ないものがあり、オプションの多くは設定とモードが異なります。私が何年も前に使用したアニメーションGIFプログラムの1つは、ImageAlchemyでした。さまざまな方法で、さまざまなアルゴリズムを使用して、パレットをスムーズ、ブレンド、ディザリング、クラッシュなどするための多数のオプションがありました。

発生している可能性のある別のアーティファクトは、ファイルよりもビューアが原因である可能性があります。一部のアニメーションGIFプログラムには、超圧縮アニメーションGIFの機能があり、各フレームから変更されていないピクセルをすべて削除して、変更された部分のみを保存します。これは通常、ファイルを小さくする効果があるだけですが、一部のビューアプログラムでは問題が発生し(GIF89a形式に完全には準拠していません)、アニメーションの表示が不十分です。

当然のことながら、最良の結果をもたらす方法は、特定の画像に完全に依存します。直接パレットマッピングでうまくいく画像もあれば、ディザリングが必要な画像もあれば、より高度な色変換が必要な画像もあります。

GIF固有のオプションに加えて、より高品質のGIF画像を取得するためにできるもう1つの方法は、画像編集プログラムを使用して手動で8ビットカラーに縮小することです。そうすれば、フォーマット変換/保存中に行われる縮小では不十分な場合があるのに対し、プログラム内のカラーツールはより高い精度とより多くのオプションを提供できるため、色変換をより適切に制御できます。

0
Synetech