• ベストアンサー

点字認識システムを作成したいと考えています。

点字認識システムを作成したいと考えています。 どのようなシステムかというと (1)点字本などからWebカメラで点字を読み込む (2)その点字がひらがなで表すと何に値するのかを認識する(座標を取得する必要があるとおもいます) (3)そのひらがなを「読み上げソフト」で読み上げる という感じのシステムです。 言語はC++。OpenCVを使って作成したいと考えています。 どなかたか、OpenCVに詳しい方  だいたいのプログラムを教えてください><

  • ouku3
  • お礼率50% (5/10)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

前回の回答に ------------------------------------------------------------ 1) 点字本などから点字を画像としてPCに取り込む →スキャナやカメラからの画像取り込みが必要 2) 画像から点字の位置を検出する。 →検出しやすいように、画像を加工する(回転、拡大縮小、白黒化、量子化/2値化、ノイズ除去、輪郭抽出/補正等) 3) 検出された「点字」をPC内の点字と比較し、どの文字かを判断する →パターンマッチ;単純なテンプレートマッチングで大丈夫だと思います。 ------------------------------------------------------------ とありましたが、Webカメラを使うとなると、撮影した点字の回転方向や倍率が定まらない事や照明などにより点字部分をコントラスト良く撮影する事が困難になる事から画像処理のレベルとしては結構、難しい部類に入ると思います。 おそらく、大学の研究室のテーマでやってできるかな?というレベルのような気がします。 ちなみに、OpenCVでは回転や倍率変動に対応したマッチングが無いので、OpenCVを使って単純にテンプレートマッチングで点字の認識とはいかないと思います。 画像処理のレベルを下げるには、カメラを固定する、点字が回転しないようにする、点字の紙に基準となるマーカーを付けるなど、OpenCVの処理以外にもシステムとして何かしらの工夫を考えた方が良いと思います。 答えになっていなくて申し訳ありません。

ouku3
質問者

お礼

テンプレートマッチングしてみたところ ひとつの点字は読み取ることができましたが、文字列を読み取るプログラムがわかりません>< もしよければ、わかる範囲で教えていただけませんか?><

その他の回答 (2)

noname#202167
noname#202167
回答No.3

横からすみません。アマチュアCプログラマーですが、 印刷用スキャナーなどで、距離が僅かでも離れれば真っ黒になる設定にし スキャンすれば周囲が処理しやすい画像にならないでしょうか? 初回の処理で6点の位置関係が解かる文字の検出を行い 大よその文字サイズを決定し、 文字と思しき色のピクセルを発見したら右および下に何ピクセル四方 それが広がっているか検出し、面積が文字サイズから見て妥当ならば そこに点が有る と。 正常検出した点の座標を記録し 重複ピクセルの多いものは無効として切り落とし 存在する有効な点同士の位置関係から文字を割り出す 等。 細かい誤差対応の為にかなり工夫を要すると思われますから、 あとは自力で諦めずにやるしか無いと思います。 頑張って下さい。

ouku3
質問者

お礼

やはりスキャナを使うのがいいみたいですね>< 周囲が真っ黒になる設定をしてみたいと思います。 ありがとうございます^^

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

前回、OpenCVを例に挙げたものです。 よくよく読み返すと、たくさんある点字をテンプレートマッチとは、すこし現実的ではないですね。 点の大小と位置を調べる(輪郭抽出?)→位置と大小を0/1の列にコード化→対応する文字に という流れがよいでしょうか。 そして、やはり、肝となるのは、いかに処理しやすい画像に加工するか、だと思います。 具体的な方法は残念ながらわかりません。 どんなことをしたら、点字の部分がはっきりするか、点の有無や大小がはっきりするか、これはいろいろ検討しないとならないでしょう。

ouku3
質問者

お礼

輪郭抽出やってみます^^ 画像はプログラムで加工してみたら案外いい感じに読み取りやすそうな画像になりました。 ありがとうございます^^

関連するQ&A

  • 点字本などから画像認識プログラムにより、点字を認識し その点字を文字と

    点字本などから画像認識プログラムにより、点字を認識し その点字を文字として表示するプログラムを組みたいと思っています。 このようなプログラムを組むには、どのような言語を使ったほうがいいですか? また、どのようなプログラムを組めばいいのか、流れを教えていただけると助かります。

  • 複数のカメラ認識について

    複数のカメラ認識について VC++とopencvで複数(現在は3台)のカメラの認識プログラムを作成しているのですがどこのポートにどのカメラがささっているのかという認識の方法が分かりません。 イメージングデバイスから3台の見分けをつけれるかと思いましたがうまくできずに困ってます。 各カメラを認識するコマンドが分かる方お願いします。 ちなみにカメラは ロジクールウェブカメラQcam Pro 4000です。

  • OpenCVでの指文字認識について

    私は現在、webカメラを使用し、動画像中の手形をリアルタイムで検出して、その手形に近い指文字を判別して、「あ」の形なら『あ』といった様に順次表示していくといったプログラムを作成しています。 今考えている方法としては、 (1)動画像中の肌色の部分だけウインドウ1に抽出・表示 (2)任意の位置の手の周囲に矩形で線を描画 (3)矩形内の映像を切り取り標準化 (4)あらかじめ用意していた指文字のモデル画像と、矩形内の映像をテンプレートマッチング (5)ウインドウ2に指文字を表示(ウインドウ1の手の形が「あ」なら、ウインドウ2に『あ』と表示) 大体このようにプログラムを作成してますが、恥ずかしながら(2)のあたりで詰まってます。。。 なるべく簡単なものから作成するつもりなので、まずは固定カメラで、黒い背景に手だけ映しながら手を検出させています。 よろしければ、アドバイスをください。 出来れば、手話認識・指文字認識・ジェスチャ認識などのソースプログラムなどがあれば参考にさせて頂きたいので載せてくれるならば助かります。 動作環境 Windows 7 OpenCV_1.1pre1a Visual C++ 2008 Express Edition よろしくお願いします。

  • WEBシステム作成でのオブジェクト指向の無駄について

    データベースを使用したWEBシステムの作成に、オブジェクト指向は非効率なだけだと思います。 まず、クラスを使用しない方法(include文などは使用)で作成したPHPデータベースプログラムと 同じシステムを、オブジェクト指向で作ろうとすると、かなり分かりにくいコードになると思います。 さらに、作成をしたシステムの改良やデバックにかなりの時間がかかります。なぜなら、プログ ラム上の変数の動きが非常に把握しにくいからだと思います。 プログラムの再利用なら、よほどよく使う部分や、セキュリティ上必要なところを、include文などで 管理をすれば良いと思うのです。 C/Sシステムやゲーム等ならともかく、WEBシステムでは、すでに、一つ一つの動作にプログラム ファイルが必要なのに、それをさらにクラスに分けて、変数をあちらこちらに飛ばす作りは分かりず らいと思います。 複数人で作成をする時も、WEBシステムでは、オブジェクト指向よりも各ページファイルの動作 プログラムの部分をお互いに担当していった方が、効率的で、またエンジニアもやりがいが出る と思います。 ただ、複数人で作成をする時は、プログラムで使用した変数の用途や概要などの一覧表などは、 あった方が良いと思います。 WEBシステムの作成でオブジェクト指向ではない方が効率的に感じている人で、他にも意見があ る人は教えてください。

    • 締切済み
    • PHP
  • ポップ自動作成システムを作りたい!

    卒業制作でPOP自動作成システムを作りたいと考えています。が、どの言語を使用して作ればいいか分からず困っています。少しでも良いのでこういう風に作ってはどうか?といったアドバイスを是非頂きたいです。 みなさまの力を貸してください。 卒業制作でPOP自動作成システムを作りたいと思っています。 自分は文系で専門的にシステム関連の勉強をしたことがなく(基本情報の勉強ぐらい) どの言語で目的のシステムを作ることが出来るか分からず、とても困っています。 システム概要:食べ物ポップ自動作成システム 目的:ポップ作成初心者でもかんたんにそれなりなポップを作ることができるシステム 内容:まずお菓子、パンなどポップを作成する商品カテゴリを選択→商品名、値段、一押しポイントなどを入力→作成ボタンをクリック→ポップ完成(乱数か何かで作成ボタンを押すたびに変わるようにする)→印刷 といった風に出来ればいいなと考えています。 ワードで作るよりも簡単、便利に作れるシステムを開発したいと思っています。 イメージ画像を載せておきます。 しかし、この画像配置や文字配置といったことができるシステムを作るにはどの言語を使用して作ればいいのか分かりません。 この言語でこうすれば作れるのではないか?といった助言を頂けると嬉しいです。 自分でも考えようとC言語初心者本を読み、VBについて調べているのですが、なかなか分からず困っています。 もしよろしければ、お知恵の方を貸して頂けると助かります。宜しくお願いします。 他サイトで質問をした時にはPHPなどを勧められましたが、もっと多くの人の意見を聞いてみたいと思いこちらにも投稿させていただきました。 初心者ですがこれから努力して勉強して、作っていきたいと思っています。 このシステムはこの言語をこうすれば出来るんじゃないか?といったちょっとしたアドバイスでもいいので、回答してくださると嬉しいです。 どうか宜しくお願い致します。

    • 締切済み
    • PHP
  • 座標変換

    opencvを用いたプログラムを作成しています。 http://chihara.naist.jp/opencv/?%BC%CD%B1%C6%CA%D1%B4%B9 このHPを参考にして(ほぼこのプログラムだと思ってください)プログラムを作っているのですが、『CvMat* h = cvCreateMat( 3, 3, CV_64FC1 );』のことで教えてください。 画像のaとbを座標変換した後この変換を行ったh行列の値を使用して、ある点(X,Y)をある点の(x,y)に変換する方法をご存じではないでしょうか? opencvの関数などでもhが使えるのであれば教えてください。 伝わりにくくてごめんなさい。

  • c言語で作成したデータをwindowsのアプリ(VB6で作成)で読み取りたいのですが

    VBで作成したアプリの中の変数の値をC言語で作成したプログラムで参照したり、C言語の変数(メモリの値)をVBのアプリで参照したいのですが、どのようにすればいいのでしょうか。 よろしくお願いします。

  • 被写体のHSVを正確に取得(webcam,C++)

    環境: Visual C++ 2010 Express, OpenCV2.1-0 VC++において、OpenCVを通してwebカメラの情報を取得しています。 更にそこからある範囲のHSV領域を抜き出すという処理を行なっているのですが、 照明などが変わると、被写体のHSVコードを正しく認識しなくなる事が起きるのです。 その補正を行いたいのですが、手法がわかりません。 C++で扱えるライブラリや、webカメラの調整を行えるソフトウェアは無いものでしょうか。 OpenCVでは、明度輝度など画像データの編集が出来るので(あまり複雑でなければ)僕自身が実装する事も可能です。 何を目的としているかは、以下のURLを見て頂ければ判ると思います。 URL: http://www.nicovideo.jp/watch/sm17425165 よろしくお願いします。

  • 画像処理のプログラムでカメラが認識されない

    画像処理のプログラムを組んでいるのですが、どうやってもUSBカメラが認識されなくて困っています。 もちろん、きちんとUSBカメラのドライバを入れていますし、プログラムにも問題点やおかしいところは見当たりませんでした。 また、プログラムのほうでカメラのデバイスを直接指定したのですが、まったくカメラを認識しません・・・。 そこで調べてみると、カメラを接続してもマイコンピュータのほうにカメラのデバイスが接続されたと表示されないことがわかりました。 しかしキャプチャソフトで調べてみるとちゃんとUSBカメラのほうからの映像が入力されていました。(認識されているのか?) これらから詳しく調べてみると、どうやらプログラムのほうでパソコンにつけているビデオ機器の入力用のカードのほうからの入力を認識しているようでした。 この場合どうすればいいのでしょうか? ちなみにプログラミング環境、カメラは OS:windows Vista メモリ:3GB CPU:1.86GHz×2(デュアルコア) カメラ:logicool Qcam® Connect プログラミング言語:C# です。 どなたかよろしくお願いします。

  • OpenGLについて質問です

    OpenGLでマウスをドラッグしているときに座標を取得して線を描画する プログラムを作成したのですが、以下のことが分かりません (1)ドラックしている座標は何秒(何FPS?)ごとに取得しているのか (2)座標を取得する間隔を時間で計測できるのか? (3)またその方法 よろしかったらお答えください なお、自分はC言語の時間計測のコマンドでできるのではないのかと考えています

専門家に質問してみよう