プログラミングできる天才ちょっとこい

このエントリーをはてなブックマークに追加
1以下、名無しにかわりましてVIPがお送りします
ハフマン符号化ってなに?
2広辞苑のお兄さん ◆iZXcwHyNOM :2006/03/16(木) 12:19:23.11 ID:8XvI0zqh0
第四章で仲間になるアイツ?
3以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 12:20:30.72 ID:NG9F0nD60
               ,,r''"~:................~`ヽ、
              ,r'"::::::::::::::::::::::::::::::............゙ヽ、
              r'::::::::::::::::::::::::::::::::::::::::::::.........:::.ヽ.
            ,:'::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::::..゙:,     
            l':::::r:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.゙:,   
           ,:':::::::|::::::::i::::::::::::::,:::::::::::::::::::::::::::i:::::::::::::...゙:,  
          ,r':::::::::::ヽ、l,::;::i,::::::l:::::::::::::i:::::::ノ::::ノ::::::::::::::...゙:、  
        ,,,r'::::::::::::::::::|~-ニ.._-、;;!、;;:::ノ-‐''-'',!::::::::::::::::::::::..゙:,   
       ,:':::::::::::::::::::::::::゙iヾ.ヾ::シフ  ヾゞ::シニ' .!:ヽ::::::::::::::::::::::::゙:、
     ,r''"::::::::::::::::::::::::::::::゙i,     ,; ,     !:.,':::::::::::::::::::::::::::、::゙::、
    ,r"r"::::::::::::::::::::::::::::::::::::゙:、   ゙'"     !,j::::::::::::::::::::::::::::::::)、::::ヽ   呼んだか?
    `'ー:、_:::::::::::::::::::/:::::::::::::::ヽ,  ~ ̄   ,,ri':::::::::::::::::::::::::i:::::::,,r'' ゙''''"
       ゙'-、:::::::::/;:::::::::::::::::::::l ヽ、_,,,..r'', !::::::::,:::::::::::::::,,jr'"
          ゙ ー''-、_::::::::::;;;;;;;;i  ''''''''/::::|;;;;;;;;;i;;;;;;;;;r'''"
            _ ,,r'";;;;:r-l    i'::::::::`ー、;;;:;;;;;;`ー-、_
          /";;;;;;";;;;;;;;;;l      l__,,,r'''"~;;;;;;;;;;;;;;;;;;;;;;;;゙'ヽ
         ,-';;;;;;;;;;;;;;;;;;;;;;;;;゙ー-;;;;;''"~~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙i,
        r';;;;;;;;;;;;,,r'';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙ヽ,
       ,!;;;;;;;;;,;;;r';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,r'";;;;;;r';;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ
      ,r'";;;;;;;r';;;;゙t;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,r'';;;;;;;;;,r'";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙i,
     l;;;;;;;;;;;;i';;;;;;;;;;;ヽ、;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..-'";;;;;;;;;;,r'';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙i
     ゙t,;;;;;;;;l;;t_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ.,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙i
       /;;;;;;;l;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙i
4以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 12:20:31.38 ID:bTrZTv+zP
>>2
それホフマンwwwwwww
しかもそれ第五章
5以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 12:21:22.47 ID:fdcjHrZk0
>>3
それハマーン
6以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 12:21:29.39 ID:bTrZTv+zP
ttp://www.nikonet.or.jp/spring/sanae/inf_box/encode/encode.htm
ここの下のほうにちょっぴし載ってた
わけわかんね。
だがこれを覚えないことには俺は向上できないっ!!
7以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 12:23:46.65 ID:bTrZTv+zP
8以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 12:24:05.09 ID:8379LeTO0
よんだ?
9以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 12:30:30.55 ID:bTrZTv+zP
呼んだ
ホフマン符号化について詳しく教えてくれ
10以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 12:49:13.10 ID:atRtATOU0
>>9
今から説明する
まっとれ
11以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 12:51:05.98 ID:atRtATOU0
ハフマン符号化、というが、基本的に圧縮技術だと考えればおk
zipとかpngとかで使われてる。

まず、画像だろうとエロ動画だろうと基本的に数字の羅列で出来てるのは知ってるよな?
12以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 12:52:15.28 ID:8379LeTO0
>>9
ホ ほんとのところは
フ 普通の女の子でいたい
マ ママは私に頑張ってというけれど
ン ン〜、マンダム
13以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 12:52:54.45 ID:atRtATOU0
って、1聞いてるか?
14以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 12:58:56.32 ID:atRtATOU0
まず、ハフマン符号化をするにあたって、その数字の羅列の特徴について調べる。

例として画像データを挙げてみようか。白黒bmpで日の丸を書いてあるものを想像してくれ。
↓みたいな感じにデータとしては保存してあるわけだ。

255 255 255 255 255 255 255 255 255
255 255 255 255   0 255 255 255 255
255 255 255   0   0   0 255 255 255
255 255  0   0   0   0   0 255 255
255 255  0   0   0   0   0 255 255
255 255 255   0   0   0 255 255 255
255 255 255 255   0 255 255 255 255
255 255 255 255 255 255 255 255 255
15以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:02:26.71 ID:atRtATOU0
これを、ハフマン符号化することによって
0=255
1=0
を符号として定義することによってこの画像は
0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0
と置換できる。0,1だけで成り立ってるんだからbitとして上手く保存すれば1/8くらいのサイズになるのは理解できるよな?
16以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:03:49.16 ID:atRtATOU0
1が聞いてないなら話す意味ねーじゃんwww
一人で踊らされた俺ワロスw
17以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:03:54.27 ID:C3vBbOXz0
うはwww パトラッシュ眠くなってきたおwwww
18以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:05:22.80 ID:3do4zmF50
>>16
でも続けてwwwwwwわかりやすいよ。
おまいいいヤシwwwwwwwwwwwww
19以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:05:31.17 ID:atRtATOU0
>>17
ちょwwwおまwwww
これはgifとかでも似たような技術が使われている。圧縮の基礎だ。
20以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:07:58.85 ID:atRtATOU0
>>18
わかったノシ

ハフマン符号化ってののすごいところは、出現率が高いデータほど小さいbitに収める。って所だ。
さっきの日の丸は2色データだったが、3色だったらどうするのか。
そうなったら、3色目についても符号を割り当ててやればいい。
21以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:12:36.61 ID:atRtATOU0
さっきの画像で言うと
255 255 255 255 255 255 255 255 255
255 255 255 128   0 128 255 255 255
255 255 128   0   0   0 128 255 255
255 255  0   0   0   0   0 255 255
255 255  0   0   0   0   0 255 255
255 255 128   0   0   0 128 255 255
255 255 255 128   0 128 255 255 255
255 255 255 255 255 255 255 255 255
灰色の128ってのを加えたぞ。符号化するには
0=255 ;1=0 ;2=128
として
0 0 0 0 0 0 0 0 0
0 0 0 2 1 2 0 0 0
0 0 2 1 1 1 2 0 0
0 0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 0 0
0 0 2 1 1 1 2 0 0
0 0 0 2 1 2 0 0 0
0 0 0 0 0 0 0 0 0
となり、2が加わる。 ひぇー、こうなったらbitじゃ保存できねー!と挫折するなかれ。
2のために、2bit割いてやれ。幾分圧縮後のサイズは大きくなるが、それは情報量という概念からしょうがない問題だ。
22以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:14:51.17 ID:fKgSKQt40
ID:atRtATOU0に惚れそうです
23以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:16:16.22 ID:I+Q1kzQG0
惚れました
24以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:16:21.00 ID:3AAOVPS60
うはwwwwwwwwwおkwwwwwwwwwww
25以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:16:48.79 ID:gezxbL4a0
うはwwwwwすげー分かり易いwwwwwwwwwwwww
26以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:16:56.29 ID:3do4zmF50
まじで友達になりたいwwwwwwww
27以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:17:28.09 ID:atRtATOU0
で、2のために2bit割いてやるわけだが、当然これは圧縮効率が悪い。
この先、64とか192とかデータが出てきたときに、2bitじゃ足りなくなるのも容易に想像できる。その場合は3bitでも4bitでも割り振って使え。
どんなに割り振っても、0〜255のデータの列を扱ってる限りは8bit以下で足りる。

だが、圧縮効率を高めるためには1つでも少ないビットで終わらせなきゃならん。
そのために、全データを概して見て、一番出現率の高いデータに少ないbit、出現率の低いデータに多いbitを割いてやることが一番のポイント。
28以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:18:26.17 ID:atRtATOU0
>>22-26
ありがd
書いてる甲斐があるよ。
29以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:21:31.79 ID:bTrZTv+zP
ごめん説明してくれてた人マジでごめん
今飯食ってた
今から説明読む
ありがとう
30以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:22:38.31 ID:atRtATOU0
>>29
ノシ

例としては、適当なグラフィックソフトでpng保存をしたときに、色数を増やすとどんどんデータが大きくなっていく。

以前photoshopで、砂嵐に半透明の砂嵐を重ね雲模様を重ね…。と、非常に情報量の多い砂嵐をpng保存してみたら
bmpよりもサイズが大きくなったwwwwww
それは、0〜255全部のデータの出現率が高いせいで、最初の『ハフマン符号の定義部分』だけデータ量が増えたんだろうな。

気が向いたら試してみれ。同じピクセルサイズの画像でも、色数が多いか少ないかでzipによる圧縮率は大きく違う。
31以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:24:11.32 ID:I+Q1kzQG0
thx!

さープログラミングしたくなってきたから仕事しよ
32以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:24:53.28 ID:atRtATOU0
んで、ちょっと頭が良い香具師なら、>>27について
「ん?2って2進数で表すと10だよなぁ…、これは元に戻すときに0 255という2つのデータになっちゃって128が消えちゃうんじゃ?」と考えたはずだ。

これについて説明する。
33以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:25:32.33 ID:3do4zmF50
『ハフマン符号の定義部分』てのは
>>21で言うと 0=255 ;1=0 ;2=128
の事だよな?
34以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:27:57.00 ID:atRtATOU0
>>33正解。おまいは賢いな。

実は、この>>32の部分がハフマン符号化をハフマン符号化たらしめる一番の特徴で

0=255 ; 1=0 ; 2=128 と定義する代わりにもっと効率よく
「ハフマンツリー」ってのを構築するのだ。

ちょwwその前に誰か「バックスラッシュ」ってどうやって打つのか教えてくれwwwww/←の左右逆の奴wwww
35以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:28:52.35 ID:TY2rn0ad0
>>33
だろうな
本職PGなのにハフマン符号化を始めて知った俺ガイル
携わらない部分って結構あるもんだなーと思った
>>ID:atRtATOU0 ガンガレ。仕事の合間に勉強させてもらう
36以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:29:21.70 ID:TY2rn0ad0
「きごう」で変換するんだスネーク
37以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:30:40.78 ID:bTrZTv+zP
「ななめ」でたぶん打てるお!
38以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:31:18.69 ID:atRtATOU0
>>36 >>37
dクス!んじゃ続行する!
39以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:32:22.66 ID:bTrZTv+zP
おまえさんは説明してくれてるんだからdクス言うのはこっちの立場ですよ
dクス
40以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:32:35.75 ID:0S/MVzPo0
忍たまみたいなボケと突っ込みでワロタ
41以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:39:45.37 ID:atRtATOU0
ハフマンツリーってのは、簡単に言ってこういう風になってる

     0/     \1

   0/     \1(255) 0/ \1(0)

 0/\1(128)      0/\1(64)
こうして、次のビットが0か1かで上から樹形図を枝分かれしながら下りてくる。
データのbitに忠実に下りてきて、( )が付いてる地点に到達したら復号完了。次のデータに移るわけだ。

このツリーで行けば 01=255 ; 11=0 ; 101=64 って定義される。
重要なのは、出現率の高いデータほどツリーの上のほう=少ないビット数で復号できる地点に置くって事だ
42以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:40:36.90 ID:atRtATOU0
     0/         \1

   0/ \1(255)    0/ \1(0)

 0/\1(128)    0/\1(64)
ツリーのAAずれた…AAは苦手だ…orz
43以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:41:35.07 ID:4mC2ooOx0
ttp://bluestar9999.hp.infoseek.co.jp/a_report_dq4_0022.jpg
後衛にいるのがホフマン

ttp://bluestar9999.hp.infoseek.co.jp/a_report_dq4_0011.jpg

これらを符号化するのか・・・やっかいだな
44以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:46:42.15 ID:3do4zmF50
>>42
判り易いよ。気にせずに続けてくれ!
45以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:47:37.82 ID:KBhsmN/h0
http://live22x.2ch.net/test/read.cgi/news/1142482168/

16 :番組の途中ですが名無しです :2006/03/16(木) 13:13:21.24 ID:ODhob2Xf0
VIPって何?池沼板なの?

17 :番組の途中ですが名無しです :2006/03/16(木) 13:13:37.14 ID:eIJfTN8L0
>>16
そうだよ

29 :番組の途中ですが名無しです :2006/03/16(木) 13:15:33.03 ID:8sQnckoJO
>>16
小学生板だよ

36 :番組の途中ですが名無しです :2006/03/16(木) 13:17:25.70 ID:mdrQPzzj0 ?
VIPではクオリティ=キチガイ度が高いスレじゃないと住民にかまってもらえないからな

41 :番組の途中ですが名無しです :2006/03/16(木) 13:18:53.38 ID:rOVwOV1N0
(  ゚,_ゝ゚)バカジャネーノ
売ればいいのに

47 :番組の途中ですが名無しです :2006/03/16(木) 13:21:18.04 ID:YU5FNyYo0
これがVIPクオリティとか言い出すんだろ?
何だこいつら

59 :番組の途中ですが名無しです :2006/03/16(木) 13:31:07.62 ID:brciF2y00
びっぱー+ゲーム脳
最悪だな

67 :エスティ [sage] :2006/03/16(木) 13:39:28.12 ID:WgA5o1aS0 ?
基地外ははたで見てるのが一番面白い
46以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:48:08.72 ID:atRtATOU0
ついでに、>>42によれば001=128になるな。

ハフマンツリーの形はデータの出現率の割合によって変わる

具体的に白塗りの紙に、赤やら青やらが点在しているだけだったらツリーの形は
     0/      \1(白)

   0/ \1

 0/\1(赤) 0/\1(青)
ってなるかも知れない。 こうすれば、一番出現率の高い白のピクセルが1bitで表現できるから高い圧縮率が期待できる。
その分(赤)=001 (青)=011ってなって、多めにbitを消費しちゃうが
赤・青の存在数が少ないなら白のピクセルで削った分で十分おつりが来る。

こういう折り合いを上手くつけるのが難しい。
47以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:49:32.03 ID:atRtATOU0
     0/      \1(白)

   0/     \1

 0/\1(赤) 0/\1(青)
またずれた…orz


これで一通りハフマンの概念についての説明はおしまい。
おまいらガンガレ!
48以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:50:42.99 ID:atRtATOU0
質問は受け付ける!
49以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:55:03.34 ID:3do4zmF50
>>48
乙!!dクス!!!
ちと、>>21でシミュレートしてみる
50以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:58:10.88 ID:bTrZTv+zP
うほっ!わかりやすい説明してくれてありがとう!
つまり一番よく使われているものから順に樹形図作って
一番多く使われているのに小さい数値を割り当てるってこと?
やっぱ難しいな
51以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 13:59:05.66 ID:atRtATOU0
>>50
そうそう、分かりやすい要約dクス。
俺は樹形図の作り方で挫折した…orz
52以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:00:47.37 ID:1ZdF9LuX0
あー、それでPNGは減色するとサイズがむちゃくちゃ減るのか!!
なぞが解けた!!
atRtATOU0は教師ですか??
53以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:05:08.08 ID:3do4zmF50
>>21で、仮にハフマンツリーを
     0/      \1(白)

   0/     \1

 0/\1(灰) 0/\1(黒)

とすると
0 0 0 2 1 2 0 0 0
( 0=白 ;1=黒 ;2=灰)

111001011001111
のビット配列になるでおk?
54以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:12:36.74 ID:atRtATOU0
>>53
大正解。それは2バイトで保存できるから、元データが9バイトあることを考えれば2/9くらいに圧縮できた事になるな。
>>52
ドット打ちするときにも、データの数字は出来るだけ少ないパターンにしておくと圧縮率いいお!
俺がドット打ちするときは32の倍数の数字しか使ってない。

白黒青赤黄緑紫水色は全部0と255だけで表現できるから、8色でドット打ちすると圧縮率は鬼。
あと漏れはただの卒業式終わって暇な高校生orz
55以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:17:16.87 ID:3do4zmF50
>>54
うはwww少し理解した気がする。
ただ、効率のいいハフマンツリーをどう作るかが問題だ。

スゲー高校生だな!!
ぐぐって出てきたサイトより、はるかに判り易いよ。
テラdクス!!!!!!

このスレたてた>>1にも感謝!
56以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:18:35.68 ID:4mC2ooOx0
便乗で悪いんだけどさ
ttp://www.vipper.org/vip215231.c
これのハフマン符号化ってのがどうなってるのかわからないんだけど
たぶんcのプログラムかなんかで書かれてるんだけど何がなされてるの?
というかゲーム改造 文字コードの領域に入っちゃうから
ゲーム改造好きのプログラマーじゃないとわけわかんないかもしれんが
57以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:21:29.83 ID:4mC2ooOx0
これが読めるとドラクエ5の改造が色々と出来て面白いことになるのだが
はい、ゲーム厨ですみません
58以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:22:37.92 ID:TY2rn0ad0
>>56
本職の俺が解読してやろうか?
今日は暇だからいくらでも時間避ける
5958:2006/03/16(木) 14:22:54.82 ID:TY2rn0ad0
×やろうか?
○やってみようか?
60以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:26:40.38 ID:4mC2ooOx0
>>58-59
ママママママジですか!!!
ゲームの内容だからただハフマン符号がわかるだけじゃわけわかめになっちゃうと思って
ム板も駄目だし頼りにするところがなかったんですよ。

両刀使いですか?
6158:2006/03/16(木) 14:30:47.06 ID:TY2rn0ad0
ハフマン符号はID:atRtATOU0のおかげで理解した。
もしもちゃんとしたソースコードならコメントも期待できるし、
仕様レベルくらいなら解読出来ると思う。

今最中
62以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:34:18.65 ID:bTrZTv+zP
ええええええ!!!!!!!!
ID:atRtATOU0先生って高校生だったのですか!!!!!!
26歳くらいのプログラマーかなにかしてらっしゃるお方かと思っていましたよ・・・
お若いのにすごい・・・
6358:2006/03/16(木) 14:36:42.38 ID:TY2rn0ad0
解読。

まずこのソースはC言語。
やってることはハフマン符号化が云々よりも、ハフマン符号化されたデータファイルを参照して
フォントデータをファイル出力してるだけ。
多分この関数呼んだ後、「出力したフォントデータを参照→画面に表示」ってやってると思う

違ったら誰かフォロー頼む
64以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:38:17.58 ID:4mC2ooOx0
うおー、ありがとうー!
ちなみに根城はココ
http://game9.2ch.net/test/read.cgi/gameurawaza/1139887784/

ttp://image.i-bbs.sijex.net/bbs/azma111/1142423166316o.png
サンテョの一番始めのメッセージを変更をしようと思ったが
ハフマン圧縮されているため文字がグチャグチャになってエラーになったの図
65以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:38:52.83 ID:atRtATOU0
あと、>>21のデータが本当にアレだけなら
     0/      \1(白)
   0/(灰)\1 (黒)
とツリーを作れば

0 0 0 2 1 2 0 0 0
( 0=白 ;1=黒 ;2=灰)

111000100111
の、12ビットで表現できる。効率の良いツリーって難しいなorz
あと、>>1は理解できた?おまいさんが理解するまでつきあうお(`・ω・´)
66以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:44:28.43 ID:atRtATOU0
>>26
ちょwwww26歳とかどこから出てきたwwwwwwww漏れはただのしがないVIPPERだwwwwwww
6758:2006/03/16(木) 14:45:59.34 ID:TY2rn0ad0
>>64
おkwww把握したwwwwww
ガンガレとしか言えん罠wっうぇwっうぇwww
68以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:48:28.34 ID:atRtATOU0
>>64
ハフマンの符号は可変長だから、bit単位で操作してやらないと大変なことになるな
69以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 14:54:25.34 ID:4mC2ooOx0
ttp://www.vipper.org/vip215259.png
ロマサガのメッセージ改変なんかはクソ簡単だったんだ。
一文字は1バイトのデータでできてたから・・・

ドラクエはハフマンやら可変長やらでわけわかめ
70以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 15:14:58.79 ID:4mC2ooOx0
ほしゅ
71以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 15:18:46.82 ID:atRtATOU0
>>69
1文字を構成するビット数が不定なんだから、そのままじゃ絶対無理。
一回符号を全部復号してから改変しなきゃダメ。んで再圧縮して還元するしかない。

それはそうと>>1さんマダー?分からないところとか。
話を一通り理解できたのなら、上の方で張られてるハフマン符号のを読んでみるといいさ。
72以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 15:33:33.00 ID:W/2lUz1u0
ツリーの意味がわからん
73以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 15:37:12.60 ID:atRtATOU0
>>72
意味って、ツリーの存在意義?定義?分岐処理?
74以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 15:42:38.32 ID:W/2lUz1u0
全て
75以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 15:59:34.63 ID:atRtATOU0
>>74
漠然とした質問だから答えにくいが…。

まず、ツリーってのはただの樹形図の事な。ちなみに枝の先に付いてる要素のことを「葉」って呼んだりする。

存在意義は、圧縮させるときに、効率よく一塊のデータと1つの符号を対応させる為にある点だ。

枝分かれは必ず二又であり。三つ又にはならない。それは1bitが0か1しか表現できないからだ。
樹形図を一番上から辿っていくにあたり、それぞれの分岐点で0か1かを参照していく。0なら左、1なら右。
そして、どこかで葉にたどり着けば、そこまでの道順⇔目的地が1対1で対応しあうわけだ。
0と1のみで作られる道順と、0〜255までの値を示すデータが対応しあうわけだな。

あとはその道順だけを書き並べていけば、元のデータの羅列をもっと少ないデータ量で表現できますよ。ということだ。
76以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 16:08:37.28 ID:atRtATOU0
ここまでのこと、おk?ダメなら具体的にどこからダメだったのか教えてくれ…。
77以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 16:50:26.99 ID:0YJGRb4r0
いまさらだが、
>全部のデータの出現率が高いせい
これが惜しいな。
全部のデータが全体的に均等なせいだ。
78以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 17:05:45.23 ID:0YJGRb4r0
一応補足
例えば2x2の絵を仮定した場合。
2色
255 0
0 255
の場合は、0:50% 255:50%
3色
255 128
0 255
の場合は、0:25% 128:25% 255:50%
4色
255 128
0 64
の場合は、0:25% 64:25% 128:25% 255:25%
この出現率が均等になると、bit長の短いものも長いものも同じ位でてきてしまう。
データの量が増えた場合、bit長は元のbit長より長くなるものもある。
結果、元のファイルより大きくなるということが起きる。
79以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 17:13:52.83 ID:PZ/9e6kZ0
>>78
確かに圧縮作業の過程でファイルサイズがでっかくなrったことが何度かあった
80以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 17:15:46.34 ID:gezxbL4a0
本当に分かり易いな
ちょっと為になったぜ
81以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 18:26:09.12 ID:WX4tXpLZ0
暗号化とか圧縮のアルゴリズム思いついた人って本当頭良すぎ
こればかりは知識云々なんかじゃなくて「発想力」なんだろうな…
裾具
82以下、名無しにかわりましてVIPがお送りします:2006/03/16(木) 19:08:13.26 ID:IxXtgq1x0
保守しといたほうがいいかもわからんね
83以下、名無しにかわりましてVIPがお送りします
>>78
正直スマンかった
>>81
エントロピーだとか情報量だとかいう学問を深めていくと
最終的にたどり着く答えがこういうのしかなくなっちゃうのだ(´・ω・`)
符号化みたいなのに頼らずに圧縮アルゴリズムを作れたらそれこそ神レベルの「発想力」だと思われ。
>>82