ブログ記事を読み込もうとする、アルゴリズムとデータ構造、JPEG
うーん!更新されなくなって3年経っているけど、とてもいい、私の好きな単語の、その内容を知っている著者が、思考の向きからあまり離れていない文章を書いている、という印象で、本当に読んでいて楽しい。教科書とも、”一般向けに書かれた”物語仕立てのノイズが多い文章とも違う。自分にとって分からないところと分かるところがはっきり分かる文章だとも思う。まあ、大半が分からないのだけど。ざっくり理解したいレベルの人間にも飽きずに読める。
”やさしい言葉”で説明されるとよく分からなくなる人間なので、いつも、簡単な本を選ぶのに苦慮する。そして、ネット上にあるITの文章は理解しやすいものが豊富にあるような気がしてる(だから好き)。
アルゴリズムとデータ構造の可視化、“リッチ・ソースコード”について - ushiroad
題名に惹かれた。
そうか。画像の圧縮に、フーリエ変換なのか。これは遠い道のりだな。般教の離散数学のさわりのさわりをぎりぎりの成績でパスしたことになっているらしい、というところで、知りたいとすればそれはモチベーション次第、もっというと、モチベーションしか頼りにならないと思える。。。
さて、JPEG の最大の特徴は非可逆圧縮ですが、このDCT自体は可逆の処理で、そもそも圧縮ですらありません。非可逆圧縮を実現しているのはこの先のステップで、高周波成分の情報量を削る処理(量子化)をします。
「よく現れるパターンを辞書化する」という単純な原理に基づいている PNG や GIF と違い、JPEG の非可逆圧縮は何やら魔術的な雰囲気がありますが、このように情報量を削っている様子を可視化すると、中で何が起きているか想像ができて身近に感じられるのではないでしょうか。
さて、私はコンピュータの中で起こっていることを絵にする、ということをこれまでにも幾度か試してきました。その多くは、プログラムを読むときに処理の内容を掴むために、自分のために作ったものです。そのうち出来の良かったものはいくつか公開しましたが、最も反響が大きかったものはブラウザのレイアウト計算の流れを可視化した動画です(図5)
リッチソースコード
ライブラリという物は内部の事情を知らなくても使える“ブラックボックス”が理想ですが、3Dプログラミングの複雑さはどうしてもライブラリで隠蔽できない部分があり、ライブラリの内部構造を概観できる図は役に立つかと思います(あと、Three.JS の場合ドキュメントが未整備という事情もあります)。
へー。ライブラリはブラックボックスとして使う事が前提なのか。