画像の圧縮符号化 画像の圧縮符号化 画像の圧縮符号化 画像の圧縮

画像の圧縮符号化
画像の圧縮符号化
画像の符号化とは
画像の符号化とはーー圧縮の意義
皆さんの学籍番号の場合、
a603001
a603002
a603003
a603004
a603005
a603006
a603007
a603008
a603009
a603010
必要性
a603
001
002
003
004
005
006
007
008
009
010
圧縮できる
一文字1バイト、
10x7=70バイト
画像情報:2次元ないし3次元空間的な広がりと時間変化
データ量膨大
通信路、蓄積メディア(資源)はどうしても容量制限がある
転送スピード向上、限られたメディア
になるべく情報多めに蓄積したい
可能性
4+10x3=34バイト
画
像 処
もとの情報に冗長性がある
1
理
画
画像の圧縮符号化
像 処
2
理
画像の圧縮符号化
画像の符号化とは
画像の符号化とは
画像データ量の計算仕方
数えてみて
サイズ512 x 512のカラー画像一枚(1画素 x 3バイト)
画像のデータ量 =
(1画素のデータ量) x (横画素数) x (縦画素数)
512 x 512 x 3 = 786432バイト=768KB
TVディジタル放送は毎秒30枚(フレーム)
768 x 30 = 23040KB = 22.5MB
例えば、512 x 512グレー画像、各画素の諧調値1バイト
CDROM一枚700MBとすれば
画像のデータ量 =
1 x 512 x 512 = 256KB
700 / 18 ≒ 31秒
非圧縮の場合、1枚CDROMに31秒の動画しか蓄積できない!
画
像 処
3
理
画像の圧縮符号化
原画像
データ量大
像 処
画像の符号化とはーーなぜ圧縮できるか
圧縮
データ
データ量小
復号化
画像に冗長がある。 削減対象は空間的と時間的冗長度
15
空間的冗長
14
復号化
画像
データ量大
0
符号化によって原画像をより小さなデータに変換する。圧縮
されたデータは復号化によって画像に復元される。
完全に復元される場合:可逆型圧縮符号化
完全に復元されない場合:非可逆型圧縮符号化
画
像 処
4
理
画像の圧縮符号化
画像の符号化とはーー原理
符号化
画
理
まず、白い背景は何の情報も
伝えないから、冗長である。
さらに、0-1,1-0変化部が情報
を伝える、ほかは冗長…
5
時間的冗長
空間的(時間的)滑らかに変化(相関が高い)
画
像 処
理
6
1
画像の圧縮符号化
画像の圧縮符号化
画像の符号化法
ランレングス符号化
2値画像は黒画素と白画素から構成されている。
画像の圧縮符号化には、正反対要求:(1)できるだけ少ない
データに圧縮し、(2)できるだけ原画像に忠実な画像を復元。
(1) ラスタ走査順による符号化法:
2値画像に対するランレングス符号化法、ハフマン符号化法
画素の諧調値に対する予測差分を用いる予測符号化法
(2) ブロック分割による符号化法:原画像を4x4画素、8x8画素
などのブロックに分割後、各ブロックの特徴に着目して符号
化を行う。
例えば、FFT、離散コサイン変換(DCT)などの変換での圧縮
法:JPEG、MPEG符号化法
(3) 画像中の物体に着目する符号化法
(4) 出現確率を元にした統計的符号化法
(5) その他
画
像 処
ランレングス
2進数
4
100
1
1
2
10
8
1000
データの表現:
白,白,白,白,黒,白,白,白,黒,黒,白,白,白,白,白,白,白,白
白4,黒1,白3,黒2,白8
また、白の次必ず黒、黒の次は必ず白であるから
白4,1,3,2,8
白または黒の連続する画素列を白ラン、黒ランと呼ぶ。その長さ
に着目した符号化をランレングス符号化法。
7
理
3
11
画
画像の圧縮符号化
像 処
8
理
画像の圧縮符号化
ランレングス符号化
Wyleの符号化法:画像をラスタ走査順に調べて、ランレングス
を符号化する。しかしながらラン(run)の長さ、ランレングスで
ある
ランレングス符号化
4,1,3,2,8
256 X 256+ヘッダ
=65535B+ヘッダ
=65570B
を2進化し、
100,1,11,10,1000
画像の識別子、サイズ
などが含まれているもの
画像上一本の走査線
画
像 処
としてそのまま接続して
100111101000
としてしまうと、ランの区切りがわからなくなってしまう。
9
理
画像の圧縮符号化
画
像 処
理
10
画像の圧縮符号化
ランレングス符号化
ランレングス符号化
長さnのランレングスの場合、まず1を引き、n-1を2進数に直した
後、Wyle符号に当てはめる。
例えば、ランレングス3は、1を引いた2を2進数に直して10、
Wyle符号の0**の**に当てはめて010となる。
Wyle区切り記号:
ランレングス
符号
符号長
1~4
5~8
9~16
17~32
33~64
65~128
129~256
0**
10***
110***
1110****
11110*****
111110******
1111110*******
3
5
7
9
11
13
15
4、1、3、2、8のランレングスの符号化:
元のランレングスn: 4
1 3
2
8
n-1: 3
0
2
1
7
2進数: 11 00 10 01
111
Wyle符号: 011 000 010 001 10111
最終的な符号列:
01100001000110111
"*"の数(符号長)-2 = "1"の数
画
像 処
理
11
画
像 処
理
12
2
画像の圧縮符号化
画像の圧縮符号化
ランレングス符号化
ランレングス符号化
コンパイル
gcc -o rlcode rlcode.c
lsコマンドでファイル
wisdom.pgmとファイル
wisdom.wylのデータ量
を確認してください。
実行
./rlcode
入力ファイル:wisdom.pgm
出力ファイル:wisdom.wyl
テスト画像
(注意:*.wylは画像処理ツールで見えない!)
画
像 処
注意:圧縮率は画像に依存する
13
理
画像の圧縮符号化
1
像 処
理
14
ランレングス符号化
解説:
① 走査線ごとに符号化
② 処理後の各データをline_bufferへ
③ これから処理後のデータをline_bufferのどこへいれるか
gindexで指示
④ ランの長さの初期値は0ではない
⑤ 階調値はline_buffer[0]で表現され、line_buffer[1]から
ランだけを記憶
⑥ /と%の演算
⑦ バイトの作成
0
画
画像の圧縮符号化
ランレングス符号化
line_buffer 1
圧縮後のデータ量1386B
圧縮率:
1386/65535=2.1149%
原画像データ量
65570B
1
0
1
1
1
0
0
lsコマンドでファイル
complex.pgmとファイル
complex.wylのデータ量
を確認してください。
0
complex.pgm
データ量:
65570B
byte_data:10110111
画
像 処
理
圧縮後のデータ量1386B
圧縮率:
2276/65570=3.4711%
原画像256 x 256
15
注意:圧縮率は画像に依存する
雑 が 知 より白/黒の変化が多い
画
像 処
理
16
画像の圧縮符号化
ランレングス復号化法
コンパイル
gcc -o rldecode rldecode.c
実行
./rldecode
入力ファイル:圧縮の時作成されたwisdom.wyl
またはcomplex.wyl
出力ファイル:wisdomd.pgm
complexd.pgm
(原画像と区別できるような名前)
画
像 処
理
17
3