SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所

Google Glassでの画像認識アプリケーションの開発

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所 第18回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本連載ではTIS株式会社が提供している技術ブログ「Tech-Sketch」から「コレは!」というテーマをピックアップし、加筆修正して皆様にお届けしております。今回は、Google Glass上でORBアルゴリズムに基づいた画像認識アプリケーションを開発する方法について紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 昨今、Google Glassのようなヘッドマウントディスプレイ型のデバイスを活用してハンズフリーに作業をすることやエンターテイメントの目的で、キーボードや音声による入力ではなくカメラで見たものの情報を入力として画面上に有益な情報を表示するといったソフトウェアに対するニーズが高まっています。Google Glassを始めとする多くのウェアラブル端末はAndroid OS搭載でSDKも提供されているためAndroidアプリ開発者であればウェアラブルデバイス向けのアプリも比較的簡単に開発ができます。

 残念なことに、今回使用した端末のモデルは2015年1月19日(米国時間)で販売が終了してしまいましたが、これから紹介する方法はAndroid全般に有効なものなのでGoogle Glassが手元にないからといって、ここまで読んでブラウザの戻るボタンを押さないでいただけると幸いです(また、Googleで開発を続けているという次のモデルでも使えるかもしれません)。

 さて、本記事のもう一つのテーマである画像認識機能の実装ですが、OpenCV(Open Source Computer Vision Library)を利用しています。OpenCVは、Intelのロシアの研究チームによって開発されたオープンソースのコンピュータビジョンライブラリです。現在でも精力的に開発が進められているのはもちろんのこと、ライブラリの拡張を目的としたOpenCV Vision Challengeという開発コンテストが開催されるなど、コミュニティ活動も活発です。

アプリケーションの処理概要

 Androidアプリケーション内でOpenCVを利用しようとする場合、簡単な処理であれば、Java APIのみで実装することができるのですが、複雑な処理をする場合はAndroid NDKを使って実装を行います。手の込んだ処理はC/C++のコード内でするというわけです。

 下図を用いてアプリケーションの全体像を説明したいと思います。図の①~②の処理は前処理にあたります。認識対象となる訓練画像をもとに特徴量計算を実施し、計算結果をアプリケーション内に保持します。画像データに関しては、OpenCVから提供されているMat型として処理します。③~⑦は画像認識処理部分です。カメラから取得した画像の特徴量を計算し、訓練画像と比較して検出対象の画像が含まれるかどうかを判断します。ここで特徴量という聞きなれない言葉がありますが、これについては後ほど説明したいと思います。ちなみに、下の画像の黄色の背景のドクロマークが認識対象となる画像です。

開発環境の構築

 以下の環境で実装を行いました。

  • 実行デバイス:Google Glass(XE21)
  • 開発PC:MacBook Pro(OSX Yosemite 10.10.1)
  • 開発ツール:Eclipse 4.4.0
  • Android SDK:4.4.2(API Level 19)
  • Android NDK:r10(64-bit)
  • OpenCV version:2.4.9

 Android SDK、Eclipseの環境は通常のAndroidアプリの開発と同様なので省略してAndroid NDKとOpenCVの環境構築の部分のみ説明します。

Android NDKのインストール

 以下のサイトからパッケージをダウンロードします。

 ターミナル.appを開き、ダウンロードしたディレクトリで以下のコマンドを実行すると必要なファイルが抽出されて、android-ndk-<バージョン名>というフォルダができるかと思います。そのフォルダを任意のディレクトリに置き、.bashrc内でパスを通すことでAndroid NDKのインストールは完了です。

downloads$ chmod a+x <package名>
downloads$ ./<package名> 

OpenCVのインストール

 以下のサイトからAndroid向けのOpenCVライブラリを入手します。

 ダウンロードしたファイルを解凍後、任意のディレクトリに保存します。OpenCVは特にインストールの必要はなく、EclipseのWorkspaceにsdkのフォルダをインポートすればOKです。

次のページ
カメラプレビューの表示

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
近未来の技術トレンドを先取り! 「Tech-Sketch」出張所連載記事一覧

もっと読む

この記事の著者

飯田 勝也(TIS株式会社)(イイダ カツヤ)

TIS株式会社 エンタープライズソリューション推進部所属。2012年入社後、ERPの保守・追加機能開発の業務を経て、現在はエンタープライズモバイルの分野でMobile Platformを活用したiOS、Androidのアプリ開発およびコンサルティング業務に携わっています。 新しいもの好きな性格で、い...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8454 2015/02/23 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング