myugaruの色々構想中・・・!

「C#」「画像処理」「XNA未対応PCでゲームIDE作りの無謀な野望」

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  98  : 記事  0  : コメント  2322  : トラックバック  59

ニュース

myugaru
仕事(昔)=ヲタク系プログラマー~マスコミ系サポートデスク
仕事(今)=電子機器系サービス業
趣味a=パズルゲーム全般、シューティングは主に見学
趣味b=画像処理関係の勉強
趣味c=プログラミング言語の勉強
趣味d=アキバ系ヲタク
趣味e=芸能アイドル系ヲタク
d,e色の強いもう一つのブログ
最新目標=シューティングゲームを作る

わんくまりんく

わんくま同盟blog C#,VB.NET掲示板

ぶろぐつーる

あわせて読みたい

はてなりんぐ

書庫

日記カテゴリ

ギャラリ

お友達

リンク

●私と画像処理~なぜか今頃まともな自己紹介?~

誰でもパソコンでプログラムを作っていると画像処理には興味を持ったりすると思う。
聞くところによれば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 より

です。

 

投稿日時 : 2008年3月16日 8:16

コメント

# re: [画像処理](x1,y1,x2,y2) vs (x,y,width,height) 2008/03/16 9:02 れい
> 平面を表す異なる2つの手段

平面じゃなくて長方形の領域にしたほうがいいような。

# re: [画像処理](x1,y1,x2,y2) vs (x,y,width,height) 2008/03/16 9:27 myugaru
To れいさん
はい、改めますm(_)m

# re: [画像処理](x1,y1,x2,y2) vs (x,y,width,height) 2008/03/16 14:38 NyaRuRu
しばしば n 個のピクセルという考え方は,ピクセルが 0 ではない面積を持つという仮定をしていますが,Direct3D のテクスチャマッピングでこの考え方だとはまることがあります.
テクスチャマッピングの UV 座標の計算に使うのは,原点からの距離 (位置ベクトル) であって,ピクセル数のことではないですな.
私が 7 年以上前から何度も見ている FAQ なので一応ご参考までに.

http://www.microsoft.com/japan/msdn/community/gdn/ShowPost-26244.htm
ttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=45&vew=1305
ttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=40&vew=243

あとはこちらとか.
http://www.radiumsoftware.com/0402.html#040222
経験上,Direct3D のテクスチャマッピングでは「ピクセルとは『サンプル点』である」モデルに立った方が理解しやすいです.

# re: [画像処理](x1,y1,x2,y2) vs (x,y,width,height) 2008/03/16 15:39 myugaru
To NyaRuRuさん
こんにちわ。コメントありがとうございます。
私の正に今この文章書いているノートが参照いただいた最初の件のIntel(R) 82852/82855 GM/GME Graphics Controllerを積んだVAIOノートなのは、また別の機会に真剣にご相談するとして(汗
Pixelの右下点が実際の描画領域に含まれないのもなんとなく気付いていました。正確な理由はよくわかっていませんでした。
ということは先に私がエントリーに書いた
■■■■
■■■■
■■■■
を実現するには両方式とも(0,0,4,3)になるということですね。それはそれで意味がわかりにくいですねえ。
私がちゃんと理解しきれていない証拠ですね。
もうちょっと深く考えてみます。

P.S.先に書いたとおりIntel82852の問題は私は自分でDirectXで今もテストプログラムを書いていますがずっと発生してました。リファレンスモードなどに変えたら発生しないというのも気付いていました。友人にプログラムを試してもらうと私のノートより輪郭が鮮明だというのも気付いていました。もとをただせばうちでXNAが動かないというのも含め全部チップのせいだろうと認識していました。また改めてこの件についての奮闘記は書かせてもらいたいと思っています。

ありがとうございました。

# re: [画像処理](x1,y1,x2,y2) vs (x,y,width,height) 2008/03/16 16:06 myugaru
To NyaRuRuさん
すみません!わかりました。
■■■■
■□□■
■■■■
はつまり(0,0,3,2)である「べき」なのですね。
そして上の■の部分はピクセルの中心を線が通過するイメージなのですね。ピクセルを点とみるか面とみるかという違いがあるんですね。知らない概念でした・・・。うーん、もぅちょっとかんがえます・・・。


# re: [画像処理](x1,y1,x2,y2) vs (x,y,width,height) 2008/03/17 12:53 凪瀬
Javaのjava.awt.Graphicsクラスより引用すると

「座標軸は無限に細く、出力デバイスのピクセル間に存在します。
図形の輪郭を描く操作は、ピクセルサイズのペンをピクセル間の無限に細い輪郭線に沿って動かしていくことによって動作します。
ペンは、輪郭線のアンカーポイントにぶら下がり、かつ右側に位置しています。」

座標とピクセルが違う扱いなんですよね。
座標は碁盤の目のように交点を用いていて、ピクセルはそのマスという状態でしょうか。
ブレゼンハムアルゴリズムとかで線を引いたりすると、この座標とピクセルの関係で悩むんですよね。

# re: [画像処理](x1,y1,x2,y2) vs (x,y,width,height) 2008/03/17 16:41 myugaru
To 凪瀬さん
画像処理ライブラリのおっしゃるような考え方を度外視して、私がディスプレー表示されたモノ主体で話を進めているのが、そもそものズレの原因だろうなっていうのは気付いていました。
きっと私は
私→画像処理ライブラリ→ディスプレー

私→ディスプレー
としてなんとか意味付けしようとしているのだと思います。
でもやっぱり何かしら無理な気配ですねえ。
・・・もう少し考えてみます。
コメントありがとうございました。


# [画像処理](x1,y1,x2,y2) vs (x,y,width,height) その3 2008/03/17 17:22 myugaruの色々構想中・・・!
[画像処理](x1,y1,x2,y2) vs (x,y,width,height) その3

# [画像処理](x1,y1,x2,y2) vs (x,y,width,height) その4 2008/03/18 12:39 myugaruの色々構想中・・・!
[画像処理](x1,y1,x2,y2) vs (x,y,width,height) その4

# [画像処理](x1,y1,x2,y2) vs (x,y,width,height) その4 2008/03/19 1:43 myugaruの色々構想中・・・!
[画像処理](x1,y1,x2,y2) vs (x,y,width,height) その4

# [画像処理](x1,y1,x2,y2) vs (x,y,width,height) その5 2008/03/21 15:53 myugaruの色々構想中・・・!
[画像処理](x1,y1,x2,y2) vs (x,y,width,height) その5

# XNAさえ出来れば 2008/03/26 13:31 myugaruの色々構想中・・・!
XNAさえ出来れば

# LibertyReserveInvestments.biz - mster Paing program,entile bok and Ani-DDoS haven!) 2008/06/19 18:42 SeskSopykayam
LibertyReserveInvestments.biz is a aggregation of skateed job people whose design is to grasp profits making investments. one of us has a -class instruction invariable everywhere how the net moves in e-business, so we can almost insure that the investments we are making generates huge rentability with low peril due to the deftness and acquaintance of each colleague of the . We've been reliably producing be like returns with above 3 years of authentic face. We cause made it our
loud unceasingly a once rush to profit from our investments and trading in a to one side align of pecuniary markets.

Program use commission penmanship and Anti-DDoS shelter!!!

Plans:
110% after 1 day
122% after 2 days
135% after 3 days

agree to E-gold and LibertyReserve.

Registration:

http://libertyreserveinvestments.biz/?ref=sas

_____________________

http://libertyreserveinvestments.biz - make easy money online

# KasYjfOIPdNiD 2011/09/28 12:40 http://oemfinder.com
myChqM It`s really useful! Looking through the Internet you can mostly observe watered down information, something like bla bla bla, but not here to my deep surprise. It makes me happy..!

# YPNNIFMVVyWr 2012/01/07 7:47 http://www.luckyvitamin.com/c-390-maca
Hi! Everyone who reads this blog - Happy Reconciliation and Accord..!

# oakley holbrook 2013/03/16 0:57 http://oakleysunglassesforcheap.webs.com/
Would you help me with the report?Talking with you is a pleasure.Where do you want to meet? Although we can't see these atoms, they really do exist.Control yourself!Who but Jack would do such a thing? Who but Jack would do such a thing? It's up to you.He does everything without aim.How are you doing with your new boss%3

# Oakley Holbrook 2013/03/17 10:58 http://oakleyfrogskinsholbrookradar.blinkweb.com/
Let bygones be bygones.If Tom cannot keep his promise, he'll lose face.We are divided in our opinions.He invited me to dinner yesterday.She dressed herself hastily.I have a headache, and she has a stomachache.I have just finished the book.Our school is in the east of Beijing.You have my word.As you know, I am a very kind person.

# Oakley Holbrook 2013/03/17 14:46 http://oakleyfrogskinsholbrookradar.blinkweb.com/
I hope we can see each other again some time.Those are watermelons.I was late for work yesterday.Did you hear about the new project?Just around the comer.I'm afraid that it's not going to work outI'm afraid that it's not going to work outIt is not so easy as you think.What's the weather like to day? How do you like Hong Kong%3

# oYsDqfYnZitvOop 2015/04/20 6:20 sally
gdW0pT http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

Post Feedback

タイトル
名前
Url:
コメント