11

Floyd-Steinberg ディザリングアルゴリズムはピクセル シェーダーでは実装できないことを私は知っています。そのアルゴリズムは厳密にシーケンシャルであるためです。しかし、視覚的な出力がFloyd-Steinbergアルゴリズムに似ている高度に並列なディザリングアルゴリズムが存在する可能性がありますか?

問題は、ピクセル シェーダー (できれば GLSL) に実装するのに適したディザリング アルゴリズムとは (非常に) Floyd-Steinberg ディザリングに似た出力品質を持つものです。

ところで。マルチパス アルゴリズムは、パスが 2 つ以下になり、それらのパス間の CPU オーバーヘッドが小さくなるまで許可されます。

何か案は ?

編集:
24 ビット カラーから 21 ビット カラーへのディザリングが必要です。
(つまり、8 ビット/チャネルから 7 ビット/チャネルに変換する必要があります。)

EDIT 2 問題をうまく説明できていないかもしれません。だから私は正確な問題を少し拡大しようとします。問題はこれです - この写真
代替テキスト
があるとします: 上の写真がありますが、ディザリング アルゴリズムで処理されています:
代替テキスト
これは、ディザリングが適切かどうかをテストする手順です:
1. これらの写真を Photoshop で 2レイヤー。
2.レイヤーブレンドモードを「差分」に選択します。
3. レイヤーに対して「表示をマージ」操作を実行して、レイヤーを 1 つだけ取得します。
4. 操作を実行 => イメージ/調整/イコライズ

その後、次のようなイメージを取得する必要があります。
代替テキスト
ご覧のとおり、モノトーンの赤色である中央のピクセルはまったくディザリングされていません。また、左右の画像ゾーンのディザリングも少し異なります。このような動作でディザリング アルゴリズムを再構築してみてください。

4

2 に答える 2

5

順序付きディザを使用できます。Floyd-Steinberg より粗く見えますが、ピクセル間の依存関係はありません。

編集: 1ビットしか削除していないため、これはほとんど簡単になります。順序付きディザの背後にある原則は、遷移しきい値にバイアスをかけるパターンを作成することです。この場合、バイアスは 0 または 1 になり、パターンは 2x2 ピクセルになります。これら 2 つの変更を組み合わせることで、ウィキペディアの記事にあるパターンよりも不快なパターンが大幅に軽減されます。Floyd-Steinberg よりも気に入るかもしれません。

ここにいくつかの擬似コードがあります:

bias = (X xor Y) and 0x01
value = pixel + bias
if value > 255: value = 255
pixel = value and 0x7e

編集 2:これが私の差分結果です。できる限り最善を尽くします。7 ビットの値を 8 ビットに戻す方法を知らなければ、これ以上のことはできません。

代替テキスト

于 2010-11-03T22:08:17.623 に答える
2

8 ビットから 7 ビットに減らすと、ほとんど情報が失われません。あなたもディザリングする必要があると確信していますか?

ディザリング、ランダム ノイズの追加、およびクリッピングが必要な場合は、アプリケーションに十分適しています。

于 2010-11-07T20:24:02.427 に答える