2008年5月アーカイブ



学校でPythonに関する小さな小さな勉強会みたいなものをすることになった。参加者10名未満という本当に小規模な発表会なんだけど、こういう集まりを主導するのは初めてなので、何を準備すべきかちょっと戸惑っている。でもg91とかでもやんなきゃだし、こういった経験は積めば積むほど


力になるから、できることを調べてやらないとなー。


あくまで規模は小さいもので、放課後のだいたい1時間くらいで終わる予定。内容は各参加者による5~10分ほどのライトニングトーク。Pythonに関わることなら何でもOKな感じ。


で、そんな矢先(というかまあ2日前なのだけど)、


1000人スピーカカンファレンス第6回について - 西尾泰和のはてなダイアリー


こんな記事。西尾さんには1000speakersのときにとんでもなくお世話になったので、こんなときさえ何の力にもなれない自分が悔しいし、つらい。でも今無理しても仕方ないので、できることをできるようにやろうと思う。


今ぼくがしたいこと。それは昔からの想いでもある、「たくさんの中高生に創作の楽しさを知らしめたい」というもの。


もっと独りよがりに言うなら「たくさんの中高生に、アクティブに動くという快感を味あわせたい」になる。


誰も彼も能動的に動きたいわけじゃないのは当然だけど、どっちつかずの姿勢をとっている人に自分の都合で働きをかけるのは悪いことじゃないと思う。本当に嫌なら拒絶するだろうし、そこまで強烈に抵抗しないということは別に嫌いじゃないだろう。


そんなわけでクラスの人たちがどのような動きを見せるか知りたいということもあって、id:yaakaitoが突如提唱したPython勉強会案を少し改造して、プチ勉強会に仕立て上げた。いきなり40分とかの長大な発表は負担が大きすぎると思ってのこと。


発表会はUstするものの、時間が時間(6/2 15:00頃)でしかも不確定なので、見るのは難しいかも。RecしてニコニコかYouTubeでの公開もする予定。話者の許可が出たもののみだけど。


うまくいくといーな、ということで色々調べてたら、上記の記事を見つけた。


そこでは1000speakersフランチャイズが提案されていて、1000speakers wikiにまとめられたそのノウハウへのリンクが掲載されていた。


1000speakers:tasks - どう書くwiki


当たり前だけどとても参考になる。本当にid:nishiohirokazuさんにはお世話になりっぱなしです。




夢を全否定された気分に陥った。 - ばらゆりてちよう


おれの考えた結論をはじめに言うと、「できないと思えばできないし、できると思うからにはできる」ということ。


ていうか、たぶんそれがすべてだ。


「筑波大AC入試」という言葉を初めて聞いたのは、1000speakers:3の途中休憩のとき。id:viverさんが終始にこにことした彼らしい表情で、「大学行くならACで筑波きなよー!ACいいよAC」みたいなことをid:lonlon2007に話してた。おれは当時普通に高専に5年通うつもりだったからそこまで自分に当てはめては聞いていなかったのだけど、懇親会でid:nyaxt氏を交えて話してるときに「やっぱACいいよAC」みたいなことを伺ったので、そのときに一気に興味を持った。というか実はそのときに半分決めてしまっていて、学校の連中は何とか説き伏せられるだろうと考えていた。


いたし、実際説得はうまくいった。というか高専の先生方なんて「あ、そうなんだー。書類要るなら言ってね」くらいのことしか言わない。これは憶測に過ぎないけど、おそらく進学を主な進路としていない高専にとって、別に学生がどこを受験してどこに通りどこに落ちようが大して興味がないのだろう。だからおれは9月頃に自分の半生をまとめる資料を書く予定だし、あわよくば本当にそれで筑波に参加しようと目論んでいる。


たぶん普通高校だと話が違う。どの大学に進学したかというのは学校のステータスになる傍らで、その生徒にとって一番適した道を歩ませるということをより重要視している印象がある。トゲのある言い方をするなら、生徒が無理せず入れる大学を割り当てたいんだ。


だから今、赤点をぎりぎりで回避しているようなリリーに無理をさせたくないと考えたのだろうし、筑波大学という虎の巣に叩き込むのも酷だろうと判断した。これも自然だ。でもリリーは、



でもできれば行きたい。


出来ることなら。


成し遂げたい。



そこに行きたいと願っている。多少――どころか過度の無理を自身に強いてでも。


それが伝わらなかったのは、その教師の持つ「たかが高校生の浅い考え」という認識のせいだ。


無理なんてずっとできるもんじゃないとか、大して深く考えてないんだろとか、そういう認識だ。だからそんな一時的な考えであとあと長く尾を引く失敗をさせたくない。それはすごく正しいし、すごくやさしい。思慮深い態度だ。


筑波に行って授業についていけなくて、もうどうしようもなくなって退学したとしよう。そのときリリーは絶望に暮れるだろう。数学や英語でごろごろと赤点を取っている彼を見てきた教師としては、その姿はありありと目に浮かぶはずだ。だから彼に無理をさせたくない。


でもさ、逆の可能性もあるよ。


リリーが結局筑波を諦めて、彼に適した大学(偏差値的な意味で)に入ったとしよう。授業には何とかついていける。何とか卒業できた。だけど彼は、生きがいにしてきた技術についてのことを、大学4年間で何ひとつ学べなかった。むしろ、大学の課すものに追われて、趣味としても技術を磨けなかった。そんな4年間を送ったとしたらどうだろう。


おれはたぶん、彼は絶望すると思う。


念のため言うけど、どんな道を選んでも絶望するしかない、とかそんなことが言いたいわけじゃない。


おれが言いたいのは、人生結局何があるかわかんないんだから、自分が正しい・やりたいと信じることをやるべきだろ、ということ。就職氷河期とかあったじゃん。あれのもっと厭らしいバージョンみたいなのが、またないなんて言い切れないんだ。


おれは結局のところ、長い知り合いという程度で、リリーの人生に対する何の責任もない。だからこういう無責任なことが言えるだけだとは思う。だからこういうリリーに対して肯定的な意見だけど取り入れるのでなくて、厳しい意見もどちらも吸収して、最終的に自分の結論を出さなきゃいけない。


以下のことは言って良いのか悪いのかよくわからないんだけど、ぶっちゃけおれは根が良いヤツじゃないので言ってしまおうと思う。


リリーの文面を読むかぎり、おれはその先生はすごく良い先生だと思う。


先生の真の意図は、別にリリーの筑波への想いを断ち切ろうとか、そういうことじゃない。


むしろそれを確かめたかったんじゃないのか。もし彼(だか彼女だか知らないけど)の言葉に打たれた程度で折れてしまう決意なら、なるほど言うとおり無理だと思うから、無責任なおれだってオススメしない。


逆に、あれほどのこと(記述からするに比較的キツい言い方だったんだろう)を言われてもなお、反駁してその決意を固めようというくらいなら、教師としても応援したくなるものだろ。もちろんその応援は何もかも肯定的に言い聞かせるなんて低レベルなものじゃなく、ずっと「無理だよ」「やめなよ」とかいうくらいの、再確認を含めた高度な激励になるとは思うけど。


それだけじゃない。


激励だけじゃなく、次にやるべきことまで教えてくれてる。


「とりあえず、数学と英語で満点を」


そりゃ満点なんてクラスで数人しかいないのにいきなりは無理かもしれない。彼(彼女)が本当に言いたいのは、とりあえず黒を取るということ。それから80、で、満点にたどりつけよということ。それを激励のオブラートに包んだだけだ。


そりゃ、言いっぱなしで教えてもくれなかったら酷い。


でも相手は教師だろ。それくらいになるまで手伝ってやるから、という話なんだ。


だからリリーはがんばるべき。


それに、その先生の本当にすごいのは、AC入試の弊害を理解しているし、リリーの夢がどういうものなのかまでしっかり把握していることだ。正直、おれは驚いた。


数学と英語ったら、技術の世界で生きようとしたとき一番重要な力だろ。





  • 初めて聞いた

  • 聞いたことはあるけど意味は知らない

  • 一応の意味は知っているけどあやふや


そんな「ハツミミ」な言葉をそのままにしておくと、意外と大事な場面で困ることがある。なので、そういう言葉に出会ったら、可能な限りさっさと調べてしまうべきだ。


間違っていたら訂正してもらえたり、アドバイスなんかももらえるかもしてないので、ブログに晒しておこうと思う。どうせ知らないことばかり。さすがid:Tnzkだ、恥を晒してもなんともないぜ!


ジンバルロック問題



ジンバルロックとは回転軸が重なったときに旨く回転することができない現象のことを言います。まぁ、よく分からないと思いますので例を用いて説明します。


シャープペンシルがあるとします。シャープペンシルを軸として考えて芯の先を回転したいものだと考えてください。シャープペンシルをいくら回転したところで芯の先は移動するはずはありませんよね。こういった現象のことをジンバルロックといいます。図で書くとこんな感じですかね。


カメラの回転 - ゲームプログラミングWiki

「回転軸が重なったときに旨く回転することができない現象」というので一瞬理解できなかったのだけど、回転したときに位置が変わらないこと、が問題になる様子。


オイラー角




ここでは、3軸すべてを使わなくとも、2軸を交互に使うことでも角度を表記できると認識しておくと良いでしょう。


座標変換

これが一番しっくりきた。


コーパス



電子化された自然言語の文章から成る巨大なテキストデータである。 言語学や自然言語処理などの研究に用いるため、言語的な情報(品詞、統語構造など)が付与されていることが多い。


コーパス - Wikipedia

スキーマ



データの管理の仕方によって、リレーショナルデータベースやカード型データベース、ネットワーク型データベースなどの種類がある。こうした基本的なデータ管理の方式は「概念スキーマ」と呼ばれることがある


スキーマとは 【schema】 - 意味/解説/説明/定義 : IT用語辞典

これは広義すぎるかなー。おれの知りたいスキーマはもっと狭義。




  • 概念スキーマ - 概念と概念間の関係の定義

  • 論理スキーマ - 実体とその属性、実体間の関係の定義

  • 物理スキーマ - 論理スキーマの具体的実装


スキーマ (データベース) - Wikipedia

これかな。でもって、気になってるのは論理スキーマっぽい。



利用者側から見たデータ構造やデータの指定方法等を表します。「副スキーマ(サブスキーマ)」とも言います。具体的には、利用者やアプリケーション別に定義する「ユーザビュー」を指すとも言えます。リレーショナルデータベースでは、用途に応じてSQL文で定義します。


no title

なるほど。具体的にそれ用の言語があるのかと思っていたけど、論理スキーマってのは「どのように用いるか」というレベルの話なのねー。




ひょんなことからモーションキャプチャシステムみたいなものを作ることになって、その実験として小規模なものを開発しているところ。キャプチャシステム自体は未完成です。


準備するもの


以下のページに従って開発環境を整える。


インストール - OpenCV@Chihara-Lab.


具体的にインストールしたものは次のとおり。



  • Visual C++ 2005 Express Edition

    • SP1 for Windows Vista

    • Platform SDK



  • OpenCV

  • IPL


経験のある人は知ってると思うけど、Platform SDKのインストールには異常に時間がかかるので、本の一冊や二冊は準備しておくといいと思う。


開発環境


使用したマシンは工人舎のSH8WP12A。USBカメラが手元にないと思っていたところ、こいつが内臓していたのでこれを使うことにした。


ところが内臓しているため、PlatformSDKのインストール中にカメラを別のマシンで使うことができず、もう一台のマシン(以前にPlatform SDKインストール済み)で先んじてテストしておくことができなかった。


あとOpenCVのインストーラをメディアにコピーしておくのを忘れたために、これをインストールすることもできなかったので、ManyCamsを使ってRubyからキャプチャして時間を潰してた。これは本当に時間を無駄にしたと思うので、事前に準備しておくといいと思う。


サンプルをチェキ!


OpenCVをインストール後、パスを通せばサンプルが動くということなのでチェックしてみた。


OpenCV/samples/を開くと、ソースファイルやプロジェクトファイルなどにまぎれて実行ファイルがあったので、ビルドなどをする前にこっちを見てみた。エッジの抽出やフラクタルの描画みたいなことをやっていて面白かったので見てみるといいと思う。


で、肝心のビルドはというと、これは失敗した。読み取り専用がどうとか、見慣れないエラーが出てたので、そろそろ時間も遅いし帰るかーという流れに。


部室を出て電車に乗った頃に気づいたんだけど、サンプルが動くというのは「サンプルプロジェクトがビルドできる」という意味ではなく「サンプルの実行ファイルが動作する」という意味だったのかも、と思った。


ここまでが昨日の話。


テスト用プロジェクトの作成


そういう流れで、もう面倒くさいのでプロジェクト作成して依存ファイルの追加設定なども済ませてやろうと思った(今冷静に考えると、これはプロジェクト単位での設定なのでサンプルとは関係ないのよね)。


そのままここに則ってカメラキャプチャをしようとしたのだけど、動作はするしGUIも生成される一方でカメラの映像が取得できない。


色々調べてみると、映像の取得ではなくカメラの取得(デバイスハンドルの取得みたいな感じ)でコケてることが判明。cvCaptureFromCAMはその引数で取得するカメラの種類を指定するのだけど、サンプルではこれが -1 となっていた。引数に -1 を与えると、cvCaptureFromCAMはイイカンジにはからって適当にカメラを取得してくれる。


これが不審だったので、試しに定義されている CV_CAP_ANY, CV_CAP_MIL, CV_CAP_VFW, CV_CAP_IEEE1394をそれぞれ与えて実行してみたところ、CV_CAP_VFW以外は取得に失敗。自動選択されているのはCV_CAP_CFWらしい。


VFWはVideo For Windowsの略で、正攻法ではこいつとDirectShowを組み合わせて実装するらしい。今回はGW中に完成させる必要があるので、手っ取り早く使えるものが欲しいので、別の方法を考えた。


まず、サンプルでカメラが取得できるかどうか調べてみた。camcapture.c(みたいな感じの(うろ覚え))をビルドしてみると、先ほどテスト用プロジェクトで発生したのと同じ状態になった。


ところが、OpenCV/otherlibs/cvcams/samples/にあるサンプルを実行してみると、普通にキャプチャできた。


CvCamを使うことに


どうやらcvcamは廃れる運命にある(具体的にはOpenCVのchangeLogにおいてその撤廃が告知されている)ようなのだけど、別にそんな末永く使うつもりじゃないし、それまでにはDirectShow+VFWに移行できると思うので、今回はcvcamを使うことにした。


cvcamを使うと、普通にキャプチャできていい感じですね。


赤い部分の抽出


カメラベースでマーカーを利用したキャプチャを行おうと考えているので、特定の色を抽出する処理が必要。


(R,G,B) = (255,0,0)な画素だけ残して、あとは(0,0,0)で埋めてしまえばいいんじゃね!? とか思うほどバカではないですが、程度問題で結局のところバカでした。


(R > 100,G,B)な画素ryということで実装してみたところ、当然ながら白も黄色も拾ってしまって話にならず、まずはさらに安直に考えを進めて「G, Bが小さければいいんじゃね?」という発想に至る。


というわけで(R > 100, G < 70, B < 70)の画素を残すようにしてみる。そこそこきれいにはなったものの、影になっている部分(暗い赤)などを拾えず、形状が欠損してしまう。


というわけで今度は比にして考えてみた。100:70ということで( R/G > 1.42 && R/B > 1.42)の画素のみを残してみると、意外とイイカンジになった。比率を調整して、今日は最終的に以下のような感じに。


f:id:Tnzk:20080504221429j:image:w200


赤い領域の抽出(1)


f:id:Tnzk:20080504221428j:image:w200


赤い領域の抽出(2)


画面左下のウィンドウが原画像、左上のウィンドウが抽出した画像を表示している。


あとはこいつらの重心を求めたりして、なんとかして座標値にする。もちろんペンとかだとどこの座標にするかという話にもなるので、ちゃんとマーカーを作ってやる。この辺は明日。


で、問題点は同様に実装できるのがR,G,Bを抽出する場合のみということ。紫とかそういう色が欲しいときにどうすればいいかというのも問題なので、そこも明日の課題。比率からもう少し考えを進めれば実現できると思うけど、どうだろう。


今回のことですごく思ったんだけど、画像処理(というほどのことはやっていないけど)は楽しいよ!3Dレンダリングが楽しいのと同じで、処理結果が目に見えるのはうれしい。




id:yaakaitoがやっていたので、マネしてみたよ!


結果は以下のとおりでした。当たってるかな?かな?



Tnzkさんの憧れの男性について


知的で外国人のような顔立ちな感じの男性が好みなようです。


それでは次に、それぞれの項目について詳しく分析をしてみましょう。まず、雰囲気ですが、Tnzkさんの場合落ち着きのある男性が好みのようです。ごく一般的な普通の男性です。


次に知的属性評価ですが、一流大学卒でエリート街道まっしぐらでないと困る!そのくらい男性の知性を求めています。自分の学力をまず見てみましょう。


そして、割と真面目な男性が好みです。小さい頃学級委員長などに憧れたのが初恋といった感じです。


男性の体型に関しては、割と細い男性が好みのようです。しかしながら太って無ければ良いよ。という寛大な感じもあります。


さて、見た目からみた男性的な傾向ですが、時に男らしい男性が好みなようです。昔、男子の制服姿にグッと来たタイプです。


次に顔的な好みですが、かなり外国人ぽい顔立ちが好みです。


そして、相当大人っぽい感じが好みです。ガキは引っ込んでろ!と言わんばかりの大人好きです。一まわり上でも全然付き合える感じです。


そんなあなたにオススメなのは…


1位 水嶋ヒロ (269点)


2位 セイン・カミュ (259.4点)


3位 阿部寛 (256点)


【 憧れ男性ちぇっく http://checker.from.tv



みんなもやってみるといいよ!





Jythonプログラミング

Jythonプログラミング





にしおさんが突然Jython本をくれると言い出したので、嬉々として待っていたところ、昨日届きました。彼が三重県などという片田舎の地名を書くのはこれが最初で最後だと思いますね。


f:id:Tnzk:20080501004332j:image:w150 f:id:Tnzk:20080501004402j:image:w150


にしおさんの字がイメージと違ってびっくりです。


Yoshioriの日記: Jython本が素晴しすぎて俺も写経し始めたから紹介が遅れちゃう件


といったエントリにもあるとおり素晴らしい内容のようです。


「ようです」というのは、申し訳ないながらまだちゃんと読んでいないからです。PythonもJavaもほとんど触ったことのない僕は、この本で同時に入門しようと思っているため、写経しつつ周りの人と議論しつつ読もうと思っています。


以前お話したときにも思ったのですが、にしおさんは比喩が上手です。それはこの本にも登場していて、必ずしも厳密ではない代わりにイメージしやすい例えから、その具体例を紹介し、最後に厳密な定義に触れるという流れが多い。これは参考にしよう、と思った次第です。


まだまだ大雑把にしか読んでいないのですが、先の書評にもあるように示唆に富んだ内容で、プログラマを志す方はみんな読むといいと思いますね。もっとしっかり読んでから、胸を張って「おれはJythonistaだよ!」と言えるようになったら、もっとテクニカルな書評を書こうと思います。


にしおさんは本当にありがとうございました!id:nishiohirokazuは永遠に不滅ですね!




真実はいつもシンプル。



なるほど、日本でだけ流行らないのも納得ですね!


個人的にはPython Image Libraryが生々しくてとても嫌悪感があります。他のふたつは下劣ながらも微笑ましさを感じますね。


下ネタが大好きなid:lonlon2007はPythonistaになると良いと思いますよ。


このアーカイブについて

このページには、2008年5月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年4月です。

次のアーカイブは2008年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.32-ja