5

画像の周りにアルファ ブレンドされたグラデーションの境界線を配置する必要があります。私の問題は、コーナーをブレンドして、水平方向と垂直方向のグラデーションが交わる場所を滑らかにすることです。この問題を解決する標準アルゴリズムがあると思います。何年も前に学校で遭遇したと思います。しかし、いくつかの Web 検索で 1 つの参照を見つけることができませんでした。

(隅に放射状の塗りつぶしパターンを実装しましたが、遷移はまだ十分にスムーズではありません。)

私の質問:

  1. この問題の標準アルゴリズムがある場合、その名前は何ですか? さらに良いことに、どのように実装されていますか?

  2. 標準的なアルゴリズムを使用せずに、角に滑らかなグラデーションを生成するために必要なピクセル値を決定する最良の方法は何ですか? (縦のグラデーションから横のグラデーションにスムーズに移行します。)

編集:大きな画像の上に挿入する画像があると想像してください。大きい画像は黒一色で、小さい画像は白一色です。挿入する前に、小さな画像にアルファ値を設定してその周りに透明な「境界線」を作成し、大きな画像に「フェード」することで、小さな画像を大きな画像にブレンドしたいと考えています。正しく行うと、黒から白への滑らかなグラデーションが得られます。コーナーと内側のエッジを除くすべての場所で行います。

画像の中央近くのグラデーション境界の端では、値は 255 になります (透明ではありません)。境界が外側の端に近づくにつれて、アルファ値は 0 に近づきます。頂点と水平の境界が交わる画像のコーナーでは、対角線に相当するものになります。その線引きをなくしてスムーズに移行したい。

私が必要としているのは、水平エッジと垂直エッジが交差するときに画像の隅で重なる各ピクセルのアルファ値 (0 ~ 255) を決定するアルゴリズムです。

4

2 に答える 2

2

おそらく、重複する 2 つのグラデーションを掛け合わせているのではないでしょうか。

標準アルゴリズムについてはわかりません。ただし、線形グラデーションの代わりにシグノイド シェイプのグラデーションを使用すると、2 つが重なるエッジが見えなくなります。

単純なシグモイド関数は Smoothstep(t) = t t (3 - 2*t) で、0 <= t <= 1です。

于 2008-09-20T01:15:48.237 に答える
0

サイズ変更可能にする必要がない場合は、単純なアルファ マップを使用できます。

ただし、単純なガウスフェードを使用したことがあります。これは、最後の完全に不透明なピクセルにしたい場所の平均です。それが理にかなっていれば。

于 2008-09-20T00:57:39.917 に答える