画像を介してぼかしを偽造することは可能ですか?


9

私はAndroidゲームにlibGDXを使用しています。私の知る限り、ぼかし用のAPIはありません。

ウィキペディアで読むと、各ピクセルのRGB値を隣接するすべての値の平均に設定することによってぼかしが形成されているようです。これはlibGDX-ピクセルデータの設定では簡単に実現できないようです。

だから私の質問は簡単です:

画像のみを使用して偽の(まともな)ぼかしを行うことはできますか?

複数の(数、透明度、タイプの)画像をオーバーレイできる可能性があります。しかし、このような説得力のあるぼかしを作成できますか?

私は「いいえ」と言いたくなりますが、おそらく他の誰かが同様のことを達成したのかもしれません。明確にするために、ぼかしのような効果を生成するために、任意の画像の上にレンダリングできる1つ以上の一般的な画像のセットが必要です。


良い質問!私も同じことを考えました!
ダニエル氏はモニカを

@DantheManはどのプラットフォームですか?
ashes999 '10 / 10/20

Unity3dまたはCGシェーディング言語。
Danielはモニカを

透明な画像を互いに重ねることをお勧めします。それらをわずかにオフセットすると、ピクセルを平均化してぼかしを実現することになります
Jeff

1
@ ashes999、ものの上にオーバーレイしてぼやけて見えるようにする「魔法の画像」を探している場合、それは存在しません。アルファブレンディング(オーバーレイ)は、遠くでぼかしと同じではありません。
ネイサンリード

回答:


7

画像を追加的にブレンドし、その間に定数を掛けることができれば、ぼかしを行うことができます。近傍内のピクセルを平均化する代わりに、互いに少数のピクセルで置き換えられた画像のいくつかのコピーを平均化します。または、より一般的には、重みを制御することにより、ガウスぼかしやあらゆる種類のぼかしを行うことができます。つまり、画像の変位された各コピーに、残りの画像に追加される定数を乗算します。

アルゴリズム的には、次のようになります。

clear output_image to 0
foreach offset, weight in filter_kernel:
    output_image += input_image * weight, shifted by offset

ぼかしを行う標準的な方法と同じオフセットと重みを使用します。たとえば、ガウスぼかしの重みを生成する方法に関するWeb上の記事はたくさんあります。


いい答えを1つ。私の場合、加法能力はありません。
ashes999 '10 / 10/20

0

ぼかしは高価な操作になる可能性があり、おそらく別のアプローチが機能する可能性があります。例:

  1. 複数の異なる方向(例:45度の倍数)でぼかした画像の複数のコピーを保存し、実行時に最も一致する画像を表示します。これは、メモリ使用量を犠牲にして、最高のパフォーマンスを提供します。
  2. 画像を縮小してから、アンチエイリアス/スムージングを使用してフルサイズに戻します。多くの場合、これはグラフィックスハードウェアで実行でき、パフォーマンスへの影響はほとんどありません。

動的でなければならないため、機能しません。つまり、事前に画面の正確な設定を知ることができません。
ashes999
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.