問題タブ [dct]

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.

0 投票する
2 に答える
3392 参照

python - Python の Scipy DCT-II を使用して 2D または ND DCT を実行する

scipy の DCT-II は既にコード化されて高速であるため、使用したいと考えています。docを見ると、それは 1D 実装のようです。3D 実装として使用するような方法で使用することは可能ですか? 数学についてはよくわかりません。2D と 3D の実装は、計算で異なる次元を使用して 1D の 2 倍または 3 倍を掛けることに相当しますか?

0 投票する
2 に答える
4317 参照

php - PHPで離散コサイン変換(DCT)を計算する方法は?

ここで欲しいのは、現在のコードの機能し、最適化されたバージョンです。私の関数は実際の結果を含む配列を返しますが、それらが正しいかどうかはわかりません(私は数学の第一人者ではなく、結果を既知の実装と比較するJavaコードもわかりません)。次に、関数がカスタムテーブルサイズを受け入れることができるようにしたいのですが、その方法がわかりません。テーブルサイズは画像のリサンプリングと同等ですか?係数を正しく適用していますか?

私のPHP関数は、Javaのこの投稿から派生したものです:JavaのDCTおよびIDCTアルゴリズムの問​​題。phpと読みやすさのためにコードを書き直しました。最終的に、私は画像を比較して類似点を見つけることができるスクリプトに取り組んでいます。この手法の概要は次のとおりです:http ://www.hackerfactor.com/blog/index.php?/ archives/432-Looks-Like-It.html 。

ありがとう!

0 投票する
1 に答える
661 参照

matlab - 量子化された係数をファイルに保存する

画像を読み取り、DCT変換し、量子化してから、量子化された係数をファイルに保存して、フラクタルエンコーディングプログラムに読み込ませようとしています。

(量子化された係数を使用して)ファイルをデコードすると、灰色の画面しか表示されません。これはファイルの内容によるものですか、それとも他の何かを見逃しているのですか?

0 投票する
1 に答える
6457 参照

python - Scipyのfftpackdctおよびidct

dct関数を使用し、データの操作を行わず、反転変換を使用するとします。反転されたデータは、事前に変換されたデータと同じではないでしょうか?なぜ浮動小数点の問題ですか?報告された問題ですか、それとも正常な動作ですか?

誰もが理由として説明がありますか?もちろん、単純なc*10**-1方法でうまくいきますが、関数の呼び出しを繰り返して複数の次元で使用すると、エラーが大きくなります。

ここにドキュメントへのリンクがあります。

0 投票する
2 に答える
649 参照

c++ - DCT ベースのビデオ エンコーディング プロセス

私はあなたが明確にすることができることを望んでいるいくつかの問題を抱えています. 私は、Mpeg2 に似たビデオ エンコーディング プロセスを独学で学びました。プロセスは次のとおりです。

  1. RGBA イメージを 4 つの個別のチャネル データ メモリ ブロックに分割します。したがって、すべての R 値の配列、G 値の個別の配列などです。

  2. 配列を取得して 8x8 ピクセル データのブロックを取得し、離散コサイン変換 (DCT) を使用して変換します。

  3. 事前に計算された量子化行列を使用して、この 8x8 ブロックを量子化します。

  4. 量子化ステップの出力をジグザグ符号化します。だから私は連続した数の証跡を取得する必要があります。

  5. ジグザグ アルゴリズムからの出力をランレングス エンコード (RLE) します。

  6. RLE ステージの後のデータをハフマン符号化します。事前に計算されたハフマン テーブルからの値の置換を使用します。

  7. ステップ 2 に戻り、すべてのチャネル データがエンコードされるまで繰り返します。

  8. ステップ 2 に戻り、チャンネルごとに繰り返します。

最初の質問は、プロセスが機能するために RGBA 値を YUV+A (YCbCr+A) 値に変換する必要があるか、それとも RGBA を使用し続けることができるかということです。RGBA->YUVA 変換は負荷が高く、できれば避けたいのでお願いします。

次の問題。RLE ストアを 0 だけで実行する必要があるのか​​、それとも配列内のすべての値に拡張できるのか疑問に思っています。以下の例を参照してください。

最後の質問は、ハフマン段階に関して単一のシンボルは何でしょうか? 置き換えられるシンボルは 2 や 4 のような値になるか、シンボルはたとえばランレベル ペア [2,4] になります。

ここで読んで助けてくれてありがとう。私は多くの論文を読み、多くの YouTube ビデオを見てきましたが、個々のアルゴリズムを理解するのに役立ちましたが、それらがすべてリンクしてコード内のエンコード プロセスを形成する方法については理解できませんでした。

0 投票する
1 に答える
117 参照

encode - ハフマンは、単一のフレーム、そのフレームのカラーチャネル、または8x8マクロブロックをエンコードする必要がありますか?

数日前のDCTベースのビデオエンコーディングプロセスについての私の質問に 加えて

DCT、量子化、ジグザグ、RLEの各ステップが適切な値を出力しているように見えるので、フレーム全体、そのフレームのカラーチャネル、または8x8マクロブロックレベルでハフマンエンコードを実行する必要があるかどうかを知る必要があります。

0 投票する
1 に答える
771 参照

image-processing - DCT 圧縮でのマスキング

DCT ( D iscrete Cosine Transform)を使用して画像圧縮を試みています。マスキングがDCTのピクセルあたりのビットにどのように影響するかを理解するのを手伝ってもらえますか? マスキングでのビット割り当てはどのように行われますか?

PS: マスキングとは、DCT 係数を以下のような行列で乗算することを意味します (要素ごとの乗算であり、行列の乗算ではありません)。

「マスキング」の背景

DCT を使用した圧縮では、画像のブロック (この場合は 8x8 ピクセル) の DCT が計算されます。画像の高周波成分は、人間の画像認識にとってそれほど重要ではないため、スペースを節約するために破棄できます。

Matrixはmask、スペースを節約するために保持する DCT 係数と破棄する DCT 係数を選択します。左上隅に向かう係数は、低周波数を表します。

詳細については、離散コサイン変換を参照してください。

0 投票する
0 に答える
2432 参照

image-processing - 画像ステガノグラフィのための DCT メソッドの実装

メッセージを非表示にするために DCT マトリックスを使用して、画像 (PNG または BMP は関係ありません) 内にテキスト メッセージを埋め込むプログラムを実装する必要があります。いくつかの記事を読みましたが、そのほとんどは非常に複雑です。基本的な手順は次のとおりです。

  1. イメージを 8x8 ブロック (ピクセル強度マトリックス) に分割します。
  2. 各ブロックで離散コサイン変換 (DCT) を実行します。したがって、8x8 DCT 係数行列が得られます。
  3. どういうわけか、DCT 係数行列の最下位要素にメッセージを挿入します。
  4. IDCT を実行し、内部に秘密のメッセージを含む通常の画像表現を取得します。

3番目のステップで何をすべきか正確にわかりませんか? C# や Java でこの手法の既存の実装がいくつかあるのではないでしょうか?

0 投票する
1 に答える
1172 参照

java - Jpeg DCT と IDCT が正しく計算されない

入力画像の DCT と IDCT を計算し、IDCT 出力を結果画像として表示しようとしています。しかし、私の IDCT 値は 300 を超えています。入力画像は「.rgb」画像です。また、入力画像の高さと幅を定数、つまり 352*288 と考えています。

各ピクセルの入力赤、緑、青の整数を rgb[3][64][1583] として表しています [3] -> 赤/緑/青のインデックスと [64] -> 各ブロックのピクセルのインデックス[1583]-> 8*8 ブロックのインデックス、つまり 1583 ブロック中のブロックの 1 つ。

そして最後に、均一な値を持つ量子化テーブルを保持します-> 2^N N はパラメーターとして渡されます。このコードでは、quantLevel は上記の N です。

以下は私のコードです:

チェックした赤のIDCTの出力が255を超えるため、出力画像を表示しようとはしていません。

助けてください。

0 投票する
1 に答える
237 参照

image-processing - DCをランダム化する方法は?

matlabでDCTを使用して画像スクランブリングを作成したいと思います。グレースケール画像を使用しました。ランダムな値でDCをランダムにしたい。各ブロックのDC係数をランダムな値に設定し、0-255他のすべてを残す方法??これらは実験の手順です:グレー画像をブロックに分割し8x8ます;各ブロックでDCTを実行します;各ブロックのDC係数をランダムな値に設定し0-255ます他のすべてを残す;逆DCTを実行して画像を復元する;復元された画像をSSIMによって元の画像と比較する。ありがとうございました