私はiPhoneアプリケーションで何かを実装するためにシェイダーを習得しようとしています。これまでのところ、グレースケール、閾値処理などのカラー画像を作成するような簡単な例を理解していました。ほとんどの例では、入力画像ピクセルI(x,y)
を処理すると、同じピクセルの色を単純に変更するという単純な操作が必要です。OpenGLシェーダを使用したガウスフィルタ
しかし、Convolutionsはどうですか?例えば、最も簡単な例は、ガウスフィルタ
ここで出力画像ピクセルはI(x,y)
だけでなく、周囲の8ピクセルにも依存します。
O(x,y) = (I(x,y)+ surrounding 8 pixels values)/9;
通常、これは単一のイメージバッファでは実行できません。また、入力ピクセルはフィルタが実行されると変更されます。どのようにシェーダでこれを行うことができますか?また、私は自分自身で国境を処理する必要がありますか?または、I(-1,-1)
のような無効なピクセルアクセスをチェックする組み込み関数または何かがありますか?事前に
おかげ
PS:私は寛大になります(読み:ポイントの多くを与える);)
線形補間の利点は、それほど新しいものではありません。いつもより簡単な方法の利点はどこですか?座標[-4、-2、0、2、4]を参照して10ピクセルの範囲を取得し、次に2つのテクセルのそれぞれの重み付けを適用しますか? – djmj
@djmj - 私はあなたに従うことを確信していません。もっと簡単な方法は?あなたが指している2つのテクセルは何ですか?このアプローチについて説明している参考資料がありますか? –
参照:http://drilian.com/journal/images/TextureGrid.png。 (2、0.5)でサンプリングすると、ピクセル(1,0)と(2,0)の双線形補間値が得られます。 (2、1)でサンプリングすると、4つの隣接画素の平均値が得られます!したがって、2ピクセルのオフセットを使用して、ガウス重みを適用してください。 – djmj