1. ホーム
  2. c++

[解決済み] 画像ダウンサンプリングアルゴリズム

2022-02-27 03:50:57

質問

画像を元のサイズの半分に分割するために使用できる最適なリサンプリングアルゴリズムを教えてください。スピードが一番重要ですが、品質があまり落ちないようにしなければなりません。私は基本的にイメージピラミッドを生成しようとしています。

当初はピクセルを飛ばす予定でした。これはベストな方法なのでしょうか?私が読んだところでは、画素飛ばしで作られた画像はシャープになりすぎるそうです。どなたか試したことのある方、コメントお願いします。私の画像には、以下のような地図データが含まれています。 これを

解決方法は?

画素を飛ばすとエイリアシングが発生し、高い周波数の変化(明暗が交互に変わるなど)が低い周波数の変化(明暗が一定など)に変換されてしまうのです。

エイリアシングを起こさずに半分に縮小するには、2×2画素を1画素に平均化するのが最も手っ取り早い方法です。より洗練された縮小カーネルを使えば、より良い結果が得られますが、その分スピードが犠牲になります。

ここまでで説明したテクニックの例をいくつか紹介します。

1ピクセルおきにスキップする - 左側の凡例を見れば、結果があまり良くないことがわかります。ほとんど読めませんね。

2x2グリッドごとの平均化 - テキストがシャープで読みやすくなりました。

が提案するガウシアンブラー R. - は、少しぼやけますが、ある程度までは読みやすくなります。ぼかしの量を調整することで、さまざまな結果を得ることができます。

R. は、ガンマカーブが結果に影響を与えることについても正しいのですが、これは最も要求の厳しいアプリケーションにおいてのみ見られるはずです。私の例は、ガンマ補正なしで行われました。

編集する そして、より洗練された、しかし遅いカーネルの例として、次のようなものがあります。 Lanczos-5 線形(ガンマ調整されていない)色空間で実行されます。

色空間の変換のためか、レタリングのコントラストが低くなっています。 しかし、海岸線のディテールを見てください。