web-dev-qa-db-ja.com

最高の画像ダウンスケーリングアルゴリズムは何ですか(品質に関して)?

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

追加:

Paint.NETをチェックしましたが、驚いたことに、画像のサイズを小さくするときは、スーパーサンプリングがバイキュービックよりも優れているようです。それは、補間アルゴリズムがどうにかする方法であるかどうか疑問に思います。

また、自分で「発明」したアルゴリズムを思い出しましたが、実装していませんでした。名前もあると思いますが(この些細なことは私だけでは考えられません)、人気のあるものの中から見つけることができませんでした。スーパーサンプリングが最も近いものでした。

アイデアはこれです-ターゲット画像のすべてのピクセルについて、ソース画像のどこにあるかを計算します。おそらく、1つ以上の他のピクセルをオーバーレイします。これらのピクセルの面積と色を計算することが可能になります。次に、ターゲットピクセルの色を取得するには、これらの色の平均を計算し、その領域を「重み」として追加します。したがって、ターゲットピクセルが黄色のソースピクセルの1/3、緑色のソースピクセルの1/4をカバーする場合、(1/3 *黄色+ 1/4 *緑)/(1/3 + 1/4)。

これは当然、計算量が多くなりますが、可能な限り理想に近いはずです。

このアルゴリズムの名前はありますか?

68
Vilx-

残念ながら、元の調査へのリンクを見つけることはできませんが、ハリウッドの映画撮影技師が映画からデジタル画像に移行したため、この質問がたくさん出てきたので、誰か(おそらくSMPTE、おそらくASC)がたくさんのプロの撮影監督を集めて、彼らに映像を見せましたさまざまなアルゴリズムを使用して再スケーリングされました。その結果、巨大な映画を見ているこれらのプロにとって、コンセンサスはMitchell(高品質のCatmull-Romとしても知られる)がスケールアップに最適で、sincはスケールダウンに最適です。しかし、sincは無限に広がる理論的なフィルターであり、完全に実装することはできません。したがって、sincが実際に何を意味するのかわかりません。おそらく、sincの切り捨てられたバージョンを指します。 Lanczosは、sincの切り捨てを改善しようとするsincのいくつかの実用的なバリアントの1つであり、おそらく静止画像を縮小するための最適なデフォルトの選択肢です。しかし、いつものように、それは画像とあなたが望むものに依存します:例えば、線画を縮小して線を保存することは、例えば、花の写真を縮小するときに望ましくないエッジを保存することを強調したい場合です。

Cambridge in Color には、さまざまなアルゴリズムの結果の良い例があります。

fxguideの関係者 多くの情報 スケーリングアルゴリズムについて(合成やその他の画像処理に関する他の多くの要素とともに)価値がある見てみましょう。また、独自のテストの実行に役立つ可能性のあるテストイメージも含まれます。

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

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

67
Old Pro

Lanczosサンプリング があります。これはバイキュービックよりも低速ですが、高品質の画像を生成します。

19
Greg Dean

(バイ)線形および(バイ)立方リサンプリングは、見苦しいだけでなく、1/2よりも小さい係数でダウンスケーリングした場合、恐ろしく間違っています。これらは、1/2の係数でダウンキャンプした後、最近傍のダウンサンプリングを使用した場合と同じような非常に悪いエイリアシングになります。

個人的には、ほとんどのダウンサンプリングタスクに(面積)平均化サンプルをお勧めします。非常にシンプルで高速、最適に近いです。ガウスのリサンプリング(係数の逆数に比例して選択された半径、たとえば1/5のダウンサンプリングの半径5)は、計算オーバーヘッドが少し増えてより良い結果が得られる可能性があり、数学的にも適切です。

ガウスリサンプリングを使用する理由の1つは、他のほとんどのアルゴリズムとは異なり、リサンプリング係数に適した半径を選択する限り、アップサンプリングとダウンサンプリングの両方で正しく機能する(アーティファクト/エイリアシングを導入しない)ことです。それ以外の場合、両方向をサポートするには、2つの個別のアルゴリズムが必要です-ダウンサンプリングのエリア平均化(アップサンプリングの最近傍に低下します)と、アップサンプリングの(バイ)キュービックのようなもの(ダウンサンプリングの最近傍に低下します)。ガウスリサンプリングのこのナイスプロパティを数学的に見る1つの方法は、非常に大きな半径を持つガウスが面積平均に近似し、非常に小さな半径を持つガウスが(双)線形補間に近似することです。

14
R..

Seam Carving についてのSlashdotの記事を見ましたが、少し前に調べる価値があるかもしれません。

Seam carvingは、Shai AvidanとAriel Shamirによって開発された画像サイズ変更アルゴリズムです。このアルゴリズムは、スケーリングやトリミングではなく、重要性の低い画像からインテリジェントにピクセルを削除(またはピクセルを追加)することにより、画像の寸法を変更します。

7
Craz

説明するアルゴリズムは線形補間と呼ばれ、最速のアルゴリズムの1つですが、画像では最適ではありません。

4
user175680

このアルゴリズムの名前はありますか?

文献では「ボックス」または「ウィンドウ」のリサンプリングと呼ばれる場合があります。あなたが考えるように、実際には計算コストが低くなります。

また、中間ビットマップを作成するために使用できます。このビットマップは、バイキュービック補間で使用され、1/2以上ダウンサンプリングされた場合のエイリアシングを回避します。

2
Thilo Köhler