Coding Memorandum

プログラミングに関する備忘録

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Haswell PC

HaswellでPCを組みました。今回使ったパーツは次の通り(かなり無難な構成です)。

マザーボード ASUS H87-PRO OCしないのでチップセットはH87で十分。
メジャーなメーカーを選択。
CPU Core i7 4770 OCしないので無印
メモリ Kingston 8GB (4GB×2) DDR3-1600 評判の良いメーカー
HDD WD Red 2.0TB 信頼性重視
電源 玄人志向 KRPW-GP650W/90+ 評判の良い電源。C6/C7ステートサポート。必要なケーブルのみ挿して使えるのでケース内がすっきりする。
ケース ANTEC NINEHUNDREDTWO-V3 冷えるケースを選択。天板に18cmファンが付く。
グラフィックボード 玄人志向 GeForce GTX660 GTX660で一番安いもの

DVDドライブ、キーボード、マウスは旧PCの流用です。同じようなPCを組む方の参考になれば。今のところ、問題なく稼働しています。OSはWindows8 64bitです。

今回は全部Amazonで揃えました。ここのところの暑さで秋葉原まで行く気力が出ませんでした…。

スポンサーサイト

Robonaut Challenge

だいぶ古い話となってしまいましたが、4月にTopCoderで「Robonaut Challenge」が開催されていて、時間の許す限り検討を進めていました。ヒューマノイドロボットの両眼カメラで見た画像からの物体認識の問題でした。

結果的には時間切れで終了という残念な状態でしたが、ここで検討したこと・調べたことなどをメモと記憶を頼りに纏めておきます。

問題の概要は、平面パネルに付いている光るプッシュボタン、トグルスイッチ等のパーツの位置と状態を識別するものでした。特徴はステレオ画像であること、視線がパネルの正面でないこと(見下ろしが多い)、照明状態が種々あることなど。

解法の方針としては、平面パネルを認識してからパネル上の各パーツを認識させるか、直接各パーツを認識させるかとなる。いづれにしても局所特徴量が必須であると思い、まずはこの辺りから調べてみました。

問題類型としては特定物体の認識となり、トレンド(既に古典?)的には局所特徴量のマッチングが思い浮かぶ。局所特徴量といえばSIFT、SURF(2年前のエントリ参照)となるが、今回は視線の向き(パネルの向き)がいろいろあるため不向きとなりそう。視線の向きが変わると画面上はアフィン変換(拡縮、回転など)となり、SIFT・SURFはアフィン変換に弱い。

局所特徴量の技術は、キーポイント検出と特徴量記述の2つの要素で構成される。それぞれ独立に考えてよいものだ。キーポイント検出は、SIFT・SURFの手法以外にもいろいろある。コーナー検出もキーポイントとなりえる。コーナー検出であればアフィン変換に対して堅牢であると考えた。手元のメモには、「FAST Corner Detector(OpenCV)」、「MSER (WikipediaOpenCV)」と残っている。

また、次のサイトが参考になった:「複数画像から3次元構造・カメラ挙動の復元手法の調査

特徴量記述については、SIFT・SURF以降の動向(BRIEF、ORB、BRISK)が次の資料に纏まっていて参考になります。

OpenCVにはFREAKが実装されている。性能は微妙?(Ref.CVPR2012 報告

局所特徴量のキャッチアップはここまでとして、以下考えたこと・試したことを記していきます。

  • アフィン変換が含まれるため、局所特徴量の適用は難しそう。ステレオ画像であることを活用することはできないか? → 対象のパネルは背景物よりカメラに近い。近いものから探索すれば良いのでは?
  • OpenCVのステレオマッチング(cvFindStereoCorrespondenceGC)を試す → 良い結果が得られず。パネル面の特徴が少ないからか?
  • ステレオ画像の距離計算は次の資料が参考になりました。
     ステレオビジョン画像処理技術の実用化研究
  • 別方針を考える : まずパネルを検出する。カメラ視点の影響からナナメに写ったパネルを正面視点に補正させる。スマホアプリでホワイトボードとか名刺の写真を補正するものをよく見かける。→ 「幾何補正」というらしい。
  • 幾何補正後のパネル画像で、局所特徴量のマッチングを行えば良いのではないか。そもそも、各部品の相対位置が固定なので、パネルをきっちり検出できたら部品の位置も導出できてしまう。
  • 四角いパネルを見つける → エッジ検出(Cannyなど)し、ハフ変換で直線を検出する方法を試す。
  • Cannyでは、光の反射具合で線分が途切れたり、パネル境界が立体的なため線が多重に検出されるなど、上手くいかない。
  • 画像の「領域分割」という手法がある。いま行いたいことはパネル部分を領域分割することだ。
  • 領域分割は次の資料が参考になりました: 画像の領域分割に関する従来研究
  • ミーンシフト法が良いようだ。「コンピュータビジョン最先端ガイド2」の2章にも記述がある。
  • OpenCV(cvPyrMeanShiftFiltering)で試作。良い結果が得られる。ただし遅い。 → 画像を縮小すればよいかも。
  • ミーンシフトに関する参考資料を挙げておきます。
      画像追跡(2) -領域の追跡-
      第8回 CV勉強会

ここまでで時間切れ、終了となりました。後で上位者のコードを見て、勉強しておかねば!

夏休み2013

今年の年明けからこの8月まで、とんでもない忙しさが続きまして、すっかりとプログラム系の活動が止まってしまいました。去年は絶望的なスケジュールの3ヶ月で大ダメージを受けましたが、今年はロングランの多忙さでダメージが蓄積しています。

仕事は一旦山を越え、次は9月にもう一山あるという状況で、束の間の谷間で気力の回復に努めています。夏休みの予定として、8/10からのICFPCに参加するつもりで事前登録まで済ませていたのですけど、残念ながら仕事のトラブルで流れてしまいました。

夏休みの残りの目標は、Haswell PCを組むことと、CVのアップデート記事を書くこと、この2点はやりたい。時間があれば、Haswellで遊びます。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。