答えて
イメージを解凍する必要があります。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. カラー画像をMATLABのブロックに分割する
- 2. jQuerymobile - iPad用のブロックと分割画面
- 3. CGI画像を分割する
- 4. CSSヘルプ - 画像を分割する
- 5. JPEG画像圧縮
- 6. Magentoブロック分割
- 7. ビデオをJavaの画像フレームに分割
- 8. C#を使用してJPEG画像の解像度を変更する
- 9. imcropを使用して画像を半分に分割する
- 10. jpeg画像シリーズをvti画像ファイルに変換する
- 11. C#.NETはJPEG画像からWMVファイルを作成します
- 12. JPEG画像を読み込んで画像座標を計算する
- 13. C言語でソケットを使って画像を送信する(JPEG)
- 14. iphoneアプリのxcodeの画像を分割する
- 15. アンドロイドでJPEG/PNG画像をTIFF画像形式に変換するOS
- 16. 2つのURL画像を1つに分割する
- 17. C#でJPEG画像を解凍する最も速い方法は
- 18. C#でJPEG画像を検証する方法/ .Netが壊れていない
- 19. デコーダテストのためのJPEG画像のライブラリ?
- 20. 4枚のピースで1枚の画像を分割
- 21. iOS:ページ分割を使って画像をスワイプする方法
- 22. スケーラブルベクターグラフィックス(SVG)画像とJPEG画像の違いは?
- 23. ASPでWindows CE上でJPEG画像を圧縮する方法
- 24. キャンバスにjpeg画像を添付
- 25. openCV:ビデオを画像シーケンスに分割する方法は?
- 26. Wordpress単一ページ - 画像とテキストを列に分割する
- 27. JPEG画像を短時間でデコードする方法
- 28. AndroidでビデオとしてJPEG画像を保存する
- 29. Base64エンコードのjavascriptに.jpeg URLで画像にアクセスする方法
- 30. jpeg画像に透明なサポート画像をペーストまたはマージする
すでに画像がメモリに保存されていて、DCTを実行する準備ができていますか? – GManNickG
はい、そうです。 – NiVeR
私はまだ少し不明です。メモリに圧縮されたデータがあることを意味しますか?その場合、*逆DCTを実行して空間データを復元したいとします。この場合、すでに8×8ブロックに分割されています。メモリに「未処理」のピクセルがあり、JPEG圧縮を行いたい場合は、8×8ブロックに分割し、それぞれのブロックでDCTを実行します。 –