図2は、一実施形態に係る情報処理装置の機能ブロック図である。図示するように、情報処理装置10は、撮像部1、抽出部2、推定部3、認識部4、記憶部5、入力部6及びセンサ部7を備える。記憶部5はさらに、形状情報記憶部51及び特徴情報記憶部52を備える。当該構成される情報処理装置10は、スマートフォン端末やタブレット端末といったような携帯情報端末や、その他の任意のコンピュータ機器によって実現することができる。
図3は、一実施形態に係る図2の推定部3の細部構成を示す機能ブロック図である。図示するように、推定部3は、判断部31及び割当部32を備える。以下、当該各部の機能を説明する。
撮像部1は、ユーザ操作等のもとで撮像対象を撮像し、得られた撮像画像を抽出部2及び認識部4へと出力する。撮像部1を実現するハードウェアとしては近年の携帯情報端末等には標準装備されていることが多いデジタルカメラを用いることができる。
図4は、撮像部1により撮像されその撮像画像が得られる撮像対象の模式的な例として、撮像対象が麻雀牌のアガリ状態の並び(ロン又はツモによりアガリとなり倒牌した状態)として構成されている場合の例を示す図である。撮像対象がアガリ状態牌の並びである場合、その配置構成は膨大なパターンの可能性があるが、図4では当該膨大なパターンのうちの3つの例を[1]〜[3]として示している。
図4の[1]は鳴き牌ありの場合の一例として、1個のアガリ牌p1(ロン牌又はツモ牌)からなる領域P1と、1個の面前牌からなる領域P2と、13個の鳴き牌からなる領域P3と、が撮像対象として構成されている例である。ここで、麻雀のルールに基づき、ロン牌又はツモ牌は常に1個であるが、面前牌の個数並びに鳴き牌の個数及び鳴き牌の並びに関しては、[1]に示す構成以外にも多様な場合がありうる。
当該多様な場合の一例として、[1]の例では鳴き牌の領域P3は、正面からのカカンで構成される4個の牌p3,p4,p5,p6(p3,p6が縦向きでp4,p5が横向き)と、正面からのポンで構成される3個の牌p7,p8,p9(p7,p9が縦向きでp8が横向き)と、左からのポン(又は左からのチー)で構成される3個の牌p10,p11,p12(p10が横向きでp11,p12が縦向き)と、右からのポンで構成される3個の牌p13,p14,p15(p13,p14が縦向きでp15が横向き)と、の4回分の鳴きによって図示するように構成されている。麻雀のルールにおいて周知の通り、鳴きの回数及び鳴き方は多様なパターンが可能であり、[1]の例では合計で4回分の鳴きが当該説明した通りの鳴き方によって行われているが、例えばこれよりも鳴きが少なければ面前牌の領域における牌の個数が[1]に示されるような1個よりも増えることとなる。
例えば図4の[2]は、鳴き牌ありのアガリ状態の牌の並びの[1]とは別の例として、1個のアガリ牌q1(ロン牌又はツモ牌) からなる領域Q1と、7個の面前牌q2〜q8(この順に全て縦向き)からなる領域Q2と、6個の鳴き牌q1〜q6からなる領域Q3と、が撮像対象として構成されている例である。ここで、領域Q3は左からのポン(又は左からのチー)で構成される3個の牌q9,q10,q11(q9が横向きでq10,q11が縦向き)と、右からのポンで構成される3個の牌q12,q13,q14(q12,q13が縦向きでq14が横向き)と、の2回分の鳴きによって図示するように構成されている。
さらに、図4の[3]は、鳴き牌なしのアガリ状態の牌の並び場合の例として、1個のアガリ牌r1(ロン牌又はツモ牌) からなる領域R1と、13個の面前牌r2〜r14(この順に全て縦向き)からなる領域R2と、が撮像対象として構成される例と示している。
その詳細を後述する通り本発明の抽出部2及び推定部3によれば、撮像画像の撮像対象が以上の図4の[1]〜[3]にそのごく一部のみの例を示すような膨大なパターン(それぞれの牌の向き、個数、並び方に関する膨大なパターン)で形成されうるものである場合であっても、撮像対象の各領域を区別したうえで、各領域内の牌の並びを自動検出することが可能である。例えば撮像対象が具体的に図4の[1]のように構成されている場合であれば、領域P1,P2,P3を区別したうえで、各領域P1,P2,P3内部における牌の個数及び牌の並び(縦向きか横向きか)が上記説明した通りであることを自動検出することが可能となる。
なお、ユーザ操作のもとで撮像部1による撮像を行うに際して、アガリ状態の牌の並びを図4の各例のように整える作業は、ユーザが行っておくものとする。この際、複数の牌がつながって並んでいる各箇所については、一列に整列しておくものとする。例えば、図4の[1]における13個の牌がつながった領域P3、[2]における7牌の牌がつながった領域Q2、6個の牌がつながった領域Q3及び[3]における13個の牌がつながった領域R2といった各箇所に関しては、一列に整列しておく、すなわち、その下段側が概ね一直線として構成されるように整列しておき、且つ牌同士の境界に隙間が生じないよう互いに接するように整列しておくこととする。
さらに、ユーザ操作のもとで撮像部1により撮像画像として得られるアガリ状態の牌の並びは、以下の説明において特段の断りがない限りは、概ね正面(牌が配置される麻雀卓等の平面に対して概ね正面)で撮像されているものとする。
図5は、麻雀における1回の鳴きで形成される牌の並び方を10通り列挙したものである。図示する通り、[1]は左からのポン(又は左からのチー)であり横牌w11, 縦牌w12, 縦牌w13がこの順に左から並んでいる。[2]は正面からのポンであり縦牌w21, 横牌w22, 縦牌w23がこの順に左から並んでいる。[3]は右からのポンであり縦牌w31, 縦牌w32, 横牌w33がこの順に左から並んでいる。[4]は左からのカンであり横牌w41, 縦牌w42, 縦牌w43, 縦牌w44がこの順に左から並んでいる。[5]は正面からのカン(2つ目を倒す)であり縦牌w51, 横牌w52, 縦牌w53, 縦牌w54がこの順に左から並んでいる。[6]は正面からのカン(3つ目を倒す)であり縦牌w61, 縦牌w62, 横牌w63, 縦牌w64がこの順に左から並んでいる。[7]は右からのカンであり縦牌w71, 縦牌w72, 縦牌w73, 横牌w74がこの順に左から並んでいる。[8]は左からのカカンであり上下に構成される横牌w81及び横牌w82, 縦牌w83, 縦牌w84がこの順に左から並んでいる。[9]は正面からのカカンであり縦牌w91, 上下に構成される横牌w92及び横牌w93, 縦牌w94がこの順に左から並んでいる。[10]は右からカカンであり縦牌w01, 縦牌w02, 上下に構成される横牌w03及び横w04がこの順に左から並んでいる。
以上、図5に列挙した通り、麻雀における鳴きの各回で得られる牌の並び方には10通りの可能性があり、アガリ状態における鳴きの回数は0〜4回の可能性があり、アガリ状態における鳴き牌は図4の[1],[2]にその例を示したように横につなげて配置されることから、本発明において撮像対象が取りうる配置構成のパターンは膨大なものとなる。
図2及び図3の各部の説明へと戻り、抽出部2では、撮像部1で得た撮像画像より牌が並んでいる領域を特定した情報としての領域情報(一般に複数あるそれぞれの領域を区別し、且つ、それぞれの領域を多角形を当てはめたものとして表現する情報)を得て、推定部3へと出力する。抽出部2ではさらに、撮像画像における当該牌の領域内における牌の模様の情報も得て、推定部3へと出力するようにしてもよい。
抽出部2における領域情報の取得には、任意の既存の領域抽出技術を利用して領域抽出したうえで多角形当てはめを適用することができる。領域抽出に関しては例えば、次の(1)〜(3)のいずれか又はその任意の組み合わせで領域抽出してよい。この際、(1)〜(3)で得られる領域に任意の既存手法でノイズ除去等の後処理を施してもよい。(1)色情報を用いた領域分割を適用する。(2)エッジ検出により境界線分を抽出し包含される領域を選択する。(3)深度情報による前景抽出を用いる。
ここで、(2)の境界線分の抽出結果に対する多角形の当てはめは、周知のハフ変換による離散的な直線パラメータ空間への投票を用いて大局的な直線(画像全体を横切る直線)を求めたうえで、当初に検出されているエッジ成分の近傍にあると判定される直線部分を線分として検出することで、多角形当てはめの結果を得ればよい。また(1)の領域分割及び(3)の前景領域で得られた境界成分についても上記エッジ成分と同様にハフ変換の投票を用いることで、当該境界成分の近傍にあると判定される直線部分を線分として検出し、多角形当てはめ結果を得ればよい。
なお、ハフ変換では画像上のエッジ位置(x,y)を「ρ=x*sinθ+y*cosθ」の変換式で直線を表すパラメータ空間(ρ,θ)へと投票する。当該投票は領域情報を構成している複数の部分領域(各エッジの所定近傍を取ることで、エッジ同士が連続していると判定されるエッジ集合)ごとに行い、所定票以上を得た点(ρ,θ)に対応する直線を各部分領域における検出結果とする。この際、角度θの値が縦又は横方向に対応する第一方向θ0の所定近傍内、又は、横又は縦方向に対応する第二方向θ0+90°の所定近傍内、のいずれにも存在しない点(ρ,θ)は、斜め方向の誤検出の直線(麻雀牌を概ね正面から撮影した場合の境界線としては現実にありえない直線)に対応するものであるとして、所定票以上を得ていたとしても、排除するようにしてもよい。なお、方向θ0は投票値分布のピーク位置などとして定めればよい。(なお前述の通り、撮像対象が概ね正面で撮像されている前提より、当該第一方向及び第二方向を区別して特定すると共に、その他の方向を斜め方向として排除することが可能となる。また、投票は前述の通り部分領域ごとに実施するので、異なる部分領域同士が互いに傾いている場合であっても、各部分領域における第一方向及び第二方向をそれぞれ求めることができる。上記ではエッジ成分で投票するとしたが、前述の通りその他の境界成分で全く同様にして投票してもよい。)
また、領域抽出における(3)の深度(デプス)情報の取得に関しても、任意の既存技術を用いればよい。例えば現時刻t0の撮像画像G(t0)と、直近あるいは一定時間差を持った過去時刻t1の撮像画像G(t1)と、の両者においてSIFT特徴量等の局所特徴量による特徴点の対応付けを行い、エピポーラ幾何に基づくステレオマッチングで現時刻t0の撮像画像G(t0)についての深度情報を取得してよい。また、撮像部1が得る撮像画像との間で予めキャリブレーションがなされた深度センサ(例えば赤外線パターン照射によるもの)を情報処理装置10が備える構成(図2では不図示の構成)において、当該深度センサの取得する深度情報を用いてもよい。
抽出部2ではさらに、上記のように得られた撮像対象の領域情報において、次の推定部3での処理に影響が出ないようにすべく、撮像対象内部の模様を分離しておくことが望ましい。領域情報の取得及びその内部模様の分離について、例えば以下の手順1〜4で実現することができる。ここで、「内部模様」とは、領域情報において形成されている任意の「内部領域」を指すものとする。図6は、当該手順を説明するための模式的な例を示す図である。(なお、以下の手順1〜4では、多角形当てはめする前の状態での領域情報を利用する。)
[手順1] 撮像画像を所定の色空間(例えばグレー画像に変換する)において所定閾値で2値化することで、前景領域(白色)と背景領域(黒色)とに区別した2値化画像を得る。図6では、当該2値化の例として、[1]のグレースケール画像化された撮像画像(牌の並びが図4の[1]の場合の例に対応する撮像画像)を2値化して、[2]の前景領域(白色)と背景領域(黒色)の区別されたマップとしての2値化画像が得られている。
なお、上記の手順1を可能にする前提として、撮像されている麻雀牌の領域は概ね白地であり適宜模様が形成されたものであり、且つ、麻雀牌が配置される背景としての麻雀卓等は白地とは異なる一定色によって概ね形成され、2値化で黒色化される領域であるよう、ユーザが撮像部1を操作して撮像を行うものとする。この際、背景にはその他の余計なもの(点棒など)が映らないようにして撮像を行うものとする。
[手順2] 手順1で得られた2値化画像において、背景領域のうち模様に起因しないものを前景領域と同色(白色)に形成する、すなわち白色化する。図6では、[2]の2値化画像のうち模様に起因しない背景領域を白色化することで、[3]に示すような模様のみとして構成された背景領域が得られている。
ここで、2値化画像における背景領域のそれぞれが模様に起因するかしないかの区別は、背景領域のそれぞれを連結領域としてラベリングしたうえで、次のいずれか又はその任意の組み合わせで行えばよい。(1)連結領域として占めている画素数が所定値以下のものを模様に起因すると判定する。(2)連結領域として周囲の全てが前景領域で囲まれているものを模様に起因すると判定する。(3)連結領域として撮像画像の外周に接する部分があるものを模様に起因しないと判定する。(4)連結領域に対して細線化処理(例えば、テンプレートを用いた繰り返し処理による細線化)が所定回数以内で完了するものを、模様に起因すると判定する。
[手順3] 手順2において背景領域のうち模様に起因しないものを前景領域と同色化して得られた2値化画像を反転することで、模様のみが前景領域(白色)として構成された2値化画像(すなわち、模様情報)を得る。図6の例では、[3]に示す手順2の出力を反転することで、[4]に示すような模様情報が得られている。
[手順4] 手順1で得られた2値化画像と、手順3で得られた2値化画像と、の論理和を取ることで、領域情報を得る。手順4にて当該得られる領域情報は、手順1で得られた模様情報をその内部に背景領域として含んでいた領域情報から、模様情報の部分を削除して前景領域化したものとして形成されたものとなる。図6の例では、[2]に示す手順1の出力と[4]に示す手順3の出力との論理和を取ることで、[5]に示すような模様情報の部分が削除されて前景領域化された領域情報が得られている。当該[5]において得られた領域情報はすなわち、[1]において撮像されているそれぞれの牌の領域(図4の[1]に示す領域P1,P2,P3)の輪郭を抽出したものに相当する。当該得られた[5]の領域情報(輪郭に相当)と[4]の模様情報とが推定部3へと出力される。
推定部3では、以上の抽出部2から得られた領域情報に対して、形状情報記憶部51で記憶されている個別の撮像対象(すなわち、以上の説明例における麻雀牌)の形状情報を当てはめることで、領域情報において個別の撮像対象がどのような位置、向き及び個数で配置されているかを推定した配置情報を得て、当該配置情報を認識部4へと出力する。当該配置情報を得るために推定部3ではさらに、入力部6から得られる制約条件及び/又はセンサ部7から得られる姿勢情報を利用してもよい。
例えば、撮像画像が図6の[1]で示したものであり、抽出部2からその領域情報として同図の[5]に示したものが得られている場合であれば、推定部3によって得られる配置情報により、当該領域情報が具体的には図4の[1]のように個別の麻雀牌が並んでいるものである旨が特定される。すなわち、図4の[1]に示されるように、領域情報を構成している3つの領域P1,P2,P3における牌の並びがそれぞれ当該示される通りのものであることが、配置情報として特定される。推定部3による配置情報の推定処理の詳細は後述する。
形状情報記憶部51は、推定部3が上記のように配置情報を推定する際に参照する情報として、個別の撮像対象の形状情報を予め記憶しておく。個別の撮像対象が麻雀牌である場合には、矩形として構成される麻雀牌のアスペクト比(縦の長さと横の長さと比であり、麻雀牌の種類(数牌か字牌か、三索か四索か、といったような種類)によらない一定値となる)を形状情報として記憶しておくことができる。
オプション構成としての入力部6は、タッチパネル上に所定メニューを表示してユーザに項目を選択させるといったような周知のインタフェースにより、ユーザから制約条件の入力を受け付けて当該制約条件を推定部3へと出力する。
オプション構成としてのセンサ部7は、情報端末装置10に固定された周知のジャイロセンサ等の姿勢センサとして構成され、情報端末装置10の姿勢を取得して推定部3へと出力する。
認識部4では、撮像部1から得られる撮像画像に対して、推定部3から得られる配置情報で特定される個別の撮像対象の領域をそれぞれ抽出したうえで、特徴情報記憶部52に記憶されている複数の撮像対象の特徴情報と照合することにより、撮像対象における個別の撮像対象の領域がそれぞれ複数の撮像対象のうちのいずれに該当するかの認識結果を出力する。
例えば、撮像画像が図6の[1]に示すものでありその領域情報が図4の[1]に示すものとして得られている場合であれば、図4の[1]における牌p1の領域が「一索」の牌であり、牌p2の領域が「一索」の牌であり、牌p3の領域が「九索」であり、といったように個別照合による認識結果が得られ、さらにその他の牌p4〜p15の種類の認識も含めた全ての牌p1〜p15の種類特定結果を、認識部4による認識結果として得ることができる。
特徴情報記憶部52では認識部4が上記の認識処理を行うために、複数の撮像対象のそれぞれの特徴情報を予め記憶しておく。
特徴情報記憶部52で記憶しておく特徴情報を用いた認識部4による認識処理は、既存の任意の認識処理を利用してよい。ここで、個別の撮像対象(すなわち認識対象)が麻雀牌などであり、図1を参照して前述した通り局所特徴を用いた認識に不向きである場合、その他の認識処理を利用してよい。例えばテンプレートマッチングによる認識処理や、各種のニューラルネットワーク等の識別器による認識処理を利用してよい。テンプレートマッチングを用いる場合、特徴情報としてはテンプレート画像を記憶しておけばよい。ニューラルネットワーク等を用いる場合、ネットワーク構成や各ノードの重みを記憶しておき、当該ネットワーク内の段階的な処理を経て得られた情報を特徴情報として記憶しておけばよい。また、個別の撮像対象がSIFT特徴量その他の局所特徴で認識可能である場合は、当該局所特徴を特徴情報として記憶しておき、認識処理に利用してもよい。
以下、推定部3による推定処理の詳細を説明する。
図3に示される細部構成の通り、推定部3では概要的には次のような流れで配置情報を得る。すなわち、判断部31において、図4の[1]〜[3]の例で示したように一般に複数の領域で構成されている領域情報のうち、いずれのものを配置情報の特定対象とするかの指定を割当部32に対して行う。割当部32では、当該指定された領域に関して、形状情報を当てはめることで配置情報を特定し、図3に線L4に示すように判断部31へと当該配置情報を返す。判断部31はさらに、当該既に確定している配置情報も考慮したうえで、割当部32に対して次に配置情報を特定する領域情報(配置情報が未確定の領域情報)を指定する。
上記のような判断部31及び割当部32による処理の繰り返しにより、推定部3では逐次的に、領域情報内における個別の撮像対象の配置情報を特定していくことで、最終的に領域情報内における全ての撮像対象に関しての配置情報を得ることができる。すなわち、判断部31では領域情報における個別の撮像対象の配置特定の順番の決定といったような全体的な制御の役割を担う。この際、既に確定済みの配置情報を考慮して、以降に処理すべき対象の決定や、その際の制約条件を与える形で、当該制御を行うことができる。一方、割当部32では判断部31による当該制御のもとで、指定された個別の領域に関して形状情報を当てはめる要素的な処理を担う。
図7は、一実施形態に係る推定部3の動作のフローチャートである。ステップS1では、判断部31が、抽出部2で得られた領域情報に関して、その形状等に基づき各部分領域の種別を特定すると共に当該特定された種別に基づいて部分領域の処理順番を決定してから、ステップS2へと進む。
ここで、抽出部2で得られた領域情報に関しては、図4で例示したような制約条件の下で撮像されていることに基づき、2個または3個の部分で構成されている。当該各部分を部分領域と呼ぶことにする。例えば、図4の[1]に例示した領域情報は3個の部分領域P1,P2,P3から構成されている。
ステップS1における判断部31による処理の詳細は以下の通りである。
ステップS1において判断部31は、各部分領域の種別を特定するためにまず、抽出部2において多角形当てはめ結果として得られている領域情報を参照する。
ステップS1にて判断部31は次に、各部分領域に関して、当該参照したその多角形としての領域情報に基づき、以下のようにして第一ないし第三のいずれの領域種別に該当するかを特定する。(なお前述の通り、撮像対象が概ね正面で撮像されている前提より、当該特定することが可能となる。)
(第一部分領域) 略矩形(4角形であり概ね矩形に近いもの)として形成されている部分領域を第一部分領域として特定する。この際、略矩形として形成されている部分領域が複数存在する場合は、周囲長又は面積が最小のものを第一部分領域として特定する。
(第二部分領域) 上記の略矩形として形成されている部分領域が複数存在した場合に、周囲長又は面積が最小ではなかったものを第二部分領域として特定する。
(第三部分領域)略矩形よりも頂点の多いn角形(n>4)として形成されている部分領域を第三部分領域として特定する。
当該実施形態においては、撮像対象としてのアガリ状態の牌の並びは図4で説明したような手法でユーザによって予め並べられたうえで撮像されているという制約条件がある。従って、上記のように自動で特定される第一部分領域は1個の牌のみからなるアガリ牌又は面前牌の領域であり、第二部分領域は1個の牌のみからなるアガリ牌若しくは面前牌の領域、又は、2個以上の牌からなる面前牌の領域であり、第三部分領域は1回以上の鳴きによって形成された鳴き牌からなる領域である。
本発明においては特に、撮像の際の制約条件に基づいてこのように各部分領域の種別を予め特定しておき、以降に説明する割当部32の処理により部分領域の種別に応じた手法によって配置情報を特定することにより、アガリ状態の麻雀牌の並びのように膨大な配置を取りうる撮像対象であっても効率的に配置情報を特定することが可能となる。
なお、図4の[1]の例のように、面前牌の領域が1個のみの牌で形成されている場合には、第一部分領域及び第二部分領域のいずれか片方が1個の面前牌の領域であり、もう片方が1個のアガリ牌の領域となる。すなわち、図4の[1]の例では部分領域P1,P2がそれぞれ第一部分領域又は第二部分領域のいずれかとして特定され、部分領域P3が第三部分領域として特定される。また、図4の[2]や[3]の例のように、面前牌の領域が2個以上の牌で形成されている場合には、1個のアガリ牌のみで形成された領域が第一部分領域として決定され、2個以上の牌で形成された面前牌の領域が第二部分領域として決定される。すなわち、図4の[2]の例では部分領域Q1が第一部分領域として決定され、部分領域Q2が第二部分領域として決定され、部分領域Q3が第三部分領域として決定される。また、図4の[3]の例では部分領域R1が第一部分領域として決定され、部分領域R2が第二部分領域として決定され、第三部分領域として決定される領域は存在しない。
ステップS1にて判断部31は最後に、上記のように特定された部分領域の種別に基づいて、部分領域の処理順番を決定する。具体的には、第一部分領域を1番目、第二部分領域を2番目、第三部分領域を3番目として決定することができる。
ステップS2は、以下のステップS3〜S4がステップS1において種別を判断した各部分領域を対象としてそれぞれ実施され、全ての部分領域に関して処理が終わるまでループ処理として繰り返されることを表すためのダミーステップである。ステップS2では、当該ループ処理の繰り返しのN回目(N=1,2,3)の処理対象として判断部31が第N部分領域を設定し、割当部32に当該設定を通知したうえでステップS3へと進む。
ステップS3では、割当部32が直近のステップS2において判断部31により通知された第N部分領域を対象として、形状情報記憶部51に記憶された個別の撮像対象(個別の麻雀牌)の形状情報を当てはめる処理を行い、ステップS4へと進む。当該当てはめ処理においては、第N部分領域の全体に関して形状情報を当てはめが行われ、結果としての第N部分領域に対する配置情報を得る。当該ステップS3の詳細は図8などを参照して後述する。
ステップS4では、判断部31が直近のステップS3において割当部32により得られた第N部分領域に関する配置情報を取得し、確定済みの配置情報として保持してから、ステップS5へと進む。(ステップS4の処理は図3の機能ブロックにおいて線L4で示される処理の流れに相当する。)
ステップS5では、判断部31が以上のステップS2〜S4の処理が全ての部分領域について完了したか否かを判断し、完了していればステップS6へと進み、完了していなければステップS2へと戻り、ループ処理の繰り返しにおける次の(N+1)回目の処理対象として第(N+1)部分領域を設定したうえで以上を繰り返す。
ステップS6では、推定部3からの最終的な出力として、以上のループ処理の繰り返しに現れる一連のステップS4で得られた全ての配置情報を、撮像画像における配置情報として出力して、当該図7のフローチャートは終了する。
図8は、図7のステップS3における割当部32の処理の詳細を示すフローチャートである。ここで、図8の説明において、当該図8のサブフロー(図7のフローから見た場合のサブフロー)を呼び出した図7のステップS3は、ステップS2〜S5の繰り返し処理のN回目の時点のステップS3であるものとして説明する。
ステップS11は、以下のステップS12〜S14による配置情報の確定が当該処理対象として指定されている第N部分領域の全体に渡って完了するまで繰り返されることを表すためのダミーステップであり、そのままステップS12へと進む。
ステップS12では、割当部32が当該処理対象の第N部分領域のうち、形状情報の当てはめが未完了の領域を対象として1個以上の撮像対象(1個以上の麻雀牌)の形状情報を当てはめて確定されたうえで、ステップS13へと進む。ステップS12の処理は、当該処理対象の第N部分領域の種別(Nが1,2,3のいずれであるか)に応じてそれぞれ異なる処理が行われるが、その詳細は後述する。
ステップS13では、割当部32が直近のステップS12において形状情報の当てはめが確定した領域を、当該第N部分領域における形状情報を当てはめ済みの領域として更新し、割当部32において当該更新した情報を保持したうえでステップS14へと進む。
ステップS14では、以上のステップS11〜S13の繰り返し処理を当該対象となっている第N部分領域の全体について完了したか否か、すなわち、第N部分領域の内部全体に渡って形状情報が当てはめ済みであるか否かを割当部32が判断し、完了していればステップS15へと進み、未完了であればステップS11へと戻り、完了済みとなるまで以上を繰り返す。
ステップS15では、以上のステップS11〜S14の繰り返しにより得られた当該第N部分領域の全体についての配置情報を割当部32が出力したうえで、図8のフローを終了する。(すなわち、図8のフローが終了した時点において図7のステップS3が完了した状態となり、図7のフローにおいてさらに図7のステップS4へと進む。)
以下、図8のステップS12に関して、当該部分領域が第一ないし第三部分領域のそれぞれである場合の具体的処理内容を説明する。
(1)第一部分領域を対象としたステップS12における割当部32の処理に関しては、判断部31において当該部分領域が第一部分領域として決定された時点で既に、図4を参照して説明したような制約条件のもとでの撮像がなされていることに基づき、第一部分領域は1個のみの牌の領域であることが確定している。従って、割当部32では特に具体的な形状情報の当てはめを行うことなく、略矩形として形成されている第一部分領域は1個のみの牌の領域であるとの配置情報の確定結果を得ればよい。
ただし、割当部32では、続く処理において第二部分領域及び第三部分領域の配置情報を特定するために用いる参考情報を、当該第一部分領域から取得するようにしてもよい。具体的には、概ね正面から撮像されているという制約条件のもとで、第一部分領域のサイズ情報を参考情報として取得してよい。具体的には、第一部分領域のサイズが画素数で横W1×縦H1である旨をサイズ情報として取得することができる。
なお、略矩形として構成されている第一部分領域のサイズにおける横W1×縦H1に関しては一般に、画像の多少の傾き及び/又は領域検出の際のノイズ等の影響によって、上辺側の横幅W1[上辺]と下辺側の横幅W1[下辺]が異なるため、また、右辺側の縦幅H1[右辺]と左辺側の縦幅H1[左辺]とが異なる。従って当該サイズに関して、以下の式(A),(B)のようにそれぞれの平均値を採用してもよいし、いずれか任意の片方の値を採用してもよい。
W1=(W1[上辺]+W1[下辺])/2 …(A)
H1=(H1[右辺]+H1[左辺])/2 …(B)
また、略矩形として構成される第一部分領域において互いに向かい合う2辺のペアのいずれが横W1でいずれが縦H1であるかの特定は、形状情報記憶部51に形状情報として記憶されている牌の横W0と縦H0との長さの比(例えば、W0:H0=1.00:1.35)に基づいて実施すればよい。麻雀牌の場合であれば、短辺の方が横Wであり、長辺の方が縦Hであるとして特定すればよい。
(2)第二部分領域を対象としたステップS12における割当部32の処理に関しては、略矩形形状で構成されている第二部分領域のサイズが横W2×縦H2であるものとして、以下の[手順21]〜[手順23]のようにすればよい。なお、当該サイズに関しては、第一部分領域に関して(A),(B)として説明したのと同様に、いずれか片方又はその平均を取ることで、W2及びH2の値を定めればよい。
[手順21] 第二部分領域のサイズW2×H2のうち、いずれが横でいずれが縦であるかを特定する。(上記では説明の便宜上、横W2×縦H2としたが、いずれが縦でいずれが横かは決定する必要があるためである。)当該特定は、第一部分領域に関してサイズ情報として求めた縦幅H1に近い方の値が、縦幅H2であるものとして特定すればよい。
[手順22] 第二部分領域すなわち面前牌の個数は1,4,7,10,13のいずれかであるという制約条件に基づき、第二部分領域の横幅W2が当該個数のいずれに該当するものであるかを、個数n2として決定する。具体的には、以下の式(1)で個数n2を決定することができる。
式(1)において、集合C2は当該制約条件で与えられている個数候補の集合C2={1,4,7,10,13}である。rは牌の縦幅・横幅のアスペクト比(横幅に当該比率rを乗ずることで縦幅となるもの)であり、以下の式(1A)又は(1B)のいずれかで算出されるrの値を用いればよい。なお、式(1A)は形状情報記憶部51に予め記憶されている形状情報W0,H0から定まるアスペクト比であり、式(1B)は第一部分領域から実測値として求まるアスペクト比である。
r=W0/H0 …(1A)
r=W1/H1 …(1B)
上記の式(1)による個数n2の決定の意味合いは次の通りである。すなわち、実測値としての縦幅H2にアスペクト比rを乗じて推定される第二部分領域における1個の牌の横幅r・H2によって、実測の横幅W2を割ることで、第二部分領域の牌の個数の暫定的な推定値n2[推定]=W2/(r・H2)を得たうえで、制約条件C2={1,4,7,10,13}のうち最も近い個数に量子化してn2を決定している。例えば、n2[推定]=3.6個であれば、最も近い値に量子化してn2=4個と求めることができる。また例えばn2[推定]=12.5個であれば、最も近い値に量子化してn2=13個と求めることができる。なお、アスペクト比rを式(1A)から求める場合、n2[推定]=(W2×H0)÷(W0×H2)となる。
[手順23] 上記求めた個数n2により、第二部分領域の横幅W2をなしている上辺及び下辺をそれぞれn2等分し、対応するn2等分点同士を上辺と下辺とで線分で結ぶことにより、第二部分領域をn2等分したものとしての第二部分領域におけるn2個の牌の配置情報を出力する。
図9は、割当部32による上記の[手順23]における第二部分領域に対する配置情報の特定の模式的な例を個数n2=4個であった場合の例として2つ、[1],[2]として示すものである。[1]では上段側に示すような、ほぼ矩形として構成された第二部分領域Q21に関して、上辺及び下辺を個数n2=4等分することにより、4個の個別の牌の領域に分けた結果として、下段側に示すような配置情報CQ21が得られている。[2]でも同様に、上段側に示すような、矩形からはやや歪んだ4角形として構成された第二部分領域Q22に関して、上辺及び下辺を個数n2=4等分することにより、4個の個別の牌の領域に分けた結果として、下段側に示すような配置情報CQ22が得られている。
以上、図8のステップS12における割当部32の処理に関して、対象としている部分領域が第一部分領域及び第二部分領域である場合を説明した。当該説明より明らかなように、第一及び第二部分領域を対象とする場合、図8のループ処理S11〜S14の内部としてのステップS12の実行は1回のみで済むものである。すなわち、第一及び第二部分領域に関しては、ループ処理における初回のステップS12のみで領域全体における配置情報が確定し、ステップS14からS11に戻ることはない。
(3)一方、第三部分領域を対象としたステップS12における割当部32の処理に関しては、図8のループ処理S11〜S14が複数回繰り返されることで、第三部分領域の全体における配置情報が確定する。図10は、第三部分領域を対象としたステップS12における割当部の当該処理を説明するために用いる例として、図4の[1]で示したのと同様の第三部分領域P3を上段側の[1]に示している。
図10の下段側の[2]に示す通り、第三部分領域P3を対象とした割当部32の処理のフレームワークは、牌p3〜p15が当該図示する通りの向きで配置されていることを特定するものであり、具体的には、略矩形形状となっている4角形としての各牌pM(M=3, 4, 5, ..., 15)の各頂点uM1,uM2,uM3,uM4を、第三部分領域P3が形成している多角形の辺上又は頂点上の点として特定するというものである。なお、図10では、各牌pMに関して、時計回りに左上頂点uM1、右上頂点uM2、右下頂点uM3、左下頂点uM4、という規則で符号(あるいは識別子)を割り当てている。また、当該規則で符号を割り当てた場合には、隣接する牌で共有される頂点には2通りの符号が付与されることとなるが、このような関係にある符号は「=」(イコール)を付して列挙してある。例えば、牌p3の右下頂点u33は、牌p3の左に隣接する牌p5の左下頂点u54と同じであるため、図中では以下のように示してある。その他の各頂点の符号に関しても全く同様である。
u33
=u54
図11は、一実施形態に係るステップS12における割当部32による第三部分領域を対象とした配置情報の特定処理の詳細を示すフローチャートである。なお、図8の繰り返し処理における各回のステップS12の都度、図11のフローチャート全体が実行されることにより、第三部分領域は逐次的に、個別の牌の配置情報が確定されていくこととなる。従って、図11のフローの説明においては、第三部分領域のうち配置情報が確定済みの領域と、未確定の領域との区別が存在することに注意されたい。
ステップS20では、当該時点における第三部分領域のうち配置情報が未確定の部分が略矩形領域として形成されているか否かを判定し、肯定判断の場合ステップS27へと進み、否定判断の場合ステップS21へと進む。ステップS27では、当該略矩形領域として形成されている未確定部分の第三部分領域の配置情報を確定したうえで、ステップS26へと進む。具体的に、ステップS27における配置情報の確定は、第二部分領域を前述の式(1)によってn2個に「量子化」したのと全く同様の手法により、個別の牌が同じ向きにn2個並んでいるものとして、全ての配置情報を確定することができる。ただし、ステップS27における確定の場合、式(1)の集合C2を、自然数集合として設定する。当該自然数集合C2は2つ以上の要素からなるものとして設定してもよい。また、当該自然数集合C2は、既に牌の配置情報が決定している第一部分領域、第二部分領域、第三部分領域における当該既に決定した牌の個数に応じた所定の集合としてもよい。
なお、ステップS20からステップS27へと至った場合は、第三部分領域の配置情報を完全に確定させる最終段階に相当する。一方、ステップS20からステップS21へと至った場合は、第三部分領域の未確定部分の形状にはまだ凹凸が存在している状態(すなわち、略矩形の形状ではない状態)であり、配置情報を完全に確定させるまでの途中段階に相当する。
ステップS21では、第三部分領域のうち当該時点で配置情報が未確定の領域が形成している多角形を参照して、隣接する2辺であって、そのうち一方が牌の横幅W3でありそのうち一方が牌の縦幅H3に該当していると判定されるものを探索してから、ステップS22へと進む。
ステップS21は具体的には、第一処理として、第三部分領域のうち配置情報の未確定領域の多角形の各辺につき、閾値判定でその長さxが横幅W3に該当するものを特定し、且つ、閾値判定でその長さxが縦幅H3に該当するものを特定する。すなわち、以下の式(a)を満たす長さxを有する辺は横幅W3に該当すると判断し、以下の式(b)を満たす長さxを有する辺は縦幅H3に該当すると判断する。THa,THbは判定用の所定の閾値であり、辺の長さxによって横幅W3及び縦幅H3に同時に該当してしまう判定が下されることのないように所定値を設定しておくことが好ましい。
|x-W3|<THa …(a)
|x-H3|<THb …(b)
ステップS21はさらに、第二処理として、横幅W3に該当すると判定された辺と縦幅H3に該当すると判定された辺とが、当該多角形上において互いに隣接しているもの(すなわち、当該辺同士が片方の頂点を共有しているもの)を全て抽出する。
ただし、当該抽出する際には、図12に模式的に示すように、横幅W3に該当すると判定された辺と、縦幅H3に該当する辺と、を2辺とした平行四辺形PRを形成したうえで、当該平行四辺形PR上において当該多角形(当該時点で配置情報が未確定の第三部分領域が形成する多角形)がオーバーラップしている領域の割合が所定値以下であるような隣接2辺は、抽出対象から除外することが好ましい。
なお、以上のステップS21は、当該多角形において1個の牌に相当する横幅W3と縦幅H3とが辺としてそのまま「露出」している箇所(すなわち、1個の牌に相当する(略)矩形領域を当てはめるべきである「正解」が部分的にそのまま見えている箇所)を探し出す処理に相当する。また、上記でオーバーラップ割合が所定値以下のものを除外するのは、当該多角形の内部に1個の牌に相当する領域を見出す必要があるためである。すなわち、オーバーラップ割合が所定値以下の場合は、縦・横の長さは整合したとしても多角形の外部に1個の牌に相当する領域を見出してしまう、不適切な箇所(1個の牌に相当する矩形領域をあてはめ不可能な箇所)であるためである。
また、以上のステップS21における探索を行う際に用いる横幅W3及び縦幅H3の値は、第一部分領域において求まっている横幅W1及び縦幅H1を用いるようにしてもよいし、第二部分領域において求まっている横幅W2/n2及び縦幅H2を用いるようにしてもよい。さらに、第三部分領域に関して既に部分的に個別の牌の領域が配置情報として確定している場合は、当該確定している牌の領域において定まる横幅及び縦幅を用いるようにしてもよい。確定している牌が複数ある場合は、そのうちの任意の1つを採用してもよいし、それらの平均を採用してもよい。さらに、所定の一つの牌として、当該注目している辺に最も近い位置にある牌における横幅及び縦幅を採用してもよい。なお、第二部分領域の説明の際と同様に、第三部分領域において当該確定している牌の領域が略矩形であり向かい合う辺の長さが異なる場合には、当該向かい合う辺の平均の長さとして、確定している牌の領域の横幅及び縦幅を求めればよい。
ステップS22では、上記のステップS21において少なくとも1つの、互いに隣接する横幅W3に相当する辺と縦幅H3に相当する辺とのペアが見つかったか否かを判定し、見つかっていればステップS23へと進み、見つかっていなければステップS24へと進む。
ステップS23では、当該見つかった1つ以上のペアに基づいて定まる略矩形領域のうち、最大の包含率が得られる1つの略矩形領域を、第三部分領域内において1個の牌が占める領域であるものとして確定(すなわち、配置情報として確定)したうえで、ステップS26へと進む。
ここで、包含率に関しては、次のように算出すればよい。当該長さW3,H3に相当すると判定されたペアの実際の長さをw3,h3としたうえで、当該長さw3,h3の辺(Ew3,Eh3とする)を含む略矩形領域を当該多角形の中から切り出した際の、長さw3の辺の向かい側の辺の長さをw30、長さh3の向かい側の辺の長さをh30とする。当該切り出しは、辺Ew3の辺Eh3とは逆側の隣接辺を辺Ew3r、辺Eh3の辺Ew3とは逆側の隣接辺を辺Eh3rとした場合に、辺Ew3r又は辺Eh3rを延長した直線のいずれかのうち、当該多角形において辺のペアEw3,Eh3から矩形を適切に切り取っているものを、切り出し結果として採用すればよい。(なお、図13を参照して当該切り出しの具体例を紹介する。)
そして、当該切り出した矩形の周囲の全長(周囲長総和)L0のうち、当該多角形(当該時点で配置情報が未確定の第三部分領域の形成する多角形)の辺と共通部分をなしている長さL1を求めることで、包含率をL1/L0として算出すればよい。
なお、当該計算される包含率は、当該多角形の外接矩形を考えた場合に、当該外接矩形のうちの短辺の側(麻雀牌の並びであれば両端の側)において、より高い包含率が計算される可能性が高いという性質を有するものである。且つ、図4で説明したような撮像の制約条件のもとでは、当該短辺の側は牌の並び方で考えらえる組み合わせが長辺の側よりも少ない可能性が高く、牌の配置をより高精度で確定しやすいという性質がある。従って、当該計算される包含率により短辺の側を優先して確定していくことで、より確実に配置情報を確定できるという効果がある。
ステップS23では最後に、包含率が最大のものとして上記のように切り取った略矩形をそのまま、第三部分領域において1個の牌が占める領域であるものとして確定すればよい。
ステップS23の別の一実施形態として、上記のように包含率が最大となっているものから切り出される部分を牌領域として確定するのに代えて、直近のステップS21で探索された全てのペアから切り出されるそれぞれの部分を牌領域として確定してもよい。(すなわち、包含率が最大のものだけを確定対象として限定しないようにしてもよい。)
ステップS26では、当該ステップS26に至った直近のステップS27、ステップS23又はステップS25において牌が占めるものとして確定した領域に基づいて、当該時点における未確定の領域を更新して、図11のフローは終了する。すなわち、第三部分領域のうち配置情報が未確定の領域の中から、確定した領域を削除することで、未確定の領域を狭める更新を行う。
一方、ステップS22で否定判断が下されてステップS24に至った場合は、当該多角形(当該時点で配置情報が未確定の第三部分領域の形成する多角形)において横幅W3と縦幅H3とが隣接して「露出」している箇所は存在しないことを意味している。しかしながら、図4等で説明したような麻雀牌の並びの制約条件の下では、当該多角形の辺のうち、横幅W3又は縦幅H3のいずれか片方が孤立して「露出」している箇所が存在する。従って、ステップS24においては当該多角形より、横幅W3又は縦幅H3のいずれか片方が孤立して「露出」している箇所の探索を実施する。
具体的に、ステップS24では、当該多角形の各辺に対してその長さxを調べることで、前述の式(a)を満たすような長さxを有する辺を横幅W3に該当するものと判定し、前述の式(b)を満たすような長さxを有する辺を縦幅H3に該当するものと判定してから、ステップS25へと進む。
ここで、上記のように長さxが横幅W3又は縦幅H3に該当すると判定された辺のうち、当該辺の両隣の辺の長さが共に、牌の少なくとも1辺分の長さに満たない長さの辺となっている場合(すなわち、短辺である横幅W3に満たないと判定される長さである場合)は、当該長さxの辺は当該多角形の「凹部」に該当し配置情報の確定に不向きな箇所であるとの判断より、ステップS24の判定結果から除外するようにしてもよい。
ステップS25では、直近のステップS24において横幅W3又は縦幅H3に該当すると判定された一連の辺(上記の「凹部」判定されたものを除くようにしてもよい)に基づき、所定の包含関係が得られる領域を2以上の牌が並んだ複数の隣接する略矩形領域であるものとして配置情報を確定してから、ステップS26へと進む。
ステップS25では具体的には、次のように配置情報を確定する。(なお、当該確定する具体例についても図13を参照して後述する。)横幅W3又は縦幅H3に該当すると判定された辺をE3とし、当該多角形において辺E3の2つの隣接辺をE3A,E3Bとする。すなわち、辺E3Aは辺E3の一方の頂点を自身の頂点として共有する辺であり、辺E3Bは辺E3のもう一方の頂点を自身の頂点として共有する辺である。(ここで、図4で説明したような麻雀牌の並びの制約条件から、辺E3A,E3B同士は概ね平行の関係である。)さらに、隣接辺E3A,E3Bのうち長い方を辺E3Lとし、その長さをL3とする。(ただし、当該長い方の辺E3Lが当該多角形の最長辺に該当する場合には、短い方の辺を辺E3Lとし、その長さをL3とする。)そして、当該長さL3が、複数のn3個の牌が同じ向きで並んでいるものとして、配置情報を確定することができる。
具体的には、式(1)の「量子化」と全く同様の考え方に基づき、辺E3が横幅W3に該当すると判定されその実測値がw3であった場合は、前述のアスペクト比rを用いて当該実測値w3を縦幅h30に換算したうえで、値「L3/h30」に最も近い整数を個数n3として決定することができる。また同様に、辺E3が縦幅H3に該当すると判定されその実測値がh3であった場合は、前述のアスペクト比rを用いて当該実測値h3を縦幅w30に換算したうえで、値「L3/w30」に最も近い整数を個数n3として決定することができる。
ここで、上記の個数n3は、直近のステップS24で横幅W3又は縦幅H3に該当すると判定された全ての辺E3に関してそれぞれ算出されるが、ステップS25においては、当該算出された個数n3が2以上の整数となっているものを、配置情報を確定させるものとして採用する。
なお、個数n3が2以上の整数となるような辺E3が複数ある場合、最小の個数n3を与えているものを配置情報の確定対象として選択するようにしてもよい。
ステップS25における具体的な配置情報の確定は、図9を参照して第二部分領域をn2等分した手法と全く同様にして、辺E3と、その隣接辺E3Lと、を2辺とした略矩形領域を上記求めた個数であるn3等分するようにすればよい。(すなわち、隣接辺E3Lがn3等分される。)ここで、当該n3等分する略矩形領域に関しては、辺E3Lの辺E3とは逆側にある辺E3Rを延長して、当該多角形(当該時点で配置情報が未確定の第三部分領域の形成する多角形)から切り出すようにすればよい。
以上、第三部分領域を対象とした割当部32による図8のステップS12の処理の詳細として、図11のフローを説明した。ここで、図13を参照して、図11のフローによる配置情報の確定の流れの模式例を説明する。図13では、図10に示した第三部分領域P3を配置情報の確定対象の例としている。
図13において、最初の時点では[0]に示すように、第三部分領域P3の全体が未確定領域P3[0]である。従って、領域P3[0]は略矩形領域ではないためステップS20からステップS21へと至る。ここで、ステップS21の探索で、以下の2件h01,h02がヒットする。(なお、頂点等の符号については、図10で説明した通りである。)
(h01) 牌p3の上辺であるu31-u32が横幅W3に該当し、且つ、その隣接辺としての右辺u31-u34が縦幅H3に該当している。
(h02) 牌p15の上辺であるu151-u152が縦幅H3に該当し、且つ、その隣接辺としての左辺u152-u153が横幅W3に該当している。
次に、ステップS22へ至り工程判断を得てステップS23へ至ると、上記ヒットした2件h01,h02のうち、最大の包含率が得られるものとしてヒット結果h02の方が選択される。結果h02を構成する牌p15の上辺u151-u152及び右辺u152-u153の隣接辺はそれぞれ、辺u142-u151(牌p14の左上部分)と、辺u34-u153(部分領域P3全域に渡る下辺)と、であり、このうち延長することによって適切な略矩形領域を切り出すことができるものは、前者の辺u142-u151(牌p14の左上部分)である。従って、当該辺を延長することで、牌p15の左下頂点u154が確定し、図13の[0]に示すように、牌p15の領域(及びその向き)が確定する。
当該確定結果を続くステップS26で反映することで、図13の[1]に示すように、第三部分領域のうちの未確定部分多角形がP3[1]のように更新される。
次いで、2巡目の図11のフローでは、領域P3[1]は略矩形領域ではないため、1巡目と同じく、ステップS20からステップS21へと至る。のステップS21の探索では、前述のヒット結果(h01)のみがヒットし、ステップS22を経てステップS23へと至る。ステップS23ではヒット結果が1件のみであるため、自ずと結果(h01)が最大包含率として選択される。結果h01を構成する牌p3の上辺u31-u32及び左辺u31-u34の隣接辺はそれぞれ、辺u41-u32(牌p4の右上部分)と、辺u34-u143(多角形P3[1]全域に渡る下辺)と、であり、このうち延長することによって適切な略矩形領域を切り出すことができるものは、前者の辺辺u41-u32(牌p4の右上部分)である。従って、当該辺を延長することで、牌p3の右下頂点u33が確定し、図13の[1]に示すように、牌p3の領域(及びその向き)が確定する。
当該確定結果を続くステップS26で反映することで、図13の[2]に示すように、第三部分領域のうちの未確定部分多角形がP3[2]のように更新される。
次いで、3巡目の図11のフローにおいても、領域P3[2]は略矩形領域ではないためステップS20からステップS21へ至る。ステップS21の探索では、ヒット結果は0件となり、ステップS22で否定判断を得てステップS24へと至る。ステップS24の探索では以下のようなヒット結果を得る。
(h11) 牌p4の上辺u41-u42は縦幅H3に該当する。
(h12) 牌p14の右辺u142-u143は縦幅H3に該当する。
なお、牌p8の上辺u81-u82と牌p10の上辺u101-u102とは縦幅H3に該当するが、当該辺の両隣の辺の長さが横幅W3に満たないため、ヒット結果から除外される。
次いで、ステップS25では上記各ヒット結果に関して個数n3を以下のように計算する。
(h11) n3=2
(h12) n3=4
このうち、2以上である最小の整数を与えている結果(h11)が、領域確定のための結果として採用される。そして、2つの牌p4,p5の2つの左辺を形成している辺u41-u54を2等分した点として点u44(=u51)が定まる。さらに、縦幅H3に該当すると判定された牌p4の上辺u41-u42の隣にある辺u42-u61を延長した先の交点として点u53が定まると共に、当該得られた辺u42-u53を2等分した点として点u43(=u52)が定まる。以上より、ステップS25において、図13の[2]に示すように、2個の並んだ牌p4,p5の領域(及びその向き)が配置情報として確定する。
当該確定結果を続くステップS26で反映することで、図13の[3]に示すように、第三部分領域のうちの未確定部分多角形がP3[3]のように更新される。以降の継続される処理については説明を省略するが、このようにして第三部分領域P3の全体に渡り、逐次的に各牌p3〜p15の配置情報を確定することができる。なお、以上の図13の説明では辺の位置の説明の明確化するための便宜上、「牌pMの上辺pM1-pM2」等の呼び方を用いたが、配置情報が確定されない限りは、推定部3において知りえる情報は「上辺pM1-pM2」といった多角形の辺の情報のみであることに注意されたい。
次に、第三部分領域に対する割当部32による配置情報の確定処理についての、図11とは別の一実施形態(第二実施形態)を説明する。
第二実施形態では、割当部32が、第三部分領域に対して予め、「垂直分割」を施すことにより、第三部分領域を複数の略矩形領域へと分割する。(ここで、図4を参照して説明したような制約条件のもとでの撮像がなされていることに基づき、垂直分割の結果は全て、略矩形領域となる。)そして、当該分割されたそれぞれの略矩形領域を対象として、割当部32は、同じく略矩形領域として構成されている第二部分領域を前述の式(1)によってn2個に「量子化」したのと全く同様の手法により、個別の牌が同じ向きにn2個並んでいるものとして、全ての配置情報を確定することができる。ただし、第二実施形態において当該配置情報を確定する際は、式(1)の集合C2を、自然数集合として設定する。
なお、第二実施形態においては分割された各略矩形領域において配置情報が画一的に定まるため、前述の実施形態とは異なり、第三部分領域において確定部分/未確定部分を逐次的に更新する履歴を考慮する必要はない。従って、第二実施形態における図8のフローでは繰り返し処理を行う必要はなく、一度のステップS12において第三部分領域を略矩形領域に垂直分割し、全ての略矩形領域内において分割個数n2を求めることで全ての配置情報を確定することができる。
図14は、第二実施形態における垂直分割の模式例を、図10等で参照した第三部分領域P3に関して適用した場合に関して示す図である。当該模式的に示される通り、垂直分割は、第三部分領域の多角形において縦方向に相当する短辺を延長した直線によって第三部分領域を垂直方向に分割することで、各略矩形領域を得るものである。図14の例では、短辺を延長した直線として例えば牌p4の左辺部分u41-u32を延長して得られる直線L31や、その他の図示する通りの直線L31〜L37によって第三部分領域P3が8個の略矩形領域P31〜P38に分割されている。当該分割された略矩形領域P31〜P38は全て、式(1)と同じ考え方の「量子化」の手法によりただちに、個別の牌の領域を確定することができる。
垂直分割は具体的には以下の[手順31],[手順32]ように実施すればよい。
[手順31] 上記の延長線分を形成するための垂直方向の短辺を決定する。具体的には、第三部分領域の多角形の最長辺の方向を水平方向として決定し、当該水平方向に対して垂直方向であると判定される辺(当該最長辺の隣接辺を除く)を垂直方向の短辺として決定すればよい。
[手順32] 上記決定された垂直方向の短辺を延長した各直線によって、第三部分領域を分割し、各略矩形領域を得る。
次に、第三部分領域に対する割当部32による配置情報の確定処理についての、以上の実施形態とはさらに別の一実施形態(第三実施形態)を説明する。第三実施形態の位置付けは、第一実施形態(図11のものを第一実施形態とする)の逐次処理における追加的な前処理として、第三部分領域において確実性の高いと判断される配置情報を予め特定しておくものに相当する。
すなわち、第三部分領域を対象とした図8のフローを適用する場合には、当初の時点では繰り返されるステップS12から第三実施形態の処理を呼び出し、当該第三実施形態によって特定可能な配置情報を可能な限り特定しておき、第三実施形態でこれ以上特定される配置情報がなくなった場合に、以上説明してきた第一実施形態(ステップS12から図11のフローを呼び出す実施形態)に切り替えるようにすればよい。
第三実施形態ではまず、図15に第三部分領域P3に適用した場合を模式的に示すように、第二実施形態における垂直分割とは逆の「水平分割」を実施する。具体的には、垂直分割の場合と同様に第三部分領域の最長辺の方向を水平方向として決定し、当該水平方向であると判定される一連の水平方向の直線を形成する。ここで、水平方向の直線は、ハフ変換の場合における大局的な直線として形成する。図15の例では、4本の水平方向の直線L41,L42,L43,L44が形成されている。
ここで、水平方向の直線が何本形成されたかで、第三部分領域の配置情報を部分的に特定することができる。図4に例示した撮像の制約条件下では4本または3本のいずれかが形成され、それぞれ以下のような情報を特定できる。
図15の例のように4本形成されている場合、「カカン」と「カン又はポン」(図5参照)の配置を含んで第三部分領域が形成されていることが特定される。且つ、最長辺の逆側において第三部分領域に接している水平直線(図15では直線L44)に接する部分の第三部分領域は、「カカン」を構成する(横向きの)縦幅H3であり、横向きに牌が2個並ぶことで第三部分領域を垂直方向に横切っていることを特定することができる。すなわち、図15の例であれば横向きの2個の牌p4,p5が縦に並んでいることをただちに特定することができ、当該部分の配置情報が確定する。
なお、水平方向の直線が4本形成されている場合の「カカン」の部分は、次のように特定してもよい。すなわち、当該水平方向の4本の直線を用いて第三部分領域と、第三部分領域の外接矩形と、をそれぞれ分割する。当該分割された第三部分領域のうち、当該分割された対応する外接矩形に対する面積比が最小の箇所を、「カカン」の部分として特定できる。
さらに、「カカン」を含む場合は、第三部分領域を包含する外接矩形の短辺の1/2の値を撮像対象の短辺(すなわち、当てはめの際に用いる横幅W3)であると仮定することで撮像対象のスケールを高精度に推定でき、当てはめ精度も向上できる効果が得られる。
図15の例では、外接矩形を形成するための垂直方向の直線L30,L31が示されると共に、分割された第三部分領域P301,P302,P303(図中では当該領域部分をグレー表示してある)に対して、背景となる矩形領域に対する面積比が最小となるのは領域P303であり、当該箇所を「カカン」と特定することができる。(なお、領域P302は複数の領域に分断されて構成されている。)
同様に、水平方向の直線が3本形成されている場合、第三部分領域は「カカン」若しくは「ポン又はチー」のいずれかを含む旨を特定することができる。(「カカン」と「ポン又はチー」とが混在することはない旨を特定することができる。)当該特定によりただちに確定する領域情報は存在しないが、図11のフローに移った際に、牌領域を当てはめるための制約条件として利用することができる。
以上、本発明によれば、アガリ状態の麻雀牌の並びのように、配置情報の組み合わせは膨大に存在するが配置のなされ方に図4で例示したような一定の制約条件がある撮像対象における配置情報を、当該一定の制約を考慮することで効率的に特定することができる。制約条件としては特に以下のようなものを挙げることができる。
・配置情報において充填されて配置されている個別の牌は全て、互いに一定のアスペクト比及び同一サイズを有する、同一の矩形形状である。また、個別の牌(直方体)における領域情報を構成することとなる面(牌の種類が絵柄等で描かれている面)は、現実空間において同一平面上にあると判定可能な状態で配置されたうえで撮像されている。
・配置情報の各部分領域において、全ての牌のいずれか一つの辺がその線分上に配置されている、共通の1つの線分が存在する。(ただし、カカンの場合の1つの牌を除く。)
・配置情報において充填されて配置されている全ての牌は、いずれかの辺の少なくとも一部で他のいずれかの牌のいずれか一辺の少なくとも一部と、少なくとも1つの頂点を共有する形で接しており、当該隣接する牌同士の間で隙間を生じること(辺同士が交差する位置関係にあること)はない。(ただし、1個の牌のみで構成された部分領域に関しては、他の牌と接する辺は存在しない。)
・前記共通の1つの線分の方向を横方向とすると、部分領域の外接矩形を取った際の縦方向のサイズは、牌の縦幅か、牌の横幅の2倍か、に概ね一致する。
・前記共通の1つの線分を横向きを定義する基準として、各牌は縦又は横に配置されている。
・配置情報の各部分領域の形状を構成している多角形の各辺の方向は、閾値判定で縦方向と判定される第一方向か、閾値判定で横方向と判定される第二方向か、のいずれかの方向であり、当該両方向の中間にある方向となることはない。(ここで、撮像が概ね正面から行われていることを前提としている。)
・前記多角形の任意の辺とその隣接辺とを抽出すると、必ず一方が前記第一方向であり、もう一方が前記第二方向である。すなわち、前記多角形の辺上を順次辿っていくと、前記第一方向の辺と前記第二方向の辺とが交互に現れる。
・従って、上記交互に現れることに基づき、第三部分領域の形状は、矩形領域の一部に1つ以上の矩形凹部及び/又は矩形凸部が形成された領域(凹凸矩形領域)となる。ここで、当該矩形凹部及び/又は矩形凸部が形成されるのは、前記共通の1つの線分(第三部分領域の最長辺となっている)の逆側である。
以下、本発明における補足的事項を説明する。
(1)第三部分領域の配置情報の確定は、図10でそのフレームワークを説明したように、多角形として構成される第三部分領域の辺上において矩形形状の牌の4頂点に対応する点を全て特定するために、辺の長さに基づく逐次的なマッチングを行うものとして説明してきた。当該フレームワークと概ね同様の結果が概ね同様のマッチング方針に従って得られるのであれば、辺の長さを直接的には用いないでマッチングするようにしてもよい。
例えば、辺の長さによるマッチングに代えて、図16に模式的に示すように、中心線において横幅W3及び縦幅H3を有し、且つ、所定幅wを有する額縁状(中空となっている矩形枠状)のテンプレートマッチングを第三部分領域の境界に対して適用することで、矩形形状の牌の4頂点に対応する点を逐次的に決定してよい。当該図16に例示するテンプレートの他、横幅W3で縦幅H3の矩形を検出するのように構成された任意のテンプレートを用いてもよい。
あるいは同様に、辺の長さによるマッチングに代えて、図17に模式的に示すように、それぞれが横幅W3*r0及び縦幅H3*r0(r0は1に近い値でありサイズ比率を表す)を有し牌を表している剛体モデルを第三部分領域内に充填した結果として、領域情報を求めるようにしてもよい。当該剛体モデルの充填位置の決定には、上記テンプレートマッチング等を用いてもよいし、既存の剛体モデルの手法を利用してもよい。
(2)図4の例ではアガリ牌が必ず1個のみの牌からなる個別領域として撮像されているが、面前牌と一列に並べて撮像するようにしてもよい。また、当該アガリ牌をも併せて並べた面前牌と鳴き牌とを全て一列に並べて撮像するようにしてもよい。これらの場合、撮像されうるのは第二部分領域及び/又は第三部分領域となる。なお、撮像の仕方の取り決めに応じて制約条件(式(1)の集合C2の内容など)が変わるので、どのような撮像をする前提であるか、すなわち、どのような制約条件が適用されるかに関して、所定のメニュー項目の中からユーザに選択させる等の形で、入力部6を介して指定するようにしてもよい。
(3)センサ部7が取得した情報処理装置10の姿勢情報が、麻雀牌等の対象を正面から撮像していると判定される場合にのみ、推定部3での推定処理(及び認識部4による認識処理)を実施するようにしてもよい。また、センサ部7が取得した姿勢情報によって麻雀牌等の対象を正面から撮像していないと判定される場合には、撮像部1で得た撮像画像を正面から撮像した状態に補正した画像を抽出部2及び認識部4へと出力するようにしてもよい。なお、当該補正する処理の機能ブロックは図2等では描くのを省略している。当該補正は具体的に、次のようにすればよい。すなわち、麻雀牌等の対象は所定姿勢の平面(例えば水平面)に配置しておくという制約条件を課しておき、センサ部7で情報処理装置10の姿勢(撮像部1の撮像面の姿勢)を当該所定平面に平行となるような姿勢に変換するホモグラフィ行列を撮像画像に適用すればよい。
(4)抽出部2において抽出した模様情報を、推定部3での配置情報の推定の制約条件として利用してもよい。具体的には、式(1)の「量子化」の考え方で略矩形領域をn2等分して個別のn2個の牌領域を確定(ここでは暫定的に確定)した際に、当該牌領域の境界(n2等分した際の線分)が模様情報を横切ってしまっている場合、当該n2個の確定結果を廃棄し、n2に最も近い数で模様情報を横切ることがないような分割個数n2[補正]へと、配置情報の確定結果を補正するようにしてよい。
(5)情報処理装置10は一般的な構成のコンピュータとして実現可能である。すなわち、CPU(中央演算装置)、当該CPU31にワークエリアを提供する主記憶装置、ハードディスクやSSDその他で構成可能な補助記憶装置、キーボード、マウス、タッチパネルその他といったユーザからの入力を受け取る入力インタフェース、ネットワークに接続して通信を行うための通信インタフェース、表示を行うディスプレイ、カメラ及びこれらを接続するバスを備えるような、一般的なコンピュータによって情報処理装置10を構成することができる。さらに、図2及び図3に示す情報処理装置10の各部の処理はそれぞれ、当該処理を実行させるプログラムを読み込んで実行するCPUによって実現することができるが、任意の一部の処理を別途の専用回路等において実現するようにしてもよい。撮像部1は、当該ハードウェアとしてのカメラによって実現できる。
(6)情報処理装置10はさらに、認識部4の認識結果に基づく追加処理を行う構成(図2等には不図示)を備えていてもよい。例えば、認識部4で認識された複数の牌のそれぞれの種類に基づいて、ルールベースで麻雀における点数計算を行う機能部を備えていてもよい。