図1(a)及び(b)は、実施例1に係る画像表示装置における外観を示す概略図であり、図1(a)は概略斜視図、図1(b)は概略断面図である。
図1に示すように、実施形態の画像表示装置は、矩形の平面部10を有し、デスク状の表示部1と本体部2とを備えている。
表示部1は、矩形の平面部10の中央部分に、内部から投影された画像が表示される矩形スクリーン11(本発明の表示画面に相当する。)を備えている。
また、図1(b)に示すように画像表示装置の表示部1は、中央部分にスクリーン11がはめ込まれた平面部と、平面部を支える筐体12と、筐体12内に設けられ、スクリーン11に画像を投影するプロジェクタ13と、スクリーン11の裏面側全体が視野角14aとなる位置に配置され、スクリーン11を裏面側から撮影するCCD(Charge Coupled Devices)カメラ(本発明の撮像部に相当する。)とを備えている。
筐体12内に配置されたCCDカメラ14と本体部2とはコードで接続され、筐体12内に配置されたプロジェクトと図示しない本体部2(投影画像生成部)とは光学的に結合されている。
スクリーン11は、2重構造をなし、スクリーン11の裏面側には投影画像が投影される投影面11aが設けられ、スクリーン11の表面には水性ペンやホワイトボード用マーカ等を用いて描画可能な書き込み面11bが設けられ、投影面11aと書き込み面11bとは密着して一体化されている。
書き込み面11b及び投影面11aはともに透明であるが、投影面11aの書き込み面11bと密着する側の表面には微小な凹凸が設けてあり、投影面11aに画像が投影されると、その光がわずかに散乱して透過するので、書き込み面11bが設けられたスクリーン11の表面側の上方等、いろいろな角度からのその投影された画像を視認することができるように構成されている。
ここで、本体部2のハードウェア構成について、図1(c)を用いて説明する。
図1(c)は、本発明の実施例1に係る画像表示装置が有する本体部2のハードウェア構成例を示す図である。
本体部2は、図1(c)に示すように、CPU(Central Processing Unit)を備えた制御部15とRAM(Random Access Memory)やROM(Read Only Member)等を備えた主記憶部16とHD(Hard Disk)等の補助記憶部17とCCDカメラ14及びプロジェクタ13等の外部装置が接続可能な入出力I/F18及び19とから構成されており、CCDカメラ14で撮影された物体の底面の撮像を認識して物体の情報(識別情報、位置情報及び移動情報)を取得し、取得された情報に応じてプロジェクタ13からスクリーン11の裏面側に投影される投影画像を操作することができる。
なお、本体部2は、本実施例の画像表示装置専用に作成されたものでなく、本体部2の最小構成要素が備わっているPC(Personal Computer)に本発明を実現可能なプログラム及び関連データがインストールされたものであっても良い。さらに、PCの場合、筐体12外に配置されていても良い。
プロジェクタ13は、反射ミラーやビームスプリッター等の光学系により本体部2のディスプレイと結合され、本体部2で形成された所望の画像をスクリーン11の投影面11aに投影することができる。
CCDカメラ14は、例えばUSB(Universal Serial Bus)インタフェースを介して本体部2にコードで接続され、スクリーン11の表面側、すなわち書き込み面11bに載置された物体や描画された図形などをスクリーン11の裏面側、すなわち投影面11a側から所定の時間間隔で連続撮影し、撮像データを得ることができる。
このように構成された本実施例の画像表示装置は、プロジェクタ13により、本体部2で形成された所望の画像をスクリーン11の投影面11aに投影し、CCDカメラ14により、スクリーン11の表面側に載置された物体をスクリーン11の裏面側から撮影し、撮像データを得ることができる。
次に、本実施例の画像表示装置について、図2の本発明の実施例1に係る画像表示装置における主要機能部の構成例と図3の本発明の実施例1に係る画像表示装置における主な処理手順を示すフローチャートを用いて説明する。
本体部2で形成された画像は、プロジェクトによってスクリーン11の裏面側に投影され、スクリーン11の表面側にいる人は、その投影された画像を視認することができる。
図2に示すように、本体部2は、物体属性情報取得部31(トラッキング)である画像領域抽出部21、物体認識部22、アプリケーション24a(処理部)である操作処理部23、投影画像生成部24とから構成されている。
画像領域抽出部21は、CCDカメラ14で撮影された撮像データを2値化し、物体が載置されたスクリーン11上の位置、底面の輪郭及び底面に形成された円形バーコードを含む矩形画像領域70を抽出する。
投影画像生成部24は、プロジェクタ13とのインタフェースを有し、プロジェクタ13によりスクリーン11の裏面側から投影される画像を、所定のアプリケーション・プログラムに従って形成する。
物体認識部22は、画像領域抽出部21により抽出された円形バーコードの中心(posx,posy)からn(dot)に位置する任意の半径rの円周上の点を開始点とし、開始点から時計回りの走査方向に画素値を探索し、その物体の認識情報(識別コードID)、位置情報(中心の座標値)及び移動情報(物体の回転方向(以下、回転角と言う。))を得る。
操作処理部23は、物体認識部22で得た認識情報(識別コードID)、位置情報(中心の座標値)及び移動情報(物体の回転角)に対応した、属性情報記憶部25が管理する属性情報に基づいて、投影画像生成部24で所定のアプリケーション・プログラムに従って形成される画像に新たなコンテンツやアクションを加えてプロジェクタ13から投影される画像を操作する。
なお、アプリケーション24aは、物体の属性情報に応じた処理のための規則(操作対応テーブル33)を参照して、属性情報に基づく処理を行う。ここで言う「物体の属性情報」とは、スクリーン11に物体が認識された時に行われるコンピュータの表示や処理の内容が物体の識別情報(識別コードID)、位置情報(中心の座標値)及び移動情報(物体の回転角)に対応付けて定義されたものである。
投影画像生成部24は、アプリケーション・プログラムに従って形成された画像をプロジェクタ13に送出すると、プロジェクトはスクリーン11の裏面側にその画像を投影する。投影された画像は、スクリーン11の表面側から視認することができる。投影された画像は、スクリーン11の表面側から視認することができるので、この画像を視認した人が、そのスクリーン11の表面側に予め準備された複数の物体を配置する。
図3に示す画像表示装置における主な処理手順によれば、CCDカメラ14により投影面11aが撮像され(S1)、撮像データが画像領域抽出部21に送出される。画像表示装置は、物体を撮像データから切り出す(物体底面の円形バーコードを含む矩形画像領域を抽出)(S2)。
また、物体認識部22は、物体が撮影された撮像データから円形バーコードの識別コード(以下、「バーコード値」と言う。)に基づき物体を認識し、物体の属性情報を取得する(S3)。
操作処理部23は、物体の属性情報に基づいて、投影画像生成部24を操作する(S4)。また、投影画像生成部24は、アプリケーション・プログラムに従って形成された画像を操作して、プロジェクタ13から投影面11aに投影する(S5)。
以下に、各手順の処理を詳細に説明する。
CCDカメラ14により撮影された撮像データには、物体底面と手書き図形とが混在している。このため、画像領域抽出部21は、物体の画像と手書き図形とを分離する。後述のように、物体底面の円形バーコードを構成する色と手書き図形を書くペンの色は既知であるので、物体に該当する撮像データの部分と物体でない撮像データの部分とを判別できる(S1〜S2)。
まず、画素を全て白で初期化してある手書き図形を認識するための画素メモリ(画像データバッファ)を用意する。画像領域抽出部21は、取得された撮像データの画素のRGB情報を1画素ずつ取得する。各画素においてG値が例えば180(画素値は0〜255の値とする。)以上であれば背景色であると判定し、撮像データの画素を白に置き換え、すなわち当該画素をRGB(255,255,255)に設定する。なお、判定のためのG値は周囲の環境や装置の構成要件によって適切な値とする。
G値が100<G<180の場合、手書き図形であると判定して画素メモリの対応する画素を黒すなわちRGB(0,0,0)に設定し、撮像データの画素を白すなわちRGB(255,255,255)に設定する。またG値が100以下の場合、撮像データの画素を黒すなわち(0,0,0)に設定する。
従って、係る処理により、撮像データには物体の撮像データ、画素メモリには手書き図形の撮像データ、それぞれが切り分けられる。
なお、例えば、物体底面のパターンを手書き図形から分割して、物体と手書き図形の撮像データを切り分けても良い。
図4は、本発明の実施例1に係る画像表示装置における物体底面5の矩形領域を撮像データ6から抽出する例を示す図である。
物体底面5の大きさは既知(例えば、48(pixel)x 48(pixel))であるので、48(pixel)x 48(pixel)の四角形に内接する円形をなすものは底面画像と見なすことで、物体底面5のみを含む画像と手書き図形のみを含む画像とに分割できる。
画像領域抽出部21が抽出した物体4の撮像データ6には物体底面5の円形バーコードが写っている。画像領域抽出部21は、その撮像データ6を解析して物体4の配置位置及び物体底面5の輪郭の情報を抽出する。この時、物体底面5の輪郭の情報は、投影画像生成部24にも送出される。投影画像生成部24は、その情報により物体4がスクリーン11上に載置されていることを検知することができるので、投影面11aの、その物体底面5を含む領域が一様に白くなるような光画像を所定の時間間隔でプロジェクタ13に送出する(S3)。
このように、物体底面5を含む領域が一様に白くなるような光画像が投影されることによって、CCDカメラ14により撮影された撮像データ6は、2値化された時に物体底面5の輪郭や円形バーコードの情報をより鮮明に捉えることができる。
物体認識部22は、画像領域抽出部21により抽出された円形バーコードによって、パターン認識の結果、物体4の識別情報を取得することができるので、その識別情報に応じた所定のデータを操作処理部23に送出する。操作処理部23は、そのデータをアプリケーション・プログラムに加え、投影画像生成部24により形成される画像を操作する。
なお、「画像を操作する」とは、スクリーン11にすでに投影されている画像に、物体4の識別情報(識別コードID)に応じた新たな画像を重畳させることや、新たな画像を単独で表示させること、又はスクリーン11に載置した物体4を移動させた時に、その物体4の動きを認識した移動情報に応じてスクリーン11にすでに投影されている画像に動きを与えることを意味する。
具体的には、操作処理部23からコンテンツの素材データ及びアプリケーションデータを投影画像生成部24に送り、投影画像生成部24におけるアプリケーション・プログラムにそれらのデータを加えることにより、識別情報(識別コードID)に対応する新たな物体4の画像が重畳され、あるいは、すでに形成されている画像に、物体4を移動させた物体4の軌跡に応じた動きが与えられる。
図5は、本発明の実施例1に係る画像表示装置が有するスクリーン11の表面側に載置された物体4と表示された画像との例を示す図である。
図5(a)に示すように、スクリーン11の表面側には、水の流れを模した多数の記号が記録された画像が表示されている。そして、スクリーン11の表面側には、木又は石を模した、左上方に載置されている物体4Bと右下方に載置されている物体4Aとがある。水の流れを模した多数の記号100は、物体4A、4Bを避けるような流れを表している。そして、右下方に載置されている物体4Aを矢印Z方向に移動させると、水の流れを模した多数の記号100は、物体4Aの移動に応じて物体4Aを避けるように流れの方向を変化させる。そして、物体4Aの移動が図5(b)に示す位置で停止すると、水の流れを模した多数の記号100は、停止した物体4Aを避ける流れに落ち着き、以降、物体4A、4Bが移動しない限りその流れは変わらない。
図6は、本発明の実施例1に係る画像表示装置が有するスクリーン11の表面側に物体4を載置した時の物体底面5を撮影した撮像データ6の例を示す図である。
図6(a)は、スクリーン11の表面側に物体4を載置した時の物体底面5を撮影した撮像を示す図であり、図6(b)は、スクリーン11の投影面11a全体が白くなるようにして物体4の「底面」5を撮影した撮像を示す図であり、図6(c)は、スクリーン11の表面側に物体4を載置するとともに、書き込み面11bに「線(矢印)」を描画した時の物体4の「底面」5及び「線」7を撮影した撮像を示す図であり、図6(d)は、スクリーン11の投影面11a側全体が白くなるようにして物体4の「底面」5及び「線」7を撮影した撮像を示す図である。
本実施例では、ロッドインテグレータを光源に採用したプロジェクタ13を用いているので、スクリーン11の投影面11a全体を白くして撮影した時、ハイライト部に「矩形の黒」8が表示される。ただし、「底面」5及び「線」7とは十分な濃度差があり、「底面」5及び「線」7をそれぞれ認識可能である。
このように、スクリーン11の投影面11aを一時的に白くすると、スクリーン11の表面側に載置された物体底面5を確実に捉えることができる。
次に、本実施例の画像表示装置において、物体底面5の撮像データ6から円形バーコードを抽出し、抽出した円形バーコードのパターンを解析することで、物体4の認識情報(識別コードID)、位置情報(中心の座標値)及び移動情報(物体4の回転角)を取得する画像領域抽出部21及び物体認識部22について、図7〜11を用いて詳細に説明する。
はじめに、物体底面5の撮像データ6から円形バーコードを含む矩形画像領域70を抽出するとともに物体4の位置情報(中心の座標値)を取得する画像領域抽出部21について、図7〜10を用いて説明する。
図7は、本発明の実施例1に係る画像表示装置における撮像データ6を2値化した画像データの例を示す図である。
図7に示すように、撮像データ6を物体4と判断可能な濃度範囲(所定の閾値)で2値化すると、例えばロッドインテグレートを光源に採用したプロジェクタ13を用いることによる表示されるハイライト部の矩形の黒部分8やその他のノイズを除去することができるので、物体底面5の輪郭と位置を正確に捉えることができる。
図8は、本発明の実施例1に係る画像表示装置における文字切り出し方法を適用して物体底面5の矩形領域を撮像データ6から抽出する例を示す図である。
図8に示すように、撮像データ6をX方向に射影したX方向濃度ヒストグラム50とY方向に射影したY方向濃度ヒストグラム51を作成し、物体4が載置された底面の位置、輪郭及び円形バーコードを捉えることができる。
図7及び図8では、物体4が静止した状態を示しているが、プロジェクタ13から所定の時間毎にスクリーン11の投影面11a全体あるいは所定領域を白くして、CCDカメラ14で撮影し、時間毎に得られた撮像データ6の差分を求めることや、物体底面5の各点の移動ベクトルを求めること等の周知の方法を用いて、物体4が移動する時の移動情報を得ることもできる。
ここで、移動する物体底面5を、一定の時間ごとに投影面11aの所定領域を白くしてCCDカメラ14で撮影すると、残光等によりちらつきが目立つ場合がある。その場合には、投影面11aを白くする前に、通常の画像が表示された状態における撮像データ6によって物体4の位置を検出し、物体4が検出された後に投影面11a全体を一定時間白くして撮影することや、物体4が存在する領域のみを継続的に白くして撮影することによって対応することができる。
画像領域抽出部21の処理手順について、図9を用いて説明する。
図9は、本発明の実施例1に係る画像表示装置が有する画像領域抽出部21の処理手順を示すフローチャートである。
CCDカメラ14に撮影された撮像データ6は、順次、画像領域抽出部21に送出される。画像領域抽出部21は、取得された撮像データ6の画素のRGB情報を1画素ずつ取得し、各画素の画素値(例えば、RGBであれば各色0〜255の値)を所定の閾値で判別し、画素値がある閾値以下の画素を1−画素、それ以上のものを0−画素とする(S101)。
図10は、本発明の実施例1に係る画像表示装置における複数個載置された物体底面5の矩形領域を撮像データ6から抽出する例を示す図である。
画像領域抽出部21は、撮像データ6のフレーム毎にラスタ捜査し、X軸方向の射影50を取る。この処理により、X軸方向に1と0の画素列ができる。図10に示すように、X軸において物体4がある領域では、1−画素が並ぶようになる(S102)。
X軸方向に連続した1−画素の並びが、所定の値Lmin画素以上存在するX座標の領域を抽出する。そして、当該領域内において(複数あれば全て)、Y軸方向に射影を取る。図10に示すように、Y軸において物体4がある領域は、1−画素が並ぶようになる(S103)。
所定の値Lminは、物体底面5に形成された円形バーコード(サーキュラバーコード)のおよその直径である。撮影された撮像データ6の中の円形バーコードのサイズは既知であるため、Lminは物体底面5の円形バーコードの大きさとCCDカメラ14の画角に基づいて決定される。すなわち、1−画素の並びがLminより小さい場合、抽出対象である円形バーコードではないと判定できるので、Lmin画素以上の幅のものを対象とする。
次に、Y軸方向の0−画素と1−画素の並びにおいて、連続した1−画素の並びLmin画素以上Lmax画素以下である箇所の中心座標を取る。ここで取得された中心座標のY座標が、物体底面5の中心座標のY座標posyとなる。なお、Lmaxは、所定の誤差を考慮した場合の円形バーコードの1つあたりのサイズの最大値である(S104)。
Y方向の射影における1−画素の連続した並びがLmin画素以上Lmax画素以下である領域で、再びx方向への射影を取り、連続した1−画素の並びがLmin画素以上Lmax画素以下である領域の中心座標を取る。これにより、サーキュラバーコードのX座標posxが取得できる(S105)。
得られたposx,posyを中心とする半径rの円の外接矩形(矩形画像領域70)を切り出す。半径rは既知である円形バーコードの半径の大きさであり、これにより、図11で示すような円形バーコードの画像が得られる(S106)。
本実施例の円形バーコードについて、図11を用いて説明する。
図11は、本発明の実施例1に係る画像表示装置における抽出された円形バーコード301の例を示す図である。
円形バーコード301は、物体4の所定面(本実施例では底面)に貼付、書き込み若しくは彫り込まれ、また、電子ペーパ等により形成される。
円形バーコード301は、円の中心から1次元バーコードを放射状に配置されている。1次元バーコードが縞模様状の線の太さ及びその間隔によって数値等を表すバーコードであるが、円形バーコード301のバーは、円の中心から放射状に配置されているため、中心から円形の外周円に直交する方向(半径方向)の距離に応じて線の太さ及びその間隔が広くなる。すなわち、バーコードの各線は楔状をしている。
また、円形バーコード301は、バーコードの開始点301sと終了点301eの判別を容易にするため、また、物体4の回転角、すなわち回転方向を識別するため、白い部分を長く取ってあることが特徴である。
また、円形バーコード301は、書き込む面に書き込むペンよりも濃度の高い色で構成することにより、ペンで書き込まれた書き込み面11bに物体4があってもその濃度により物体位置を識別することが可能となる。なお、影やペンと異なる識別可能な色を用いても良い。
続いて、画像領域抽出部21により抽出された矩形画像領域70から円形バーコード301のパターンを解析することで、物体4の認識情報(識別コードID)及び移動情報(物体4の回転角)を取得する物体認識部22について、図12〜30を用いて説明する。
物体認識部22の処理手順について、図12を用いて説明する。
図12は、本発明の実施例1に係る画像表示装置が有する物体認識部22の処理手順を示すフローチャートである。
物体認識部22は、画像領域抽出部21により抽出された物体底面5の矩形画像領域70において、円形バーコード301の中心(posx,posy)からドーナツ状の画素領域を基に、円形バーコード301のパターン解析を行う2次元の画素配列を生成する(S201)。
次に、円形バーコード301のパターン解析の精度を向上させるために、2次元の画素配列における円形バーコード301外周円に直交する直線上の画素において、注目画素と隣接する画素に重み付けし、荷重平均を行うことで注目画素を平滑化する画像処理を行う(S202)。
次に、平滑化された画素配列に含まれる全ての画素値の輝度分布特性を基に閾値を算出し、算出した閾値に基づいて画素配列の画素を2値化する(S203)。
次に、平滑化した画素配列において、走査方向(本実施例では、時計回りの円周方向。)に従って全ての画素を走査し、2値化した画素値を基に、白又は黒の画素値が連続した並びを画素数に応じてまとめ、同時に、物体4の移動情報(物体4の回転角)を取得する(S204)。
次に、ランレングス化した全ての画素を基に、円形バーコード301のバーコード値を算出し、物体4の識別情報(識別コードID)を取得する(S205)。
以上の処理によって得られた、物体4の認識情報(識別コードID)及び移動情報(物体4の回転角)は、位置情報(中心の座標値)とともにアプリケーション24aの操作処理部23に送出される。
操作処理部23は、取得した認識情報(識別コードID)、位置情報(中心の座標値)及び移動情報(物体4の回転角)に対応する属性情報に基づいてプロジェクタ13から投影する画像を制御する。操作処理部23は、物体認識部22より送出された属性情報に応じて画像を操作し、また、属性情報に応じた処理を行い、その処理結果を画像に反映させる。
アプリケーション24aが有する操作対応テーブル33には、属性情報に対応付けて画像操作の内容が記録されている。図13は、本発明の実施例1に係る画像表示装置が有する操作対応テーブル33の例を示す図である。
操作対応テーブル33には、識別コードID、位置(中心の座標値)及び方向(物体4の回転角)に対応付けて、画像の操作内容が記録されている。
例えば、識別コードIDが1の物体4が座標(posx1,posy1)に方向dir1を向いて載置された場合、操作処理部23は、座標(posx1,posy1)に方向dir1の方向の画像1を描画する。同様にして、識別コードIDが2の物体4が、座標(posx2,posy2)に方向dir2を向いて載置された場合、操作処理部23はdir2の方向の画像2を3秒間だけ描画する。また、識別コードIDが3の物体4が、座標(posx3,posy3)に方向dir3を向いて載置された場合、操作処理部23は、座標(posx3,posy3)の位置に画像3を点滅させる。画像1〜3は、予め登録されているか操作者が指定して表示できる。
具体的な利用方法としては、電気回路シミュレーションアプリケーションを例にすれば、電気回路の構成要素である「抵抗」、「電源(電池)」、「コンデンサ」等に対応付けられた不複数個の物体4を、利用者は任意の位置に配置する。その結果、CCDカメラ14がスクリーン11を撮影し、物体4に形成された円形バーコード301から識別コードID、位置(中心の座標値)及び方向(物体4の回転角)が取得され、電気回路シミュレーションアプリケーションへ送信される。
電気回路シミュレーションアプリケーションは、取得した属性情報に基づいて、操作対応テーブルを参照し、識別コードIDから対応付けられた処理内容に従って、物体4に形成された円形バーコード301の識別コードIDに対応した電気回路の構成要素「抵抗」、「電源(電池)」、「コンデンサ」等を表す画像をスクリーン11の投影面11aに投影する。
このように、物体4に形成された円形バーコード301は、見かけ上、物体4を識別するためのコードに見えるが、実際には、物体4に対応付けられた対象物(電気回路シミュレーションアプリケーションでは、「抵抗」、「電源(電池)」、「コンデンサ」等)を識別しており、その結果、取得した認識情報(識別コードID)、位置情報(中心の座標値)及び移動情報(物体4の回転角)も、物体4に対応付けられた対象物の情報となる。よって、操作対応テーブル33は、物体4に形成された円形バーコード301から取得した情報と、物体4に対応付けられた対象物とを対応付ける役割をしている。
なお、図2の主要機能部の構成例では、アプリケーション24aが物体4の認識情報(識別コードID)、位置情報(中心の座標値)及び移動情報(物体4の回転角)と操作処理を対応付ける操作対応テーブル33を保持しているが、操作対応テーブル33を物体属性情報取得部31が保持しても良い。図31は、本発明の変形例に係る画像表示装置における主要機能部の構成例を示す図である。図31に示す変形例では、物体属性情報取得部31が操作対応テーブル33を保持している。操作対応テーブル33には、アプリケーション24aと物体4の識別コードIDが対応付けて登録されており、物体認識部22は、物体認識後、操作対応テーブル33を参照し、現在実行しているアプリケーション24aの操作対応テーブル33のみをオープンし、アプリケーション24aに渡す。
以下に、上記に説明した処理手順がどのような機能部によって行われているかについて、図14〜25を用いて説明する。
物体認識部22の主要機能部の構成について、図14を用いて説明する。
図14は、本発明の実施例1に係る画像表示装置が有する物体認識部22の主要機能部の構成例を示す図である。
図14に示すように、物体認識部22は、画素抽出部221、平滑化部222、2値化部223、画素走査部224及び識別情報取得部225とから構成されている。
画素抽出部221は、画像領域抽出部21により抽出された物体底面5の矩形画像領域70において、円形バーコード301外周円の内側の部分領域の画素を抽出する。
具体的には、図15の画素抽出部221において極座標から直交座標に変換し画素配列を生成する例に示すように、円形バーコード301の中心(posx,posy)からn-i(dot)に位置する第1の半径riの円周と中心(posx,posy)からn+j(dot)に位置する第2の半径rjの円周との間のドーナツ状の画素領域61を基に、極座標(polar coordinates)から直交座標(orthogonal coordinate system)に変換する変換式を用いて変換し、2次元の画素配列62を生成する。
生成した画素領域は、領域内の任意の画素を画素走査の開始点とし、開始点から円周方向(例えば、時計回りの方向)に画素値が走査される。
これによって、円形バーコード301を認識することができ、物体4の属性情報の取得できる。
画素抽出部221が、上記のようなドーナツ状の画素領域61を走査範囲の対象とするには、以下に挙げる2つの理由がある。この2つの理由については、図16を用いて説明する。
1つ目の理由は、画像領域抽出部21により抽出された物体底面5の画像領域の輝度分布特性である。画像領域抽出部21は、図16(a)の抽出された矩形画像領域70の例に示すような円形バーコード301を含む矩形の画像領域を抽出する。この画像領域の輝度分布特性は、図16(b)の抽出された矩形画像領域70の輝度分布特性の例に示すようなヒストグラムで表される。このヒストグラムから分かるように、黒バーコード73と白バーコード72の他、円形バーコード外周円60の外の領域71の3つのピーク値があり、このような輝度分布特性をもった画素値の範囲において、2値化の閾値を算出した場合、適切な閾値を算出することができない。何故なら、適切な閾値を算出するためには、輝度分布全体のうち2つピーク値の中間値を算出する必要があり、図16(b)に示すような3つのピーク値を持った輝度分布特性では、適切な閾値が算出できない。
2つ目の理由は、画像領域抽出部21により抽出された物体底面5の画像領域は、円形バーコード301の形状の特徴により、外周円付近や中心付近の領域にノイズが含まれている確率が高い。何故なら、外周円は、曲線と言う画素で表現するには複雑な形状特性をしており、中心は、バーコードが集中し黒密度の高い領域であるため、これらの付近に位置する画素には、ノイズが含まれ易くなり、その結果、物体4の属性情報を取得するために円形バーコード301のパターンを認識する精度が低下する場合がある。
このような理由から、図16(a)に示すような、円形バーコード301のパターンを認識する精度を保持するため、円形バーコード外周円60の内側の部分領域61において、外周円及び中心の領域から一定の画素数離れた位置の第1の半径(ri)と第2の半径(rj)との間のドーナツ状の画素領域を基に、画素配列62を形成する。
以下に、上記画素配列62を生成する手順について、図17及び18を用いて説明する。
まず、極座標とは、図17の極座標と直交座標との関係に示すように、平面上の点Pの位置を、原点Oからの距離OP=r(Pの動径)と、OPのx軸から反時計回りに測った角θ(Pの偏角)で表す座標系を言い、点Pの極座標(r,θ)と直交座標(x,y)との関係は、下記に示すような式1から式4で示すことができる。
x=rcosθ …(式1)
y=rsinθ …(式2)
r=√(x2+y2) …(式3)
θ=tan-1(y/x) …(式4)
任意の半径rに位置する円周上の画素走査は、中心(posx,posy)、半径r及び円周方向(例えば、時計回り)の回転角θを上述した式1及び式2に代入し、対応する画素の直交座標(x,y)を算出する。よって、円形バーコード外周円60の内側の部分領域61における算出された座標(x,y)に位置する画素を順に並べることで、2次元の画素配列62を生成することができる。
本実施例では、図18に示す極座標変換テーブル32を用いて、極座標から直交座標への変換処理に掛かる演算時間を短縮(CPUの演算量を低減)している。
図18の極座標変換テーブル32は、予め円形バーコード301の中心(posx,posy)からn(dot)に位置する任意の半径r及び円周方向(例えば、時計回り)の角度θに対応した画素の座標(x,y)が登録されている。
よって、画素抽出部221は、画素配列62を生成する際に、極座標(r,θ)に基づいて、極座標変換テーブル32を参照し、対応する画素の直交座標(x,y)を取得することで、上述した式1及び式2を用いた演算処理を行うことなく、画素配列62を生成することができる。
次に、平滑化部222は、円形バーコード外周円60に直交する直線上の画素において、注目画素と隣接する画素に重み付けし、荷重平均を行うことで注目画素を平滑化する。
平滑化部222が、画素抽出部221により生成した画素配列62に対して平滑化を行う理由は、画素抽出部221において、極座標から直交座標へ変換し、任意の画素数の幅をもった画素配列62を生成した場合、第1の半径(内周)と第1の半径より大きい第2の半径(外周)との円周の長さに差がでるため、外周の円周上の画素に比べて内周の円周上の画素にノイズが含まれ易いことから、注目画素において、走査方向(本実施例では、時計回りの円周方向。)に隣接する画素(注目画素に隣接する左右の画素)より外周円に直交する方向に隣接する画素(注目画素に隣接する上下の画素)に対して平滑化を行うことで、効果的にノイズを除去するためである。
以下に、平滑化部222が、どのように注目画素を平滑化しているかについて、図19を用いて説明する。
図19は、本発明の実施例1に係る画像表示装置が有する平滑化部222において画素配列62に対し平滑化を行う例を示す図であり、画素抽出部221により生成された5画素の幅をもった画素領域において注目画素3画素を平滑化するものである。
図19に示すように、平滑化部222は、画素抽出部221により極座標から直交座標に変換され生成した、中心(posx,posy)からd-2(dot)の位置にある第1の半径r4の円周上の画素Dから中心(posx,posy)からd+2(dot)の位置にある第2の半径r5の円周上の画素Eまでの5画素の幅をもった画素配列62のうち、中心(posx,posy)からd(dot)の位置にある半径r1の円周上の画素A、中心(posx,posy)からd-1(dot)の位置にある半径r2の円周上のB及び中心(posx,posy)からd+1(dot)の位置にある半径r3の円周上のCを注目画素として平滑化する。
例えば、画素Aに対して平滑化を行う場合、画素A、B及びC、それぞれの画素値a、b及びcに対して重み付けし、荷重平均した画素Aの画素値a'を算出する。
また、各画素に対して重み付けするために、予め荷重係数をフィルタ化した平滑化フィルタが用意される。図19に示す平滑化フィルタは、1行3列の荷重係数となっており、(1,2,1)の場合では、注目画素Aの荷重が全体の50%を占め、残りの50%を隣接する画素B及びCの荷重が占めているため、この平滑化フィルタを適用して平滑化を行うと、注目画素Aの画素値は、注目画素Aの画素値が優先的な値となる。
以下に、荷重係数が(1,2,1)の平滑化フィルタを画素A、B及びCに適用し、荷重平均を算出した場合の計算式を示す。
a' = (1.0 * b + 2.0 * a + 1.0 * c) / (1.0 + 2.0 + 1.0)…(式5)
また、平滑化フィルタには、図19に示すような(1,1,1)等の注目画素と隣接する画素との荷重を同じとした平均化フィルタがあり、この平均化フィルタを適用して平滑化を行うと、注目画素Aの画素値は、注目画素Aと隣接する画素B及びCの画素値で平均された値となる。
以下に、荷重係数が(1,1,1)の平均化フィルタを画素A、B及びCに適用し、荷重平均を算出した場合の計算式を示す。
a' = (1.0 * b + 1.0 * a + 1.0 * c) / (1.0 + 1.0 + 1.0)…(式6)
このように、平滑化部222は、注目画素に平滑化フィルタを用いて荷重平均を算出し、図19に示す走査方向(本実施例では、時計回りの円周方向。)に順次処理を行うことで、半径r1、r2及びr3の円周上に位置する注目画素全てに対して平滑化を行うことができる。
ここで、図19に示す平滑化の処理手順は、平滑化の処理手順の一例である。平滑化処理は、平滑化処理前の画像を保持するバッファと平滑化処理後の画像を保持するバッファをそれぞれメモリ領域に確保し、平滑化処理前の画素を基に平滑化処理を行い、平滑化処理の結果を平滑化処理後のバッファに格納し、平滑化処理を終了した後、平滑化処理前の画像を保持したバッファを破棄(割り当てられたメモリ領域を開放)する処理手順によって行う。
次に、2値化部223について説明する。
2値化部223は、平滑化部222により平滑化された画素配列62に含まれる全ての画素値の輝度分布特性を基に閾値を算出し、算出した閾値に基づいて画素配列62の画素を2値化する。
2値化部223の主要機能部の構成について、図20を用いて説明する。
図20は、本発明の実施例1に係る画像表示装置が有する2値化部223の主要機能部の構成例を示す図である。
図20に示すように、2値化部223は、閾値算出部2231、白黒判定部2232及び2値化値決定部2233から構成されている。
閾値算出部2231は、平滑化部222により平滑化された画素配列62に含まれる全ての画素値の輝度分布特性を基に、2値化を行う際の閾値を算出する。
2値化の閾値を算出する方法の1つに判別分析法(Discriminant Analysis Method)があり、画素値の輝度分布特性を基に、2つのピーク値の間で最適な閾値を算出する方法である。
判別分析法は、画素値を2つのクラスに分割し、クラス1のクラス内分散とクラス2のクラス間分散それぞれを求め、閾値を画素値の最小値から最大値まで動かしていき、クラス2をクラス1で除算した値が最大となる画素値を最適な閾値とする。
例えば、本実施例のような8bit(256階調)の濃淡画像を2値化する際の最適な閾値を判別分析法で求める場合、クラス1は輝度値0〜t-1、画素数n1、平均輝度値avf1、分散σ1 2とし、クラス2は輝度値t〜255、画素数n2、平均輝度値avf1、分散σ2 2、とし、輝度値fを持つ画素数nfとすると、以下の式7及び式8によりクラス1の分散σ1 2とクラス2の分散σ2 2が求められる。
また、全画素の輝度平均値avfとすると、クラス内分散σ
w 2とクラス間分散σ
B 2は、以下の式9及び式10により求められる。
式9及び式10により求められたクラス内分散とクラス間分散を基に、以下の式11により算出される値が最大となる時の輝度値tが最適な閾値となる。
σ
B 2/σ
w 2 …(式11)
このように、閾値算出部2231は、上記に説明した判別分析法を用いて、平滑化部222により平滑化された画素配列62に含まれる全ての画素値の輝度分布特性を基に、2値化を行う際の閾値を算出することができる。
次に、白黒判定部2232は、閾値算出部2231により算出された閾値に基づいて、平滑化部222により平滑化された画素配列62に含まれる全ての画素を2値化する。
具体的は、閾値より大きな画素値は、全て白(255)と判定し、閾値より小さな画素値は、全て黒(0)と判定する。
このように、閾値算出部2231は、閾値に基づいて、平滑化部222により平滑化された画素配列62に含まれる全ての画素を2値化することができる。
また、ここで言う「平滑化後の画素を2値化する」とは、平滑化後の画素値(0〜255)を2値化した画素値(0又は255)に変換する訳ではなく、白黒判定部2232が2値化処理を行った後、画素配列62全ての画素は、平滑化後の画素値と2値化後の画素値の両方を持つと言う意味である。
よって、物体認識部22では、白黒判定部2232の処理の後、1つの画素に対して、2つの画素値を保持する。
次に、2値化値決定部2233は、白黒判定部2232により2値化された画素配列62に含まれる全ての画素において、円形バーコード外周円60に直交する直線上に連続する奇数個の画素の2値化の値を多数決理論により最終決定する。
以下に、多数決部が、どのように連続する奇数個の画素の2値化の値を決定しているかについて、図21を用いて説明する。
図21は、本発明の実施例1に係る画像表示装置が有する2値化値決定部2233における多数決理論により画素値を決定する例を示す図であり、白黒判定部2232より2値化された画素配列62において、円形バーコード外周円60に直交する直線上に連続する奇数個の画素の2値化の値を多数決理論により最終決定するものである。
図21に示すように、2値化値決定部2233は、白黒判定部2232により2値化された、中心(posx,posy)からd-1(dot)の位置にある半径r2の円周上の画素Bから中心(posx,posy)からd+1(dot)の位置にある半径r3の円周上の画素Cまでの3画素の幅をもった画素配列62のうち、中心(posx,posy)からd(dot)の位置にある半径r1の円周上の画素A、中心(posx,posy)からd-1(dot)の位置にある半径r2の円周上のB及び中心(posx,posy)からd+1(dot)の位置にある半径r3の円周上のCを注目画素として、多数決理論により、連続する注目画素(3画素)の2値化の値を最終決定する。
例えば、連続する画素A、B及びCのうち、画素A及びBの画素値が黒(0)で画素Cの画素値が白(255)の場合、画素値Cも黒(0)とする。また、その逆に、画素A及びBの画素値が白(255)で画素Cの画素値が黒(0)の場合、画素値Cも白(255)とする。
よって、連続した3画素において、多数決理論により、3画素全てが白(255)なら白(255)、3画素全てが黒(0)なら黒(0)、また、3画素のうち2画素が白(255)なら3画素白(255)、3画素のうち2画素が黒(0)なら3画素黒(0)として3画素の2値化の値を最終決定する。
このように、2値化値決定部2233は、多数決理論により、連続する奇数個の注目画素の2値化の値を多数決し、図21に示す走査方向(本実施例では、時計回りの円周方向。)に順次処理を行うことで、半径r1、r2及びr3の円周上に位置する注目画素全てに対して2値化の値を最終決定することができる。
次に、画素走査部224は、平滑化部222により平滑化された画素配列62において、走査方向(本実施例では、時計回りの円周方向。)に従って、全ての画素を走査し、物体4の移動情報(物体4の回転角)を取得する。
以下に、画素走査部224が、どのように画素を走査し、物体4の移動情報(物体4の回転角)を取得するかについて、図22を用いて説明する。
図22は、本発明の実施例1に係る画像表示装置が有する画素走査部224における画素走査の例を示す図であり、平滑化部222より平滑化された画素配列62において、時計回りの円周方向に画素を走査するものである。
図22に示すように、画素走査部224は、平滑化部222により平滑化された画素配列62において、画素抽出部221により画素配列62を生成した中心(posx,posy)からd(dot)に位置する半径r1の円周上の開始点Sから終了点Eまでの全ての画素を、時計回りの円周方向に走査する。
画素走査部224は、画素を走査した際に、現在走査中の画素値(平滑化後の画素値)を取得し、2値化後に保持しておいた2値化値に基づいて同じ白又は黒の画素が連続した場合、連続した画素数をカウントするとともに、画素走査により取得した平滑化後の画素値を連続した分だけ合計する(以下、合計値を「合計画素値」と言う。)。
図23は、本発明の実施例1に係る画像表示装置が有する画素走査部224におけるランレングス化を示す図である。
例えば、図23に示すように、走査している位置がPaの場合、Pa-1に位置する画素と同じ黒の画素が連続していることから、画素数2及びPa-1の画素値110とPaの画素値115を合計した合計画素値225の値を保持する。
また、走査が進みPbの位置に来た場合、Pb-1に位置する画素と同じ白の画素が連続していることから、画素数2及びPb-1の画素値240とPbの画素値245を合計した合計画素値485の値を保持する。
このように、画素走査部224は、画素配列62全ての画素の並びを、白の画素が連続した並びを画素数に応じてまとめた白ランと、黒の画素が連続した並びを画素数に応じてまとめた黒ランとに変換する。この変換をランレングス化と言う。
画素配列62全ての画素において、ランレングス化された白ラン及び黒ランの並びは、物体4の回転方向を識別するための白画素が最大に連続する領域(以下、「回転角識別部」と言う。)とIDコードを識別するための黒画素と白画素の並びからなるバーコード部とに分かれている。
よって、画素走査部224は、ランレングス化された画素の並びから、白画素が最大に連続する白ランを検出することで、走査を開始した開始点から検出した白ランの開始点までの距離(画素数)を割り出すことで、物体4の移動情報(物体4の回転角)を取得することができる。
また、画素走査部224は、一旦ランレングス化を行ってから、回転角識別部の検出、バーコード部の解析と言う3段階の流れになっているが、実際には、回転角識別部である白ランの画素数は既知であるため、ランレングス化の際に、物体4の移動情報(物体4の回転角)や識別コードIDを取得することが可能となる。
何故なら、画素配列62において画素走査を行う際に、白画素の連続最大数が既知の最大数+1に達した時点で回転角識別部であることが分かるため、次に出現する黒画素がバーコード部の開始点301sと言える。この開始点301sの1つ前が回転角識別部の終了点であるので、この時点で物体4の移動情報(物体4の回転角)が取得できる。また、バーコード部の開始点301sから順番に走査方向に従って白ラン及び黒ランを取得すれば、バーコード値を算出することもできる。
また、画素走査部224は、必要に応じて走査開始点(画素配列62の先頭画素)と終了点(画素配列62の最終画素)をマージする。
図24は、本実施例に係る画素配列62において走査開始点と終了点をマージした様子を示す図である。
画素配列62の生成は、円周上の任意の画素から1周分の画素を配列したものであるため、走査開始点が白ラン又は黒ランの開始点であるとは限らない。そのため、図24に示すように、ランレングス化を行った際に、本来なら連続した並びである白ラン又は黒ランが、走査開始点と終了点の位置に分かれてしまう場合がある。このように走査開始点と終了点に分かれてしまったランを本来の白ラン又は黒ランの状態に戻すことをマージすると言う。
画素走査部224は、このように、走査開始点(画素配列62の先頭画素)と終了点(画素配列62の最終画素)をマージすることで、マージ後の画素配列62のうち、最も長い(画素数の多い)白ランを検出することができ、図24に示すようなバーコード部と回転角識別部とを認識することができる。
次に、識別情報取得部225は、画素走査部224によりランレングス化された結果に基づいて、バーコード値(バー73やスペース72の幅)を算出し、物体4の識別情報(識別コードID)を取得する。
以下に、識別情報取得部225が、どのように物体4の識別情報(識別コードID)を取得するかについて、図25を用いて説明する。
図25は、本発明の実施例1に係る画像表示装置が有する識別情報取得部225におけるバーコード値を算出する例を示す図である。
バーコードは、幅の異なるバー73とスペース72の組合せにより構成され、バー73とスペース72の幅にもいくつかのパターンが用意され、これらのパターンを組み合わせることによってバーコード値を表している。そのため、ランレングス化された白ランと黒ランを基に、バーコードのバー73とスペース72が表しているバーコード値を算出する必要がある。
図25に示すように、識別情報取得部225は、画素走査部224により検出されランレングス化されたバーコード部の白ランの合計画素値を、バーコードにおける最小幅の白線(スペース72)を表す画素の合計画素値(白線の最小単位)で除算し、また、ランレングス化されたバーコード部の黒ランの合計画素値を、黒線(バー73)の最小単位の合計画素値で除算することで、白ラン及び黒ランで表されたバーコード値を算出する。ここで言う「バーコード値の算出」とは、白ラン及び黒ランの並びからバーコード値をデコード(decode)すると言う意味である。
例えば、黒ランの合計画素値990をバーコード値の黒の最小単位の画素値330で除算した場合、3と言うバーコード値が算出される。また、白ランの合計画素値1320を、バーコード値の白の最小単位の画素値660で除算した場合、2と言うバーコード値が算出される。
このことを踏まえて、図25に示すような白ラン及び黒ランの並びにおいて各ランに対応したバーコード値を算出すると、332231132と言う値が得られる。
算出されたバーコード値を基に、物体4の識別情報(識別コードID)とバーコード値が対応付けられた識別コードID変換テーブルを参照し、該当する識別情報(識別コードID)を取得する。
このように、識別情報取得部225は、画素走査部224により検出されランレングス化されたバーコード部の白ラン又は黒ランの合計画素値を、バーコード値の白又は黒の最小単位の画素値で除算することで、バーコード値を算出し、物体4の識別情報(識別コードID)を取得することができる。
続いて、上記に説明した物体認識部22の各機能部が行う処理手順について、図26〜30を用いて説明する。
図26は、本発明の実施例1に係る画像表示装置が有する画素抽出部221の処理手順(5画素の幅をもつ画素配列62を生成した場合)を示すフローチャートである。
まず、画素抽出部221は、画素配列62を構成する画素を抽出する、円形バーコード外周円60の内側の部分領域61(ドーナツ状領域61)を設定する。その際、ドーナツ状の領域の内周の半径r1(第1の半径r1)と外周の半径r2(第2の半径r2)を取得する(S301)。この時、画素抽出を開始する半径rを第2の半径r2とし、抽出した画素が代入された画素配列62のpの行番号(i)及び列番号(j)を初期化する。
次に、第1の半径r1と第2の半径r2との間に位置する半径r(r1 ≦ r ≦ r2)の値(中心(posx,posy)からのドット数)を基に、極座標変換テーブル32を参照し、ドーナツ状領域61から半径rに該当する座標(x,y)に位置する画素p[i,j]の画素値を取得し、画素配列62のpの値をして保持する(S302)。
次に、極座標変換テーブル32において、半径rの円周上全ての画素を取得したか否かを判定する(S303)。
画素抽出部221は、半径rの円周上全ての画素を取得していない場合(S303がNOの場合)、画素配列62のpの列番号(j)の値をインクリメントし(S304)、半径rの円周上全ての画素を取得するまで処理を続ける(S304)。ここで言う「処理を続ける」とは、半径rの円周上の画素がN個ある場合、配列1行の0からN-1列まで画素値を取得し、画素配列62のpへ代入することを意味する。
また、半径rの円周上全ての画素を取得した場合(S303がYESの場合)、画素配列62のpの行番号(i)の値が、第2の半径r2から第1の半径r1を減算した値より小さい値か否かを判定する(S305)。
画素抽出部221は、画素配列62のpの行番号(i)の値が、第2の半径r2から第1の半径r1を減算した値(本実施例では5ドットとしている)より小さい又は等しい値の場合(S305がYESの場合)、第1の半径r1と第2の半径r2との間に位置する次の半径rを決定し、画素配列62のpの行番号(i)の値をインクリメントする(S306)。その後、S302の処理を行う。
また、画素配列62のpの行番号(i)の値が、第2の半径r2から第1の半径r1を減算した値より大きい値の場合(S305がNOの場合)、円形バーコード外周円60の内側のドーナツ状領域61にある全ての画素から画素配列62のpを生成し、処理を終了する。
図27は、本発明の実施例1に係る画像表示装置が有する白黒判定部2232の処理手順を示すフローチャートである。
まず、白黒判定部2232は、閾値算出部2231において式7〜11に示した判別分析法により算出された閾値(th)を取得する(S401)。
次に、画素抽出部221により生成された画素配列62のpを行番号(i)及び列番号(j)の順に参照し、i行j列の画素値を取得する(S402)。
次に、取得した画素値と閾値(th)との大小を比較する(S403)。
白黒判定部2232は、取得した画素値が閾値(th)より大きい又は等しい場合(S403がYESの場合)、取得した画素p[i,j]は、白(255)であると判定する(S404)。この時、白(255)と反算した値(2値化値)は、平滑化した画素p[i,j]とは別のデータ領域に一時保持する(例えば、「pp[i,j] = 255」等。)。
また、取得した画素値が閾値(th)より小さい場合(S403がNOの場合)、取得した画素p[i,j]は、黒(0)であると判定する(S405)。この時、黒(0)と反算した値(2値化値)は、平滑化した画素p[i,j]とは別のデータ領域に一時保持する(例えば、「pp[i,j] = 0」等。)。
次に、白黒判定部2232は、画素配列62のpの列全ての画素p[i,j](列番号(j)が0〜N-1の範囲)の白黒を判定したか否かを判断する(S406)。
白黒判定部2232は、まだ、画素配列62のpの列全ての画素p[i,j](列番号(j)が0〜N-1の範囲)の白黒を判定していない場合(S406がNOの場合)、画素配列62のpの列番号(j)をインクリメントし(S407)、列番号(j)が0〜N-1の範囲の全ての画素p[i,j]について白黒判定する。
また、画素配列62のpの列全ての画素p[i,j](列番号(j)が0〜N-1の範囲)の白黒を判定した場合(S406がYESの場合)、画素配列62のpの行全ての画素p[i,j](行番号(i)が第2の半径r2から第1の半径r1を減算したドット数の範囲)の白黒を判定したか否かを判断する(S408)。
白黒判定部2232は、まだ、画素配列62のpの行全ての画素p[i,j](行番号(i)が第2の半径r2から第1の半径r1を減算したドット数の範囲)の白黒を判定していない場合(S408がNOの場合)、画素配列62のpの行番号(i)をインクリメントし(S409)、行番号(i)が第2の半径r2から第1の半径r1を減算したドット数の範囲の全ての画素p[i,j]について白黒判定する。
また、画素配列62のpの行全ての画素p[i,j](行番号(i)が第2の半径r2から第1の半径r1を減算したドット数の範囲)の白黒を判定した場合(S408がYESの場合)、画素配列62のpの全ての画素p[i,j]に対して白黒判定を行ったと判断し、処理を終了する。
図28は、本発明の実施例1に係る画像表示装置が有する2値化値決定部2233の処理手順(3画素の注目画素の画素値を多数決理論により決定した場合)を示すフローチャートである。
まず、2値化値決定部2233は、2値化後の画素ppの画素値が黒(0)であった場合に、その画素数をカウントするカウンタ(count)を初期化(count = 0)する(S501)。
次に、白黒判定部2232により判定された2値化結果が格納された画素配列62のppを行番号(i)及び列番号(j)の順に参照し、i行j列の画素値を取得し(S502)、取得した画素pp[i,j]の画素値が黒(0)か否かを判定する(S503)。この時、画素pp[i,j]を取得する順番は、図21で示したように、多数決理論を適用する範囲内の奇数個(本実施例では3画素としている)の画素pp[i,j]に対して、円形バーコード外周円60に直交する方向で行うことを考慮し、画素配列62のppにおいて、円周方向の列番号(j)に対し直交する方向の行番号(i)を多数決理論の範囲内でインクリメントし、画素pp[i,j]を取得する。
2値化値決定部2233は、取得した画素ppの画素値が黒(0)である場合(S503がYESの場合)、カウンタを1つカウントする(S504)。
次に、2値化値決定部2233は、多数決理論を適用する範囲内の奇数個(本実施例では3画素としている)の画素pp[i,j]を全て取得し、白黒判定を行ったか否かを判断する(S505)。
2値化値決定部2233は、まだ、奇数個(本実施例では3画素としている)の画素pp[i,j]を全て取得し、白黒判定を行っていない場合(S505がNOの場合)、画素配列62のppの行番号(i)をインクリメントし(S506)、行番号(i)が多数決理論を適用する範囲の全ての画素pp[i,j]について白黒判定する。
また、奇数個(本実施例では3画素としている)の画素pp[i,j]を全て取得し、白黒判定を行った場合(S505がYESの場合)、奇数個(本実施例では3画素としている)全ての画素pp[i,j]のうち、画素値が黒(0)である画素pp[i,j]が白(255)である画素pp[i,j]より多いか否かを判定する(S507)。
2値化値決定部2233は、多数決理論により、画素値が黒(0)である画素pp[i,j]が白(255)である画素pp[i,j]より多かった場合(S507がYESの場合)、奇数個(本実施例では3画素としている)全ての画素pp[i,j]を黒(0)とする(S508)。
また、画素値が黒(0)である画素pp[i,j]が白(255)である画素pp[i,j]より少なかった場合(S507がNOの場合)、奇数個(本実施例では3画素としている)全ての画素pp[i,j]を白(255)とする(S509)。
次に、2値化値決定部2233は、画素配列62のppの列全ての画素pp[i,j](列番号(j)が0〜N-1の範囲)に対して多数決を行ったか否かを判断する(S510)。
2値化値決定部2233は、まだ、画素配列62のppの列全ての画素pp[i,j](列番号(j)が0〜N-1の範囲)に対して多数決を行っていない場合(S510がNOの場合)、画素配列62のppの列番号(j)をインクリメントし(S511)、列番号(j)が0〜N-1の範囲の全ての画素pp[i,j]について多数決を行い、画素値を補完する。
また、画素配列62のppの列全ての画素pp[i,j](列番号(j)が0〜N-1の範囲)に対して多数決を行った場合(S511がYESの場合)、画素配列62のppの全ての画素pp[i,j]に対して多数決を行ったと判断し、処理を終了する。
図29は、本発明の実施例1に係る画像表示装置が有する画素走査部224の処理手順を示すフローチャートである。
まず、画素走査部224は、画素配列62のpにおける2値化の値(pp[i,j])が同じ画素p[i,j]の並びに対しての合計画素値(runvalue)及び画素数(runlength)の変数を初期化(runvalue = 0, runlength = 0)する(S601)。
次に、画素配列62のpに対して画素走査を開始し、走査位置における画素p[i,j]の画素値(この画素値は、2値化後の値(0,255)ではなく、平滑化後の値(0〜255)である。)を合計画素値の変数runvalueに加算する(runvalue += p[i,j])。
次に、画素p[i,j]を2値化した画素pp[i,j]を基に、走査位置の画素p[i,j]の白黒判定を行い(S603)、判定結果から、1つ前に位置する画素p[i,j-1]を2値化した画素pp[i,j-1]と同じ2値化値か否かを判定する(S604)。
画素走査部224は、走査位置の画素p[i,j]を2値化した画素pp[i,j]が、1つ前に位置する画素p[i,j-1]を2値化した画素pp[i,j-1]と同じ2値化値である場合(S604がYESの場合)、画素数の変数runlengthをインクリメント後(runlength++)、次の走査位置へ移動し、S602以降の処理を行う。
また、走査位置の画素p[i,j]を2値化した画素pp[i,j]が、1つ前に位置する画素p[i,j-1]を2値化した画素pp[i,j-1]と異なる2値化値である場合(S604がNOの場合)、この時点までに、同じ2値化値であると判断した画素p[i,j]の並びに従って合計された合計画素値runvalue及び画素数runlengthとを、2値化値を基に白ラン又は黒ランとしてデータを一時保持し(runV[i] = runvalue, runL[i] = runlength)、生成された白ラン又は黒ランに番号(k)を付ける(S606)。
画素走査部224は、走査位置が、画素配列62のpの最後の画素p[i,j]に達したか否かを判断し(S607)、最後の画素p[i,j]に達していない場合(S607がNOの場合)、ラン番号(k)をインクリメントし(S608)、S601以降の処理を行い、次の白ラン又は黒ランを生成する。
また、最後の画素p[i,j]に達した場合(S607がYESの場合)、画素走査の結果から、画素配列62のpに含まれる連続した白(255)の画素数が最も多い白ランを回転角識別部と判断し、必要に応じて走査開始点(画素配列62のpの先頭画素p[i,0])と終了点(画素配列62のpの先頭画素p[i,N-1])をマージする(S609)。
次に、画素走査部224は、マージした画素配列62のpの白ランのうち、最も長い(画素数の多い)白ランを検出し、バーコード部と回転角識別部とを認識し、バーコード部のバーコード値認識開始点Sと終了点Eを検出する(S610)。この時、ラン番号(k)を、認識開始点Sから終了点Eの順に従ってふり直し、回転角識別部を最後の番号とする。その後処理を終了する。
図30は、本発明の実施例1に係る画像表示装置が有する識別情報取得部225の処理手順を示すフローチャートである。
まず、識別情報取得部225は、バーコードのバー73(黒線)とスペース72(白線)の最小幅を表す画素の合計画素値(tiny[0]:白線の最小合計画素値、tiny[1]:黒線の最小合計画素値)を算出する(S701)。
次に、画素走査部224によりランレングス化されたランを、バーコード部の認識開始点Sに位置するラン番号(k)から順に、最終点Eに位置するラン番号まで参照し、ランが黒ランか否かを判定する(S702)。
識別情報取得部225は、参照したランが黒ランである場合(S702がYESの場合)、黒ランの合計画素値runV[k]を黒線の最小合計画素値tiny[1]で除算し、その結果を変数lenvへ代入する(S703)。
また、参照したランが白ランである場合(S702がNOの場合)、白ランの合計画素値runV[k]を白線の最小合計画素値tiny[0]で除算し、その結果を変数lenvへ代入する(S704)。
次に、識別情報取得部225は、予め、バーコードの線幅毎に所定の閾値を用意しておき(本実施例では、線幅が4パターンあるバー73及びスペース72のため、閾値1〜5を用意しておく。)、先に算出した除算値lenvがどの閾値の範囲内に位置するかによって、該当するバーコード値を取得する。
除算値lenvが閾値1より小さい場合(S706がNOの場合)、閾値1〜5の範囲内に該当しないためエラーコードとし(B)、処理を終了する。
また、除算値lenvが閾値1から閾値2の範囲に位置する場合(S706がYES、且つS707がNOの場合)、参照したランがバーコード値1を表していると判断し、変数lにバーコード値1を代入する(S708)。
また、除算値lenvが閾値2から閾値3の範囲に位置する場合(S707がYES、且つS709がNOの場合)、参照したランがバーコード値2を表していると判断し、変数lにバーコード値2を代入する(S710)。
また、除算値lenvが閾値3から閾値4の範囲に位置する場合(S709がYES、且つS711がNOの場合)、参照したランがバーコード値3を表していると判断し、変数lにバーコード値3を代入する(S712)。
また、除算値lenvが閾値4から閾値5の範囲に位置する場合(S711がYES、且つS713がNOの場合)、参照したランがバーコード値4を表していると判断し、変数lにバーコード値4を代入する(S714)。
また、除算値lenvが閾値5より大きい場合(S713がNOの場合)、閾値1〜5の範囲内に該当しないためエラーコードとし(B)、処理を終了する。
次に、識別情報取得部225は、変数lの値をバーコード値code[k]へ代入し(S715)、参照しているランが最後のランであるか否かを判断する(S716)。
識別情報取得部225は、参照しているランが最後のランでない場合(S716がNOの場合)、ラン番号(k)をインクリメントし(S717)、S702以降の処理を行い(A)、次のランを参照する。
また、参照しているランが最後のランであった場合(S716がYESの場合)、画素走査部224によりランレングス化された全てのランを参照したと判断し、ラン番号(k)の順に配列されたバーコード値を基に、対応する識別コードIDを取得し(S718)、処理を終了する。
このように、上記に説明した処理手順は、プログラムで実行できるため、コンピュータが読み取り可能な記憶媒体に格納することができる。
以上のように、本発明の実施例によれば、画像表示装置は、CCDカメラ14、画像領域抽出部21、物体認識部22を有し、CCDカメラ14により撮影した物体底面5のパターン画像(円形バーコード301)を、画像領域抽出部21により抽出し、抽出した画像データを基に、物体認識部22より物体4を認識し、物体4の識別情報(識別コードID)、位置情報(中心の座標値)及び移動情報(物体4の回転角)を高速に精度良く認識することができる。
また、本発明の実施例によれば、画像表示装置が有する画像領域抽出部21は、CCDカメラ14により撮影した撮像データを基に、X軸方向の射影50(X軸方向濃度ヒストグラム50)とY軸方向の射影51(X軸方向濃度ヒストグラム51)から物体底面5に形成された円形バーコード301を含む外接矩形領域(矩形画像領域70)を抽出し、物体4の位置情報(中心の座標値)を取得する。
また、画像表示装置が有する物体認識部22は、画素抽出部221、画素走査部224及び識別情報取得部225を有し、画素抽出部221において、画像領域抽出部21により抽出した円形バーコード301を含む矩形画像領域70に対して、円形バーコード外周円60の内側の部分領域61として、第1の半径r1と第2の半径r2との間に位置するドーナツ状領域61を極座標から直交座標に変換(極座標変換)することで、円周上の画素を抽出して画素配列62を生成する。その後、画素走査部224において、抽出した画素配列62に対して画素走査を行い、2値化された画素値を基に、連続した白又は黒画素をまとめランレングス化するとともに、ランレングス化した白画素の並びから移動情報(物体4の回転角)を取得し、識別情報取得部225において物体4の識別情報(識別コードID)を取得する。
また、物体認識部22では、上記に説明した方法で物体4の情報を取得するため、辞書に登録したパターンと比較し物体の特徴を認識するパターンマッチング法のような複雑な処理を行わない。
また、本発明の実施例によれば、画像表示装置が有する物体認識部22は、平滑化部222を有し、画素配列62(ドーナツ状領域61)において、画素走査を行う前に、円形バーコード外周円に直交する直線上の注目画素とその注目画素に隣接する画素に対して平滑化を行う(特定範囲の画素に対して重み付けし、荷重平均を行う)。
また、画像表示装置が有する物体認識部22は、2値化部223を有し、2値化の閾値を算出する際、画素配列62(ドーナツ状領域61)の輝度分布特徴(ヒストグラムの特徴)から閾値を算出し、抽出された円形バーコード外周円60の内側の部分領域61(ドーナツ状領域61)の画素を2値化する。
また、2値化部223は、2値化値決定部2233を有し、2値化後、円形バーコード外周円60に直交する直線上の注目画素において、多数決理論により隣接する画素の画素値を互いに補完する。
よって、本発明の画像表示装置は、撮像した物体底面5のパターン画像(円形バーコード301)を抽出し、物体の識別情報(識別コードID)、位置情報(中心の座標値)及び移動情報(物体の回転角)を高速に精度良く認識可能な画像表示装置を実現することができる。
また、本発明の画像表示装置は、従来のように矩形画像領域70の全ての画素を走査せず、円形バーコード外周円60の内側の部分領域(ドーナツ状領域)61に対して画素走査することで物体4の情報を取得できる。
また、辞書に登録したパターンと比較し物体の特徴を認識するパターンマッチング法のような複雑な処理を行うことなく、物体4の情報を取得できる。
よって、従来の方法に比べ高速に物体底面5のパターン画像を解析することができ、物体4の識別情報、位置情報及び移動情報を取得することができる。
また、本発明の画像表示装置は、撮像環境によるノイズや、極座標変換において内周(第1の半径の円周)の長さと外周(第2の半径の円周)の長さの差によるノイズ等、画素配列に含まれるノイズを画素走査に影響しないよう効果的に除去することができる。
また、最適な閾値を基に2値化した後、隣接する画素の画素値を、多数決理論により互いに補完することができる。
よって、バーコードのバー73及びスペース72等、バーコード部や回転角認識部を高い精度でバーコード値(バー73やスペース72の幅)や回転角を認識することができ、物体4の認識情報及び移動情報を取得することができる。
図32は、本発明における手法と従来手法との性能比較結果を示す図である。
図32に示すように、1.3(1/dpm)の読取解像度の条件において、3.0(1/dpm)の認識解像度で2桁バーコードの認識が可能であった従来手法に比べ、本発明の手法では、2.0(1/dpm)と認識解像度が向上し、3桁バーコードを安定して認識可能となった。
また、本発明の画像表示装置は、円形バーコード301のバーコード値から物体4の識別情報を取得しているため、識別可能な物体数を数万通りに増やすことができる。
実施例に基づき本発明の説明を行ってきたが、上記実施例に挙げた平滑化部222で行う平滑化処理と2値化部223で行う多数決処理とを組み合わせて行う画像処理手法は、物体の情報認識精度を向上させる手法の一例であって、この要件に、本発明が限定されるものではない。
例えば、平滑化部222のみを機能させて物体の情報認識精度を向上させても良い。
また、上記実施例に挙げた物体底面5の形状は、円形をしているが、この要件に、本発明が限定されるものではない。
例えば、多角形であっても良い。本実施例で物体底面5の形状が円形をしている理由は、操作者の環境において、限られた範囲であるスクリーン11に載置する際に、有効に載置範囲に置ける形状であるためである。
また、上記実施例に挙げた時計回りに画素走査を行う方向は、走査方向の一例であって、この要件に、本発明が限定されるものではない。
例えば、反時計回りでも良く、走査範囲の円周を1周してバーコード部を認識できれば良い。
また、上記実施例に挙げた判別解析法は、2値化の際に必要な閾値を算出する方法の一例であって、この要件に、本発明が限定されるものではない。
例えば、画素走査を行う領域において、画素値の最大値と最小値との平均を閾値とする方法や全画素値の平均を閾値とする方法であっても良い。
また、上記実施例に挙げた256階調の画素値の範囲は、1画素が表現できる濃度階調数の一例であって、この要件に、本発明が限定されるものではない。
例えば、1画素6bitの64階調や1画素10bitの1024階調の画素値の範囲でも良い。
また、上記実施例に挙げたドーナツ状領域61は、円形バーコード外周円60の内側の部分領域61の一例であって、この要件に、本発明が限定されることはない。
例えば、ドーナツ状でなくても、円周に接する正多角形の領域でも良い。
また、上記実施例に挙げた5画素の幅を持った画素配列62は、ドーナツ状領域61を極座標から直交座標に変換し抽出した画素配列62の一例であって、この要件に、本発明が限定されるものではない。
この画素配列62の幅は、円形バーコード外周円60の内側に位置する第2の半径r2と第1の半径r1との間のドット幅(1画素:1ドット)である。
また、上記実施例に挙げた2値化する3画素の幅を持った画素配列62は、2値化する画素配列62の一例であって、この要件に、本発明が限定されるものではない。
2値化の際に、多数決理論により画素を補完するため、多数決を行える奇数個の複数画素であれば良い。
また、上記実施例に挙げた1行3列の平滑化フィルタは、平滑化フィルタの一例であって、この要件に、本発明が限定されるものではない。
平滑化フィルタは、平滑化する画素数に対応させたフィルタ係数(荷重係数)を用意すれば良い。
また、上記実施例に挙げた図25の1列の画素配列62は、ランレングス化を基にバーコード部のバーコード値(バーとスペースの幅)を算出するために画素を走査する一例であって、この要件に、本発明が限定されるものではない。
例えば、第1の半径r1と第2の半径r2との間に位置する複数の半径において画素走査を行い総合的に判断しても良い。
本発明は、画像が投影される投影面又は前記投影面に対向して配置された面を撮影する撮影部と、前記投影面に投影される前記画像を生成する投影画像生成部と、前記撮影部により撮影された撮像データから、放射状に配置された1次元バーコードで形成された円形バーコードを抽出する画像領域抽出部と、前記画像領域抽出部により抽出された前記円形バーコードから属性情報を取得する属性情報取得部と、前記物体認識部により取得された前記属性情報に基づいて前記投影画像生成部を操作する操作処理部とを有する画像表示装置において、前記属性情報取得部により、前記画像領域抽出部により抽出された前記円形バーコードの画素領域のうち、前記円形バーコードの外周円の内側の部分領域に基づいて前記属性情報を取得するように構成しても実現できる。
最後に、上記実施例に挙げた形状に、その他の要素との組み合わせ等、ここで示した要件に、本発明が限定されるものではない。
これらの点に関しては、本発明の主旨をそこなわない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。