web-dev-qa-db-ja.com

画像補間方法を選択するにはどうすればよいですか? (Emgu / OpenCV)

Emgu(OpenCVの.netラッパー)が提供する画像サイズ変更関数は、 4つの補間方法 のいずれかを使用できます。

  1. CV_INTER_NN(デフォルト)
  2. CV_INTER_LINEAR
  3. CV_INTER_CUBIC
  4. CV_INTER_AREA

私は線形補間を大まかに理解していますが、立方体または面積が何をするかを推測することしかできません。 NNは最近傍を表すと思いますが、間違っている可能性があります。

画像のサイズを変更する理由は、代表的なピクセルを維持しながら、ピクセルの量を減らすためです(ある時点で繰り返されます)。補間がこの目的の中心であるように思われるので、これについて言及します。したがって、正しいタイプを取得することは非常に重要です。

それでは、私の質問は、各内挿法の長所と短所は何ですか?それらはどのように異なり、どちらを使用する必要がありますか?

22
Tom Wright

最近傍は可能な限り高速になりますが、サイズを変更すると実質的な情報が失われます。

線形補間の速度は遅くなりますが、情報が失われることはありませんただし画像を縮小している場合(現在の場合)。

キュービック補間(おそらく実際には「バイキュービック」)は、複数の隣接ピクセルを組み込んだ多くの可能な式の1つを使用します。これは画像を縮小する場合にはるかに優れていますが、情報を失うことなく縮小できる量には制限があります。アルゴリズムに応じて、画像を50%または75%削減できる可能性があります。このアプローチの主な欠点は、はるかに遅いことです。

「エリア」が何であるかわからない-それは実際には「バイキュービック」である可能性があります。おそらく、この設定は(情報の損失/外観の点で)最良の結果をもたらしますが、処理時間が最も長くなります。

更新:このリンクは詳細を提供します(リストに含まれていない5番目のタイプを含む):

http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html?highlight=resize#resize

23
MusiGenesis

使用する補間方法は、達成しようとしていることによって異なります。

CV_INTER_LINEARまたはCV_INTER_CUBIC視覚的品質とエッジ除去の間のトレードオフを達成するためにローパスフィルター(平均)を適用します(ローパスフィルターはエイリアシングを減らすためにエッジを除去する傾向があります画像で)。これら2つの間で、私はあなたをお勧めしますCV_INTER_CUBIC

CV_INTER_NNメソッドは実際には最近傍法であり、最も基本的なメソッドであり、よりシャープなエッジが得られます(ローパスフィルターは適用されません)。ただし、この方法は単に画像を「ズーム」するようなものであり、視覚的な強調はありません。

10

アルゴリズムは次のとおりです:(説明はOpenCVドキュメントからのものです)

  • INTER_NEAREST-最近隣内挿
  • INTER_LINEAR-双一次内挿(デフォルトで使用)
  • INTER_AREA-ピクセル領域の関係を使用したリサンプリング。モアレのない結果が得られるため、画像のデシメーションに適した方法である可能性があります。ただし、画像をズームすると、INTER_NEARESTメソッドに似ています。
  • INTER_CUBIC-4x4ピクセル近傍のバイキュービック補間
  • INTER_LANCZOS4-8x8ピクセル近傍でのランツォシュ補間

より高速にしたい場合は、最近傍法を使用してください。

ダウンサンプリング後に画像の品質を維持したい場合は、INTER_AREAベースの補間の使用を検討できますが、これも画像の内容によって異なります。

あなたは速度比較の詳細な分析を見つけることができます ここ

以下は、上記のリンクから取得した400 * 400pxの画像の速度比較です。

Speed comparison

10
nbsrujan

それらはすべて情報を失います。使用する情報は、必要な速度、失う余裕のある情報の量、および画像の性質によって異なります。

申し訳ありませんが正解はありません-それが選択肢がある理由です

0
Martin Beckett