2010年7月25日日曜日

オープンキャンパスで研究室紹介

オープンキャンパスにて研究室紹介の担当になったので、1日デモをやってました。とりあえず一番わかりやすいネタがいいだろうということで、いろいろやっているプロジェクトのひとつでありる、「映像・画像処理技術を利用した教育情報システムの研究開発」をテーマとしました。こういうのをやるのははじめてで、正直、ちゃんとできるのか心配だったのですが、無事終えることができました。

下の写真は、リラックマ人形を認識させる簡単なデモで、これを教育にどう応用するかを話しました。



下の写真は、「指示棒を利用したカメラ制御」の図です。きちんと動作し、ウケもよかったですね。
あと、音声認識でカメラ制御をするデモもやり、これもうまくいきました。



今回は、 開放している5時間の間に90名超の来訪がありましたが、問題なくシステムが動作したのはよかったです。

やっぱり、こういう特別なイベントだけでなく、いつでもデモができる環境を用意しておくべきだなと感じました。そうすることで、卒研やっている学生にも、自分の開発しているシステムが、どう反映していくのかがみえてきますしね。
それと、こういうデモをきっかけにシステム開発に鞭を打つというのもいいアイデアではないかと。以前の職場でそれをやってましたが、今は鞭を打たれるのは学生ではなく僕自身なわけですが、、、、
まあとにかく、この手のイベントのタスクは前向きに活用していきたいなと。

来訪者の皆様、関係者の皆様、補助してくれた陰性のU君、ありがとうございました。

Netbeans6.9でGAEのプラグインを使う

NetbeansでGAEを使うためには、nbappengineというプラグインを使えば良いわけだが、これはデフォルトのライブラリサーバーには存在しないので、Kenaiにあるプロジェクトサーバーを登録する必要がある。で、ここのライブラリURLが、6.8と6.9で異なっているようで、でそのURLは
  • http://kenai.com/downloads/nbappengine/NetBeans69/updates.xml
と6.8の場合と微妙に表記パターンが異なっているようだ。

今日、こういう初歩的なことをBLOGに書いたのは、研究室のマシンでNetbeans6.9にしたらGAEが動かなくなったというのがある。6.9に6.8のライブラリを入れると、プロジェクト作成時にエラーがでるようなので(実際ほんとうにそうなのかは確証できませんが)、気をつけてほしい。

2010年7月21日水曜日

教育改善のためのティーティングポートフォリオ

今日は、学内のFD研究会で加藤由香里先生@農工大をお招きし、表題の件についてご講演いただいたので、その件についてメモ書き。

ティーティングポートフォリオとは
今までティーティングポートフォリオ(TP)というのが今までピンと来なかったのだが、今回の話を聞いて分かってきたというのが第一の印象。TPの目的というのは、
  • 授業改善のための振り返りの資料
  • 教員(教育)実績評価のためのエビデンスとしての資料
の2つの面がある。後者はけっこう生々しい話になるが、TPの海外でのきっかけはこの後者の話のようだ。前者については、自分のためというだけに考えると費用対効果に疑問がでてくるが、それを共有し組織だてて改善していくという視点で考えると面白い話になってくる。

FDとしてのポートフィリオ作成
ミニワークを通して、ポートフォリオの作成を行なわれました。具体的には以下の項目について。
  1. ふりかえり(どのように)
  2. 方法から理念を確認(どうして)
  3. 改善(どうかわったか?)
特に若手の場合は、がむしゃらに試行錯誤で講義をしているケースがおおいので理念というのが後回しになりがち。そういう点でこの手順は面白かった.

ちなみに 本学の先生には、2の部分が納得いかなかった方がいたようだ。「教育理念なんか持ってて当たり前だろう」と、、、「方法から理念を考えるなんておかしいのではないか」と、、、まあそれは正論なわけで、若手はそこを認識する余裕がないケースが多いんですよ、、、とあとで説明はしておいたのだが、、、、

TPをつくってみようかな
個人的に、TPを作ってみようかなと思ったり。もともとポートフォリオには興味があったのだけど、どちらかというと学習者側の視点に意識が向いていたので、、、あと、本学はJABEE等でそれなりの資料を残しているわけだから、これをTPとしてとらえて、管理するシステムなどがあると面白いかも。

2010年7月8日木曜日

OpenCV2.1をWindowsで利用する

以前の記事、OpenCV2.0をWindowsで利用するの続編です。

前回の時は、Cmakeを利用して各種ファイルをコンパイルする必要がありましたが、 今はそんなことをしなくてもいいよいです。公式サイトの中に
  •  OpenCV-2.1.0-win32-vs2008.exe
 というファイルがあります。これを使えば、CMakeでコンパイルする必要はないようです。

なお、
  • ヘッダ:c:\OpenCV2.1\include\opencv
  • ライブラリ: c:\OpenCV2.1\lib
  • DLL: c:\OpenCV2.1\bin
に存在します。また、Debug用ファイルにはdという接尾語がついてます。(例:cv201d.lib) DebugとReleaseにあわせて適切に設定したほうがよいでしょう。

このインストールファイルは、vs2008用のような名前ですが、VS2010でも使えます。ネットでは、2005でも動くと書かれています。

まだ本研究室では2.0系はまともに動かしてないのですが、いつまでたっても1.0系というのはどうかと思うのでー。今年から徐々に2.0系に乗り換えようかと思います。

[C++/CLI] Visual Stdio 2010でのライブラリ設定について ~OpenCV設定を題材に~

Visual Stdio 2010になって、各種ライブラリやインクルードのディレクトリ設定の方法が変わっているようなので、メモ書きです。なお、今回はOpenCV1.0を題材にしてます。

変更点
【ツール】の【オプション】でのVC++ディレクトリの編集は奨励されなくなりました。プロパティシートを使えと言われます。

プロパティシートとは
各種設定情報を、プロパティシートというファイルに保存する形式を採用したようです。このことにより、
  • ライブラリ設定情報を各プロジェクトで共有できたり切り替えが容易になる
という利点があります。

設定手順

1.プロパティマネージャーを表示



2.プロパティシートを作成します



3.好きなファイル名を入れてください。



4.プロパティマネージャーにあるプロジェクトをひらくと、さきほど作成したプロパティシートが追加されています。(下記の例では、opencv)





5.opencvをダブルクリックすると、プロパティの編集ができますので、各項目を適切に設定しましょう。



なお、今回はプロパティを追加しましたが、既存のプロパティシートの設定を再利用する時は、2のところで、【既存のプロパティシートの追加】を選んでください。






2010年7月5日月曜日

【C++/CLI】OpenCVでのBitmapとIplImageへの相互変換

OpenCVを利用する際には、画像を扱う構造体がIplImageなわけだが、C++/CLIで利用する際の扱い方のメモ。基本的に、C++/CLIでは Bitmapクラスなわけなので、両者の変換をどうするか?ということになるが、
  •  IplImageへの変換は、IplImageのimageDataのメンバ変数に画像のアドレスを渡す
  • Bitmapへの変換は、 、IplImageのimageDataが指しているアドレスを渡す

というのが基本になります。下記は例ですが、通常のC++/MFC or Win32でのやり方とそんなに違いはないということがわかります。
Bitmap -> IplImageへの変換
private: IplImage* GetIplImage(Bitmap^ bitmap)
    {
     //IplImage *img = 0;
     Drawing::Imaging::BitmapData^ bd;

     IplImage *img = cvCreateImage(cvSize(bitmap->Width, bitmap->Height), IPL_DEPTH_8U, 3);

     bd = bitmap->LockBits(
      Drawing::Rectangle(0, 0, bitmap->Width, bitmap->Height),
      Drawing::Imaging::ImageLockMode::ReadOnly,
      Drawing::Imaging::PixelFormat::Format24bppRgb
      );

     memcpy(img->imageData, bd->Scan0.ToPointer(), img->imageSize);

     bitmap->UnlockBits(bd);
     return img;
    }


IplImage -> Bitmapへの変換
private: Bitmap^ GetBitmap(IplImage* src_img){
    
     Bitmap^ bmp = gcnew Bitmap(src_img->width, src_img->height, src_img->widthStep,
      System::Drawing::Imaging::PixelFormat::Format24bppRgb, IntPtr(src_img->imageData));
     return bmp;     
    }