1. ホーム
  2. algorithm

[解決済み] 最適な画像ダウンスケーリングアルゴリズムは何ですか?

2023-05-01 16:15:48

質問

ラスター画像をダウンサイジングするために使用できる最良のアルゴリズムを見つけたいのです。ベストとは、最も美しい結果を与えるものを意味します。私はバイキュービックを知っていますが、もっと良いものがあるのでしょうか? 例えば、Adobe Lightroomには、私が使っていた標準的なバイキュービックよりも良い結果を出す独自のアルゴリズムがあるという話を何人かの人から聞いたことがあります。残念ながら、私はこのアルゴリズムを自分のソフトウェアで使いたいので、Adobe の慎重に守られた企業秘密ではだめなんです。

追加されました。

Paint.NET をチェックしてみたところ、驚いたことに、画像をダウンサイジングするときはバイキュービックよりもスーパーサンプリングの方が良いようです。そうなると補間アルゴリズムが全く使えないのはどうなんだろうと思ってしまいます。

それはまた、私自身が発明した、しかし実装されたことのないアルゴリズムを思い出させました。これには名前もあると思いますが (このような些細なことが私一人の考えであるはずがないので)、一般的なものの中から見つけることはできませんでした。スーパーサンプリングが最も近いものでした。

このアイデアは、ターゲット画像の各ピクセルについて、それがソース画像のどこにあるかを計算するものです。おそらく、1 つまたは複数の他のピクセルと重なるでしょう。そして、これらのピクセルの領域と色を計算することが可能になります。そして、ターゲットピクセルの色を得るには、これらの色の平均を計算し、その面積を重みとして加えるだけです。つまり、ターゲット ピクセルが黄色のソース ピクセルの 1/3 と緑のソース ピクセルの 1/4 をカバーする場合、私は (1/3*yellow + 1/4*green)/(1/3+1/4) を得ます。

これは当然ながら計算量が多くなりますが、できるだけ理想に近づけるべきでしょう?

このアルゴリズムに名前はあるのでしょうか?

どのように解決するのですか?

残念ながら、オリジナルの調査へのリンクを見つけることはできませんが、ハリウッドの撮影監督がフィルムからデジタル画像に移行するにつれ、この質問がよく出てくるようになりました。 その結果、巨大な映画を見ているプロたちの間で、次のような意見が一致しました。 ミッチェル (高品質な Catmull-Rom としても知られています) がスケールアップに最適で シンク はスケールダウンに最適です。 しかし、sincは無限大に外れる理論的なフィルタなので、完全に実装することはできないので、実際に「sinc」が何を意味しているのかはわからない。 おそらくsincを切り捨てたものを指しているのでしょう。 Lanczos は、sinc を単に切り捨てたものを改善しようとするいくつかの実用的な変種の一つで、おそらく静止画を縮小するための最良のデフォルトの選択肢です。たとえば、線を維持するために線画を縮小する場合、花の写真を縮小するときには歓迎されないであろうエッジの維持を強調することを好むかもしれません。

さまざまなアルゴリズムの結果の良い例が、次のサイトにあります。 色のケンブリッジ .

の人々は fxguide をまとめて 多くの情報 スケーリングアルゴリズムに関する多くの情報(合成やその他の画像処理に関する他の多くの情報と一緒に)をまとめたもので、一見の価値があります。 また、テスト画像も含まれており、独自のテストを行う際に役立つかもしれません。

現在、ImageMagick には リサンプリングフィルタに関する広範なガイド があります。

画像を縮小することについては、理論的には情報を捨てているだけなので完璧に行うことができますが、拡大することについては、存在しない情報を追加しようとしているため、より多くの論争があるのは皮肉なことです。しかし、ランチョスから始めましょう。