問題タブ [quantization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opengl-es - グーローシェーディングされた頂点カラーのポリゴンをディザリングして、バンディングを削除します
低解像度の組み込みデバイスでOpenGLESを使用しています。
レンダリングされたシーンの背景として機能する大きなポリゴンに、頂点カラーリングを使用して垂直方向のカラーグラデーションを適用しました。カラーグラデーションではっきりと見えるバンディングアーティファクトを見ることができます。
私の主な経験は、ソフトウェアレンダラーを使用することです。ソフトウェアレンダラーでは、マッハバンドやその他のバンディングアーティファクトをディザリングするのが一般的です。これは、フレームをレンダリングする量子化ステップでよく行われます。ここでは、浮動小数点の高精度の色表現が低精度の出力に変換されます(通常は整数成分を使用)。最終的な整数成分をランダムに上下に丸めてディザリングを実現し、画像にごくわずかなノイズを挿入して、目をだまして連続体を見て色をスムーズにブレンドします。
私の質問は、OpenGLESを使用してこれを達成できるかどうかです。この種のディザリングはOpenGLパイプラインの一部ですか、それとも頂点の色付けをスキップしてグラデーションをテクスチャにレンダリングし、それに少しノイズを適用する必要がありますか?
floating-point - 浮動小数点範囲を整数範囲に変換/定量化する
[0、1]の範囲の浮動小数点数があり、それを量子化して符号なしバイトに格納したいとします。当たり前のように聞こえますが、実際には非常に複雑です。
明らかな解決策は次のようになります。
これは、0から255までのすべての数値を取得するまでは機能しますが、整数の分布は均一ではありません。この関数は255
、aが正確にである場合にのみ戻ります1.0f
。良い解決策ではありません。
適切な丸めを行うと、問題がシフトします。
ここでは、結果0
は他のどの数値よりもフロート範囲の半分しかカバーしていません。
浮動小数点範囲を均等に分散して量子化するにはどうすればよいですか?理想的には、均等に分散されたランダムフロートを量子化する場合、整数の均等な分布を取得したいと思います。
何か案は?
ところで:また、私のコードはCにあり、問題は言語に依存しません。C以外の人の場合:変換することでフロートが切り捨てられると仮定しfloat
ます。int
編集:ここで混乱があったので:最小の入力float(0)を最小のunsigned charにマップし、範囲の最大のfloat(1.0f)を最大のunsignedバイト(255)にマップするマッピングが必要です。
audio - 8ビットオーディオサンプルから16ビット
これが私の「週末」の趣味の問題です。
クラシックシンセサイザーのROMからの愛されているシングルサイクル波形がいくつかあります。
これらは8ビットのサンプルです(256の可能な値)。
それらはわずか8ビットであるため、ノイズフロアはかなり高くなります。これは量子化誤差によるものです。量子化誤差はかなり奇妙です。それはすべての周波数を少し台無しにします。
これらのサイクルを取り、それらの「クリーンな」16ビットバージョンを作成したいと思います。(はい、私は人々がダーティバージョンを愛していることを知っているので、ユーザーが好きな程度にダーティとクリーンの間を補間できるようにします。)
下位8ビットを永久に失ってしまったので、不可能に聞こえますよね?しかし、これはしばらくの間私の頭の後ろにありました、そして私はそれをすることができるとかなり確信しています。
これらは、再生のために何度も繰り返される単一サイクルの波形であるため、これは特殊なケースであることに注意してください。(もちろん、シンセは、エンベロープ、モジュレーション、フィルターのクロスフェードなど、サウンドを面白くするためにあらゆる種類のことを行います。)
個々のバイトサンプルごとに、私が本当に知っているのは、16ビットバージョンの256個の値の1つであるということです。(16ビット値が切り捨てられるか8ビットに丸められる逆のプロセスを想像してみてください。)
私の評価関数は、最小のノイズフロアを取得しようとしています。1つまたは複数のFFTでそれを判断できるはずです。
徹底的なテストにはおそらく永遠に時間がかかるので、低解像度の初回通過を行うことができます。または、ランダムに選択された値を(同じ8ビットバージョンを維持する既知の値の範囲内で)ランダムにプッシュして、評価を行い、よりクリーンなバージョンを維持しますか?それとも私ができるより速い何かがありますか?検索空間の他の場所にいくつかのより良い最小値があるかもしれないとき、私は極小値に陥る危険がありますか?私は他の同様の状況でそれが起こったことがあります。
おそらく隣接する値を調べることによって、私が行うことができる最初の推測はありますか?
編集:新しい波形を元の波形にサンプリングするという要件を削除すると、問題が簡単になると指摘する人もいます。それは本当だ。実際、よりクリーンなサウンドを探しているだけなら、解決策は簡単です。
c - C で最速のディザリング/ハーフトーン ライブラリ
レンダリングされた Web ページをクライアントに提供するカスタム シンクライアント サーバーを開発しています。サーバーは、HTML レンダリング エンジンを提供する Webkit を使用して、マルチコア Linux ボックスで実行されます。
唯一の問題は、クライアントの表示が 4 ビット (16 色) のグレースケール パレットに制限されていることです。私は現在、LibGraphicsMagick を使用して画像をディザリング (RGB->4 ビット グレースケール) していますが、これはサーバー パフォーマンスの明らかなボトルネックです。プロファイリングでは、GraphicsMagick ディザリング関数の実行に 70% 以上の時間が費やされていることが示されています。
優れた高性能ソリューションを求めて、stackoverflow と Interwebs を調査しましたが、さまざまな画像操作ライブラリとディザリング ソリューションのベンチマークを誰も行っていないようです。
私はもっと喜んで見つけます:
- RGB イメージの 4 ビット グレースケールへのディザリング / ハーフトーン化 / 量子化に関して、最もパフォーマンスの高いライブラリは何ですか。
- 特殊なディザリング ライブラリやパブリック ドメインのコード スニペットを教えてもらえますか?
- 高性能に関してグラフィックスを操作するためにどのライブラリを好みますか?
C 言語ライブラリが優先されます。
machine-learning - 画像から主な/最も使用される色を抽出する
画像内で最もよく使用される色、または少なくとも主要な色調を抽出したいのですが、このタスクを開始する方法を教えてください。または同様のコードを教えてください。私はそれを探していましたが、成功しませんでした。
c - Cには量子化機能がありますか?
8ビット(0〜255の値)に量子化したい多くの正の16ビット値(doubleとして格納されている)を持つバッファーがあります。
ウィキペディアによると、プロセスは次のようになります。
- 16ビット値を正規化します。つまり、最大のものを見つけて、これで分割します。
- M = 8のQ(x)式を使用します。
では、Cにこの量子化を実行できる関数があるのか、それとも私が使用できるCの実装を知っている人がいるのでしょうか。
たくさんの愛、ルイーズ
python - Quantize()とstr.format()の違いは何ですか?
私は技術的な違いが何であるかを意味するのではなく、むしろ、これを行うためのより高速/より論理的またはPythonicなどの方法は何ですか?
また
それらはまったく同じように見えるので、なぜそれらがクオンタイズを作成したのか疑問に思っています
vector - 音声処理におけるベクトル量子化の説明
この研究論文から、トレーニングセットのデータに基づいて、標準ベクトル量子化アルゴリズムを再現して、識別されていない音声入力の言語を決定する方法を正確に判断するのに苦労しています。ここにいくつかの基本的な情報があります:
抽象情報 音響機能を使用した言語認識(日本語、英語、ドイツ語など)は、現在の音声技術にとって重要でありながら難しい問題です。...この論文で使用されている音声データベースには、20の言語が含まれています。16の文が4人の男性と4人の女性によって2回発声されました。各文の長さは約8秒です。最初のアルゴリズムは、標準のベクトル量子化(VQ)手法に基づいています。すべての言語は、独自のVQコードブックによって特徴付けられます。
認識アルゴリズム
最初のアルゴリズムは、標準のベクトル量子化(VQ)手法に基づいています。すべての言語はk
、独自のVQコードブックによって特徴付けられます。認識段階では、入力音声がによって量子化され、累積された量子化歪みd_kが計算されます。最小限の歪みとして認識される言語。VQ歪みを計算すると、いくつかのLPCスペクトル歪み測定が適用されます...この場合、WLR-加重最小比-距離:
距離d
は、音響特性に対応する任意の距離にすることができ、コードブックの生成に使用される距離と同じである必要があります。各言語は、そのVQコードブックによって特徴付けられます。
私の質問は、これをどのように正確に行うのですか?私は英語で50文のセットを持っています。MATLABでは、任意の信号のWLRを簡単に計算できます。しかし、英語の「コードブック生成」にはWLRを使用する必要があるため、コードブックを作成するにはどうすればよいですか。サイズ16のVQコードブック(最適なサイズであることがわかった)を特定の入力信号と比較する方法についても興味があります。誰かが私のためにこの論文を蒸留するのを手伝ってくれるなら、私はそれを大いに感謝します。
ありがとう!
audio - 切り捨てによるサンプルビット深度の削減
デジタルオーディオ信号のビット深度を24ビットから16ビットに減らす必要があります。
各サンプルの最上位16ビットのみを取得する(つまり、切り捨てる)ことは、比例計算を実行することと同じです(out = in * 0xFFFF / 0xFFFFFF)?
algorithm - 線分のパスの違いを定量化するアルゴリズム
以下の例のサブセットのように、2つの線分パスがあるとします。それらの違いをどのように定量化できますか?
- | __
- \ _
- _ _
- / \
- \ /
- |
- _
2つのパスのセグメント数は異なる場合があり、各セグメントの長さとそれらの間の角度は可変です。
座標系を確立し、セグメントをノードとエッジとして定義するとよいと思いました。違いは、レーベンシュタイン距離アルゴリズムと同様に、一方を他方に変換するために必要な操作によっておそらく定量化できます。残念ながら、操作スペースは巨大です。何か案は?ありがとう!