画像のダウン・サンプリング

久々の学生クエストは、画像のダウン・サンプリング方法でした。画像をより低い解像度に変換しようとして、どうも思うような結果が得られず、悩んでいたらしいです。次のパッチは極端な例ですが、それぞれの結果を見ると、どのような処理なのかが想像できるんじゃないでしょうか。結果が大きく異なることも一目瞭然。この手の検証は、本質を保ちながら、確認し易い状況を作るのが重要ですね。解像度が高くて動きの激しいムービーを使っていては、いくら目を凝らしても理解できないかも。

downsampling-test.gif

さて、jit.matrixによるダウン・サンプリングでは、interp(interpolation、補間)がオフであれば、左上隅のピクセルがそのまま使われてますね。interpがオンの場合は、位置によって異なる四隅のうちのいずれかのピクセルに近い値になりますが、そのピクセル値とは僅かに異なっています。ピクセル値の平均によるダウン・サンプリングは、そのものズバリの標準オブジェクトはないようなので(たぶん…)、次のようなサブ・パッチで処理しています(簡易性重視で汎用性はないですぅ)。

downsampling-using-mean.gif

いずれにしても、目的に応じて処理方法を選ぶ必要があります。例えば、単純にモザイクをかけるならinterpオフのjit.matrix、元画像に比較的近い画像を得たいならinterpオンのjit.matrix、そして画像分析などに使うなら平均値方式かもしれない、って感じですかね。サンプル・パッチはコレです。

画像のダウン・サンプリング」への2件のフィードバック

  1. sako

    これ、ビデオカメラ入力から動体位置をざっくりと解析しようとして、とても参考になりました。地球のムービーを素材に使ってみたのですが、interpの違いが歴然ですね。

    downsample_more.gif

    返信
  2. 赤松 正行

    このパッチも処理の特徴が分かり易くていいですね。

    もともとはinterp 1で領域内ピクセルの平均値が得られると誤解していたのがクエストの始まりなんですが、さて、interp 1のアルゴリズムはどうなっているんだろうね?

    返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA