答えて
イメージを解凍する必要があります。turbojpgライブラリ(非常に高速です)を使用すると、RGB(またはRGBA)としてunsigned char
の配列が得られます。今度は、圧縮されていないイメージがあります。これは、R GとBそれぞれのバイト値を持っています。
ここからは、3 * 8 char
ブロックを通り、他のメモリ位置にmemcpy
を使ってコピーする簡単なforループを作成してください。
turbojpgライブラリから返される配列は、1次元のリニアバイト配列であることに注意する必要があります。したがって、スキャンラインは次々に格納されます。必要に応じてブロックを作成するときにこれを考慮に入れると、配列を別々にトラバースする必要があります。
ああ、ダイ・ハード・アプローチ。私の心はあなたに行く。多くのことを学ぶことを期待していますが、そうすることで時間や血、痛みを失うことに注意してください。
Compression FAQには、JPEGの仕組みに関する詳細がいくつかあります。良い出発点はPart 2:Subject 75:JPEGの紹介です。
一言で言えば、一般的なJPEGファイルを、あなたはエンコーディングは4~6ステップ逆転しなければならないが:
- (6)(JFIF容器
- から適切なヘッダ及び画像データを抽出5)
- をハフマン符号化を逆転(4)あなたは、あなたが適切な逆DCTに供給できた8×8ブロックに委ねられるべき量子化
を逆転。
ウィキペディアには、JFIFフォーマットのほか、ハフマンテーブルと、structure of the JPEGデータがJFIF内にあります。
私はあなたがそれについて学ぶためにJPEGで遊ぶことを望んでいると仮定していますか?実用化されていれば、生のエンコードされたブロックへのアクセスはほとんど必要ありません。
コメントを見て編集:ファイル全体を読み書きせずに非常に大きなJPEGの一部を取得したい場合は、ImageMagickのstream
コマンドを使用できます。それはファイル全体を読むことなくサブイメージを得ることができます。例: stream -extract 8x8+16+16 large.jpeg block.rgb
を使用して、(16,16)で始まる8x8ブロックを取得します。
私は学習と開発に興味があります将来顔認識ソフトウェア。しかし、今のところ私は基本を学びたい。 – NiVeR
- 1. Q:画像をブロックに分割する
- 2. カラー画像をMATLABのブロックに分割する
- 3. 画像を素早く分割して画像を分割する
- 4. 私のアンドロイドアプリケーションでJPEG画像
- 5. jQuerymobile - iPad用のブロックと分割画面
- 6. MATLABの画像分割アルゴリズム
- 7. JPEG画像圧縮
- 8. CSSヘルプ - 画像を分割する
- 9. CGI画像を分割する
- 10. ランダムに画像を分割する、Matlab
- 11. Matlabで画像を線分(プロット)で分割する方法
- 12. 分割テクスチャ画像threejs
- 13. トリプル「Rhomboid」画像分割CSS
- 14. Base64形式のJPEG画像
- 15. Magentoブロック分割
- 16. C#を使用してJPEG画像の解像度を変更する
- 17. jpeg画像シリーズをvti画像ファイルに変換する
- 18. ビデオをJavaの画像フレームに分割
- 19. C++サブ画像用の大きな画像の検索ブロック
- 20. Android HttpURLConnection POSTリクエスト画像/ jpeg
- 21. C#.NETはJPEG画像からWMVファイルを作成します
- 22. imcropを使用して画像を半分に分割する
- 23. 画像をクリック可能な部分に分割する
- 24. BufferedImageで画像の画質がJPEGになる(赤くなる)
- 25. C言語でソケットを使って画像を送信する(JPEG)
- 26. JPEG画像を読み込んで画像座標を計算する
- 27. C#でJPEG画像がプログレッシブであるかどうかを知る方法
- 28. C#でJPEG画像を検証する方法/ .Netが壊れていない
- 29. C#でJPEG画像を解凍する最も速い方法は
- 30. アンドロイドでJPEG/PNG画像をTIFF画像形式に変換するOS
すでに画像がメモリに保存されていて、DCTを実行する準備ができていますか? – GManNickG
はい、そうです。 – NiVeR
私はまだ少し不明です。メモリに圧縮されたデータがあることを意味しますか?その場合、*逆DCTを実行して空間データを復元したいとします。この場合、すでに8×8ブロックに分割されています。メモリに「未処理」のピクセルがあり、JPEG圧縮を行いたい場合は、8×8ブロックに分割し、それぞれのブロックでDCTを実行します。 –