さて、何か値が与えられた時に、 その値の2進表現の何桁が有効桁かを判断したり、 対応するハフマンコードをその都度ツリーを辿って探し出したり、 そもそも与えられた値が負だったら1の補数表現に直したり・・・ なんてコトをイチイチ処理していたら時間がかかる。 日の短い時分には日が暮れちまう、温気の時分には腐っちまうので これらの変換の対応を取ったルックアップ・テーブル(LUT)を作ってしまおう。 . . . 本文を読む
ハフマンコードで記述されたデータを元データに復元するにはハフマンコードの値と元データ値との対応を知る必要がある。JpegファイルのヘッダにはDHTセグメントと呼ばれる領域があり、そこにハフマンコードと元データとの対応を表す情報が格納されている。 . . . 本文を読む
前回、「直前の処理ブロックのDC係数との差分を量子化」の コトバ通りにDC係数の量子化を行うコードを作り、 コレを低Q値指定で実行するとストライプ状のノイズが乗る という問題が出ることを紹介した。 . . . 本文を読む
あらためて英和辞典を引いて見てオドロいた。 zigzag ジグザグ[Z字, 稲妻]形(のもの) walk in zigzag ジグザグに歩く 知らなかった。ジグザグって外来語なんだ… (擬態語のたぐいかと思っていた) ソレはさておき、Zigzag Scanなのである。 . . . 本文を読む
気が付いてみたら・・・ この前、DCT(離散コサイン変換)の変換行列を作ったり その際に32bit整数演算で精度を確保するためのカサ上げ量も決めたが、 実際のDCT処理のコードを作っていなかった。 (ToT) 前回RGB⇒YCbCr変換が完成したので、 実際、それに引き続く処理でもあるので 今回はDCT処理のコードを完成させよう。 . . . 本文を読む
前回のDCT(離散コサイン変換)の検討の段階で既に触れたので、ここでRGB⇒YCbCr変換処理のファンクションを作ってしまおう。ここでちょっと考えなければならないのはデータストライド幅の算出と、元々のRGB画像のサイズが8x8のブロック境界に合わない場合の対処法だ。 . . . 本文を読む
DCTを行列演算で処理する方針や、 RGB→YCbCr変換式の方針は決まったが、 32bit整数演算するためにこれらの数値に掛けてカサ上げする 「何らかの値」の最適値を見積もろう。 . . . 本文を読む