yunomuのブログ

趣味のこと

2024-02-01から1ヶ月間の記事一覧

JPEGを読む(8) RECEIVEとEXTEND

ハフマン符号の復号はいいけど、その後のデータを読む部分を忘れていた。(3)のRECEIVEとEXTENDについて。 JPEGを読む(3) ハフマン符号の復号準備 - yunomuのブログ RECEIVE(SSSS) SSSSビットを読み取る処理。自明かと思ったけどちゃんと説明されていたので一…

JPEGを読む(7) コンポーネント、サンプリング係数、MCUなど

Annex Aの数学的定義を読んで実際のところ何をやっているのかを掴む。 コンポーネント(component) まずコンポーネントについて。コンポーネントは仕様のどこを読んでも「画像に含まれる2次元配列」という以上の情報が出てこない。 実のところJPEG規格は2次元…

JPEGを読む(6) フレームヘッダとスキャンヘッダ

Interpret frame header Figure E.7の"Interpret frame header"の部分Decoder#readFrameHeaderを作る。ビットフィールドの定義はTable B.2にあって、それぞれのフィールドの意味はこう。 Lf: フレームヘッダの長さ P: サンプル精度。フレーム内のコンポーネ…

JPEGを読む(5) JPEGファイル全体の構造を読めるようにする

一旦JPEGファイルの全体の構造に立ち戻る。構造のフローチャートはややこしいので一旦飛ばして。Annex E "Encoder and decoder control procedures"のE.2デコードの章を見ていく。 Decode image Decoder_setupと、SOF(start of frame)マーカーが出てくるまで…

JPEGを読む(4) ストリームを読む準備

本格的に復号していく前に、デコーダのインタフェースと補助関数を作る。既にちょっとコードに書いているけど。 外部インタフェース 外部インタフェースは一旦こういう感じで。出力はまだどういう形式にするか考えていないので一旦無し。 import ( "bufio" "…

JPEGを読む(3) ハフマン符号の復号準備

JPEGを読む(2) ハフマン表定義(DHT) - yunomuのブログ これのつづき 仕様書(PDF) https://www.w3.org/Graphics/JPEG/itu-t81.pdf ハフマン符号表があればscanのペイロードをデコードできる。復号手順はAnnex FのF.2に書いてある。 JPEGでは8×8のブロックごと…

JPEGを読む(2) ハフマン表定義(DHT)

JPEGを読む - yunomuのブログ これの続き。 JPEG仕様(PDF) https://www.w3.org/Graphics/JPEG/itu-t81.pdf Figure B.16, B17あたりにフィールドが並ぶ位置のルールが書いてあるけど、これは真面目にパーサーを書くとして。 まずはDHT(Define huffman table(s…

JPEGを読む

画像や動画のエンコード/デコードの理屈はわかるけど実際どうなっているかはよくわかってないのでとりあえずJPEGファイルの仕様を調べてみる。 資料 https://www.w3.org/Graphics/JPEG/itu-t81.pdf JISの日本語の資料もあったけど(JISX4301)、閲覧が面倒くさ…