●私と画像処理~なぜか今頃まともな自己紹介?~
誰でもパソコンでプログラムを作っていると画像処理には興味を持ったりすると思う。
聞くところによればVisualじゃないBASIC世代な先輩たちはLINE文やCIRCLE文やPSET文などで手軽にお絵かきを楽しんだそうだ。でも最近の画像処理技術の向上は目覚しく、特にハードウェア(GPU)の急速な進歩もあって、一から画素を扱うようなプログラミングはちょっと手軽には手が出しにくいところまで来ているように思う。逆にツールは充実しているのでそういう意味からもプログラムで画像を作る意味は違ってきたのかもしれない。
さて私はといえば・・・実は私もLINE文やCIRCLE文は使ったことがある。
小学生の頃に学校にたった一つしかなかったパソコンを校長先生に無理に頼んで使わせてもらって遊んだ思い出がある。それから××年。今でもプログラムで線や円を書くのは大好きだ。
わんくま同盟のブログタイトルを考えたときにサブタイトルに速攻で画像処理を入れたくらいに愛している。
あの頃から今まで私の対象は主に2次元画像処理で当然GDIやGDI+には結構お世話になっている。でも、だからといって何か作品を作っているかと言えば・・・まともに人様にお見せできそうなやつはWindowsNT4.0+VC5.0時代に作った簡単なカードゲームくらいかも知れない。
私が特に興味を持って勉強していたのは画像ファイルフォーマットで、有名どころのBITMAPやJPEGはもちろん、ご存知の無い人が多そうなマイナーフォーマットまで多くの文献を読みあさった。そしてほとんどのフォーマットのSusieプラグインをVC6.0で自作してきた。この中には今でこそ著作権も切れて公言できるがGIFのデコーダも含まれている。
あと他には自作テキストエディタなどにも挑戦した。画像処理とは一見関係ないが一応USER DRAWでGUIを作っていたので多少は関係があるように思う。これはあまり出来が良くなくて・・・というか優秀なエディタはいくらでも世に出回っていたので中途半端に投げ出した。
人に説明しづらい物作りにかまけている間に気付くと世の流れに乗り遅れてしまい、今頃からやっとDirectXの勉強をしているしだいである。
なんだか今頃ちゃんと自己紹介している。
最近文章力が上がった(※嘘。上がってませんから)ので急にたくさん自分の事も書いてみたくなったのだ。
・・・では、さっさと本題に入ります。
●矩形領域を表す異なる2つの手段
GDIもGDI+も図形描画ルーチン呼び出しは必ず座標を必要とする。
その中でも特に矩形領域を表す4数値を渡す関数は少なくない。
4数値の使い道は以下の2パターンがある。
1.Point & Point(2つの点。以降P&P)
2.Point & Size(1つの点と領域の大きさ。以降P&S)
タイトルの意味するのは関数引数形式で2パターンを表現したものだ。
(※P&P、P&Sは私の造語です)
(修正9:30 「平面」という表現を「長方形の領域」に改めました. れいさんご指摘ありがとうございました)
(修正3/18 1:00 「長方形」という表現を「矩形」に改めました。恣意のさんご指摘ありがとうございました)
●なぜGDI+はGDIの方式をやめたのか
実際に数えたわけではないが私の使ってきた関数たちは経験的に、
GDIはP&Pが多くGDI+はP&Sが多いように思う。
私の画像処理人生ではGDIの占める割合は多くGDI+はつい最近の技術と感じている。
そのせいか私はGDI+を使っていて方式の差異によるミスをよく起こしてしまう。
GDI+から初めて使用している人や、ちゃんと引数を確認して使うような人にとってはGDIとの比較に意味もないのだろう。
そういう方たちには「やめた」という表現は色々語弊もあるだろう。
しかしGDIに結構慣らされてしまった私の目には十分「やめた」ようにしか見えず、多少なりとも被害も被っていると思っている。
同じMicrosoft社のライブラリであるGDIとGDI+。どうして両者は方式に違いが出来てしまったのだろう?
私の様なGDI漬けユーザーを切り捨ててまで実装方式を変える意味とは何だろう?
●とりあえず。
ここからですます調です(笑
私なりに
勝手にまとめて叩かれる(inspired R.Tanaka.Ichiro)
ってのもアリですが(汗。
せっかく盛り上がりそうな話題なので一回目は私は何も書かずに、
色々な人からコメントとかトラックバックとかを読ませてもらいたいなあと勝手に決めました(笑
特にGDIとGDI+の対決じゃなくてP&PとP&Sの対決でもいいので何かまとめられたら嬉しいなあって思っています。
でも反応が薄そうならば(泣)一応私の方ではそれなりに連載できるくらいの断片的推測を用意しています。
それをこれから時間を見つけてシリーズ化して書き出すのもアリなのかなあと思います。
(意外とあっさり結論が出たりするかも知れませんが、それはそれで助かります)
●本日の「知れない」
・0ベースvs1ベース問題もこっそり関係しているかも知れない。
よくわかるかも知れない図
■■■■
■■■■
■■■■
P&Pだと(0,0,3,2)
P&Sだと(0,0,4,3)
(。-`ω´-)<「勝手に見つけ出した先輩たちの0ベースvs1ベース問題エントリー」
囚人さん→0 ベース vs 1 ベース
επιστημηさん→どんだけ~?
やまださん→0 ベースなんだけど……
凪瀬さん→数の数え方
(いえ、特にお呼びたてするつもりではありませんが・・・)
・多くの要求を満足するのは突き詰めればP&Sかも知れない。
なぜならP&Pでは「完全に描画しない」を表現できない。
3/17こっそり追記
とても重要な注意:私の書いてることを鵜呑みにしてはいけません。私の書いていることを確認せずに推論を進めることは自己責任でお願いいたします。最後の方の「知れない」コーナーは特に信用なりません。
3.自分で必ず試す
重要です。人の書いてる事を鵜呑みにしてはいけません。
myugaru Google先生だけでがんばる(その1) 投稿日時 : 2008年3月8日 10:08 より
です。