2017-01-31 14 views
0

png画像をgifに変換したい。このために、私はそのpngイメージから各ピクセルデータをHTMLキャンバスに再描画して読み込みます。次に、そのpng画像データからアルファチャンネルを削除しました。最後に、そのピクセル配列を256色のパレットに量子化しました。 gifイメージを作成するには、各ピクセルをパレットの最も近い色にマップするようになりました。私は、ピクセルとパレットの各色とのユークリッド距離を比較しました。これは非常に長い時間がかかり、私は非常に品質の悪いgifを得ています。画像の各ピクセルをgifパレットにマップする最適な方法は何ですか?各ピクセルのrgb値を定義済みのパレットにマップする方法は?

答えて

0

RGBスペースの代わりにHSVカラースペースを使用してください。

チェックアウトこの質問を:HSV-空間で

Calculate distance between colors in HSV space

A「距離」の色を比較する際に、より良いものを、私たちの目の対策「距離」として表しています。色の色相、彩度、および値の各部分に異なる重みを適用することで試してみることができます。 私たちの目には、色認識の場合と同じ明るさ/暗色認識のレセプターが20倍多くあるため、Value部分にわずかに高い重みを付けてみてください。

パフォーマンスパーツについては、各ピクセルは他のピクセルとは独立しているため、色の近似の操作を並列に実行することができます。

最後に:256色はかなり低いので、素晴らしい画像品質は期待しないでください。 16.700.000色をわずか256色に減らしています。そのことを念頭に置いてください。

+0

私はHSL HSVより優れたL * a * b *色空間を試しましたが、それでも良い結果は得られませんでした。 – gnikesh

関連する問題