(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-10
(45)【発行日】2023-03-20
(54)【発明の名称】情報処理装置及びプログラム
(51)【国際特許分類】
G06T 7/12 20170101AFI20230313BHJP
G06T 7/40 20170101ALI20230313BHJP
G06T 7/00 20170101ALI20230313BHJP
【FI】
G06T7/12
G06T7/40
G06T7/00 350B
(21)【出願番号】P 2019026390
(22)【出願日】2019-02-18
【審査請求日】2021-09-08
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】598076591
【氏名又は名称】東芝インフラシステムズ株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】大川 泰弘
(72)【発明者】
【氏名】浜村 倫行
(72)【発明者】
【氏名】有吉 俊二
【審査官】新井 則和
(56)【参考文献】
【文献】特開平01-245375(JP,A)
【文献】特開平05-282495(JP,A)
【文献】TextSnake: A Flexible Representation for Detecting Text of Arbitrary Shapes,Computer Vision and Pattern Recognition,2018年07月04日, [検索日 2022.09.29],インターネット: <https://arxiv.org/pdf/1807.01544v1.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00-7/90
G06V 30/00-30/424
(57)【特許請求の範囲】
【請求項1】
画像を取得するインターフェースと、
対象領域の中腹領域を特定し、
前記画像を構成する画素が前記対象領域の第1の端領域であることに関連する第1の端領域スコアを算出し、
前記画素が前記対象領域の第2の端領域であることに関連する第2の端領域スコアを算出し、
前記中腹領域及び前記第1の端領域スコアに基づいて前記第1の端領域の第1の境界を特定し、
前記中腹領域及び前記第2の端領域スコアに基づいて前記第2の端領域の第2の境界を特定し、
前記第1の境界及び前記第2の境界に基づいて前記対象領域を特定する、
プロセッサと、
を備え
、
前記プロセッサは、
前記中腹領域から第1の方向に沿って画素ごとに前記第1の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第1の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第1の境界を特定し、
前記中腹領域から前記第1の方向と異なる第2の方向に沿って画素ごとに前記第2の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第2の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第2の境界を特定する、
情報処理装置。
【請求項2】
前記プロセッサは、
前記中腹領域における前記第1の方向の端から前記第1の方向に沿って画素ごとに前記第1の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第1の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第1の境界を特定し、
前記中腹領域における前記第2の方向の端から前記第2の方向に沿って画素ごとに前記第2の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第2の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第2の境界を特定する、
請求項
1に記載の情報処理装置。
【請求項3】
前記プロセッサは、
前記中腹領域における中心線から前記第1の方向に沿って画素ごとに前記第1の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第1の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第1の境界を特定し、
前記中心線から前記第2の方向に沿って画素ごとに前記第2の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第2の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第2の境界を特定する、
請求項
1に記載の情報処理装置。
【請求項4】
前記第2の方向は、前記第1の方向と逆方向である、
請求項
1乃至3の何れか1項に記載の情報処理装置。
【請求項5】
前記第1の端領域は、前記中心線よりも上部に形成される上端領域であり、
前記第2の端領域は、前記中心線よりも下部に形成される下端領域である、
請求項
3に記載の情報処理装置。
【請求項6】
前記対象領域は、1行の文字列から構成される文字行を表示する領域である、
請求項1乃至
5の何れか1項に記載の情報処理装置。
【請求項7】
前記プロセッサは、
前記画素が前記中腹領域であることに関連する中腹領域スコアを算出し、
前記中腹領域スコアに基づいて前記中腹領域を特定する、
請求項1乃至
6の何れか1項に記載の情報処理装置。
【請求項8】
前記プロセッサは、深層学習によって得られたモデルに基づいて前記第1の端領域スコア及び前記第2の端領域スコアを算出する、
請求項1乃至
7の何れか1項に記載の情報処理装置。
【請求項9】
プロセッサによって実行されるプログラムであって、
前記プロセッサに、
画像を取得させ、
対象領域の中腹領域を特定させ、
前記画像を構成する画素が前記対象領域の第1の端領域であることに関連する第1の端領域スコアを算出させ、
前記画素が前記対象領域の第2の端領域であることに関連する第2の端領域スコアを算出させ、
前記中腹領域及び前記第1の端領域スコアに基づいて前記第1の端領域の第1の境界を特定させ、
前記中腹領域及び前記第2の端領域スコアに基づいて前記第2の端領域の第2の境界を特定させ、
前記第1の境界及び前記第2の境界に基づいて前記対象領域を特定させ
、
前記第1の境界を特定することは、前記中腹領域から第1の方向に沿って画素ごとに前記第1の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第1の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第1の境界を特定することであり、
前記第2の境界を特定することは、前記中腹領域から前記第1の方向と異なる第2の方向に沿って画素ごとに前記第2の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第2の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第2の境界を特定することである、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理装置及びプログラムに関する。
【背景技術】
【0002】
情報処理装置には、文字列の画像から文字を認識するものがある。そのような情報処理装置は、画像から行ごとに文字列を含む領域(対象領域)を特定し、対象領域ごとに文字認識処理を行う。
【0003】
しかしながら、情報処理装置は、行が曲がっている又は傾いている場合などに、対象領域の特定に失敗することがある。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の課題を解決するため、効果的に画像から対象領域を特定することができる情報処理装置及びプログラムを提供する。
【課題を解決するための手段】
【0006】
実施形態によれば、情報処理装置は、インターフェースと、プロセッサと、を備える。インターフェースは、画像を取得する。プロセッサは、前記画像を構成する画素が対象領域の第1の端領域であることに関連する第1の端領域スコアを算出し、前記画素が前記対象領域の第2の端領域であることに関連する第2の端領域スコアを算出し、前記対象領域の中腹領域を特定し、前記中腹領域及び前記第1の端領域スコアに基づいて前記第1の端領域の第1の境界を特定し、前記中腹領域及び前記第2の端領域スコアに基づいて前記第2の端領域の第2の境界を特定し、前記第1の境界及び前記第2の境界に基づいて前記対象領域を特定する。前記プロセッサは、前記中腹領域から第1の方向に沿って画素ごとに前記第1の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第1の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第1の境界を特定し、前記中腹領域から前記第1の方向と異なる第2の方向に沿って画素ごとに前記第2の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第2の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第2の境界を特定する。
【図面の簡単な説明】
【0007】
【
図1】
図1は、実施形態に係る情報処理装置の構成例を示すブロック図である。
【
図2】
図2は、実施形態に係る中腹領域などの例を示す図である。
【
図3】
図3は、実施形態に係る上端領域の例を示す図である。
【
図4】
図4は、実施形態に係る下端領域の例を示す図である。
【
図5】
図5は、実施形態に係る中腹領域の例を示す図である。
【
図6】
図6は、実施形態に係る中腹領域の他の例を示す図である。
【
図7】
図7は、実施形態に係る情報処理装置の動作例を示す図である。
【
図8】
図8は、実施形態に係る情報処理装置の動作例を示す図である。
【
図9】
図9は、実施形態に係る情報処理装置が特定した文字行領域の例を示す図である。
【
図10】
図10は、実施形態に係る情報処理装置の動作例を示すフローチャートである。
【
図11】
図11は、実施形態に係る情報処理装置の動作例を示すフローチャートである。
【
図12】
図12は、実施形態に係る情報処理装置の動作例を示すフローチャートである。
【
図13】
図13は、実施形態に係る対象領域の例を示す図である。
【
図14】
図14は、実施形態に係る情報処理装置の動作の変形例を示す図である。
【
図15】
図15は、実施形態に係る情報処理装置が特定した領域の例を示す図である。
【発明を実施するための形態】
【0008】
以下、実施形態について、図面を参照して説明する。
【0009】
実施形態に係る情報処理装置は、画像から行ごとに文字列を含む領域を特定する。即ち、情報処理装置は、1行の文字列(文字行)を含む領域(文字行領域(対象領域))を特定する。たとえば、情報処理装置は、画像から文字を認識するために用いられる。また、情報処理装置は、文字行領域から文字を認識するものであってもよい。
【0010】
図1は、実施形態に係る情報処理装置10の構成例を示す。
図1は、情報処理装置10の構成例を示すブロック図である。
図1が示すように、情報処理装置10は、プロセッサ11、ROM12、RAM13、NVM14、インターフェース15、操作部16及び表示部17などを備える。
【0011】
プロセッサ11と、ROM12、RAM13、NVM14、インターフェース15、操作部16及び表示部17と、は、データバスなどを介して互いに接続する。
【0012】
なお、情報処理装置10は、
図1が示すような構成の他に必要に応じた構成を具備したり、情報処理装置10から特定の構成が除外されたりしてもよい。
【0013】
プロセッサ11は、情報処理装置10全体の動作を制御する機能を有する。プロセッサ11は、内部キャッシュ及び各種のインターフェースなどを備えてもよい。プロセッサ11は、内部メモリ、ROM12又はNVM14が予め記憶するプログラムを実行することにより種々の処理を実現する。
【0014】
なお、プロセッサ11がプログラムを実行することにより実現する各種の機能のうちの一部は、ハードウエア回路により実現されるものであってもよい。この場合、プロセッサ11は、ハードウエア回路により実行される機能を制御する。
【0015】
ROM12は、制御プログラム及び制御データなどが予め記憶された不揮発性のメモリである。ROM12に記憶される制御プログラム及び制御データは、情報処理装置10の仕様に応じて予め組み込まれる。
【0016】
RAM13は、揮発性のメモリである。RAM13は、プロセッサ11の処理中のデータなどを一時的に格納する。RAM13は、プロセッサ11からの命令に基づき種々のアプリケーションプログラムを格納する。また、RAM13は、アプリケーションプログラムの実行に必要なデータ及びアプリケーションプログラムの実行結果などを格納してもよい。
【0017】
NVM14は、データの書き込み及び書き換えが可能な不揮発性のメモリである。NVM14は、たとえば、HDD(Hard Disk Drive)、SSD(Solid State Drive)又はフラッシュメモリなどから構成される。NVM14は、情報処理装置10の運用用途に応じて制御プログラム、アプリケーション及び種々のデータなどを格納する。
【0018】
インターフェース15は、文字行の画像を取得するためのインターフェースである。インターフェース15は、外部装置とデータを送受信する。たとえば、インターフェース15は、スキャナと接続する。また、インターフェース15は、文字列の画像を格納するメモリと接続するものであってもよい。また、インターフェース15は、ネットワークを通じて画像を取得するものであってもよい。たとえば、インターフェース15は、USB(Universal Serial Bus)接続又はLAN(Local Area Network)接続をサポートする。
【0019】
操作部16は、オペレータから種々の操作の入力を受け付ける。操作部16は、入力された操作を示す信号をプロセッサ11へ送信する。操作部16は、タッチパネルから構成されてもよい。
【0020】
表示部17は、プロセッサ11からの画像データを表示する。たとえば、表示部17は、液晶モニタから構成される。操作部16がタッチパネルから構成される場合、表示部17は、操作部16と一体的に形成されてもよい。
【0021】
次に、情報処理装置10が実現する機能について説明する。情報処理装置10が実現する機能は、プロセッサ11がROM12又はNVM14などに格納されるプログラムを実行することで実現される。
【0022】
まず、情報処理装置10のプロセッサ11は、文字列を含む画像を取得する機能を有する。
プロセッサ11は、インターフェース15を通じて、文字列を含む画像を取得する。たとえば、インターフェース15がスキャナと接続する場合、プロセッサ11は、スキャナに画像をスキャンさせる信号を送信して、スキャナから画像を取得する。
【0023】
また、インターフェース15がメモリに接続する場合、プロセッサ11は、メモリが格納する画像を取得する。
また、インターフェース15がネットワークに接続する場合、プロセッサ11は、ネットワークを通じて外部装置に画像を要求するリクエストを送信して、外部装置から画像を取得する。
プロセッサ11が文字列を含む画像を取得する方法は、特定の方法に限定されるものではない。
【0024】
また、プロセッサ11は、取得した画像の各画素について中腹領域スコアを算出する機能を有する。
中腹領域スコアは、画素が中腹領域であることに関連するスコアである。たとえば、中腹領域スコアは、画素が中腹領域であることの尤度である。
【0025】
中腹領域は、文字行領域の中腹に形成される領域である。
図2は、中腹領域について説明するための図である。
図2は、文字行20、中心線21及び中腹領域22を示す。ここでは、文字行20は、一行の文字列である。
文字行20の高さHは、たとえば、文字行20の平均的な高さである。
【0026】
中心線21は、文字行20の中心に引かれる線である。中心線21は、文字行20が記載される方向(記載方向)(
図2では、左右方向)に延びる。即ち、中心線21は、記載方向に直交する方向(直交方向)において、文字行20の中心に形成される。
【0027】
中腹領域22は、文字行20(文字行20の文字行領域)の中腹に形成される領域である。中腹領域22は、直交方向において、文字行20の中腹に形成される。即ち、中腹領域22は、直交方向において、文字行20の上端及び下端から離れた位置に形成される。ここでは、中腹領域22は、中心線21を中心に形成される。即ち、中腹領域22は、中心線21から直交方向の一方に所定の距離離れた線と逆方向に所定の距離離れた線との間に形成される領域である。
【0028】
また、中腹領域22は、記載方向において文字行20の一端から他端に掛けて形成される。
中腹領域22は、文字行20の高さHの1/N倍の高さに形成される。即ち、中腹領域22は、直交方向において、Hの1/N倍の幅に形成される。ここでは、Nは、3である。なお、Nの値は、1以上の任意の値でよい。また、中腹領域22の高さは、高さHに関係なく所定の値、たとえば3や5、でもよい。
【0029】
たとえば、プロセッサ11は、人工知能を用いて中腹領域スコアを算出する。プロセッサ11は、既知の中腹領域の画像を教師データとして深層学習して得られた学習モデル(たとえば、ネットワーク)などを用いて中腹領域スコアを算出する。
【0030】
また、プロセッサ11は、取得した画像の各画素について上端領域スコア(第1の端領域スコア)を算出する機能を有する。
【0031】
上端領域スコアは、画素が上端領域(第1の端領域)であることに関連するスコアである。たとえば、上端領域スコアは、画素が上端領域であることの尤度である。ここでは、上端領域スコアは、数値が高いほど画素が上端領域である蓋然性が大きいことを示す。
【0032】
上端領域は、文字行領域の上端に形成される領域である。即ち、上端領域は、文字行領域において上方向(第1の方向)に形成される領域である。
【0033】
図3は、上端領域について説明するための図である。
図3は、文字行20、中心線21及び上端領域23を示す。文字行20及び中心線21は、前述の通りである。
【0034】
上端領域23は、直交方向において、文字行20(文字行20の文字行領域)の上端の領域である。ここでは、上端領域23は、中心線21よりも直交方向において上部に形成される。
【0035】
たとえば、プロセッサ11は、人工知能を用いて上端領域スコアを算出する。プロセッサ11は、既知の上端領域の画像を教師データとして深層学習して得られた学習モデル(たとえば、ネットワーク)などを用いて上端領域スコアを算出する。
【0036】
また、プロセッサ11は、取得した画像の各画素について下端領域スコア(第2の端領域スコア)を算出する機能を有する。
【0037】
下端領域スコアは、画素が下端領域(第2の端領域)であることに関連するスコアである。たとえば、下端領域スコアは、画素が下端領域であることの尤度である。下端領域スコアは、数値が高いほど画素が下端領域である蓋然性が大きいことを示す。
【0038】
下端領域は、文字行領域の上端に形成される領域である。即ち、下端領域は、文字行領域において上方向に対向する下方向(第2の方向)に形成される領域である。
【0039】
図4は、下端領域について説明するための図である。
図4は、文字行20、中心線21及び下端領域24を示す。文字行20及び中心線21は、前述の通りである。
【0040】
下端領域24は、直交方向において、文字行20(文字行20の文字行領域)の下端の領域である。ここでは、下端領域24は、中心線21よりも直交方向において下部に形成される。
【0041】
たとえば、プロセッサ11は、人工知能を用いて下端領域スコアを算出する。プロセッサ11は、既知の下端領域の画像を教師データとして深層学習して得られた学習モデル(たとえば、ネットワーク)などを用いて下端領域スコアを算出する。
【0042】
なお、中腹領域スコア、上端領域スコア及び下端領域スコアの学習モデルは、Fully Convolutional Networkにsigmoid_cross_entropyをロスとして用いることで実現できる。また、学習モデルは、U-net等のモデル又はSVM、Logistic Regression等の機械学習モデルでもよく、画素ごとに中腹領域スコア、上端領域スコア及び下端領域スコアを出力できるものであればよい。
【0043】
また、プロセッサ11は、中腹領域スコアに基づいて画像から中腹領域を特定する機能を有する。
【0044】
たとえば、プロセッサ11は、中腹領域スコアを所定の閾値で二値化した画像を生成する。プロセッサ11は、生成した画像に対してラベリング処理を行うことで、文字行領域ごとに中腹領域を特定する。
【0045】
なお、プロセッサ11が中腹領域を特定する方法は、特定の方法に限定されるものではない。
【0046】
図5は、プロセッサ11が特定した中腹領域の例を示す。ここでは、プロセッサ11は、文字列30及び文字列40が記載された画像を取得するものとする。
【0047】
図5が示すように、プロセッサ11は、文字列30内に中腹領域32を特定する。また、プロセッサ11は、文字列40内に中腹領域42を特定する。文字列30と文字列40とは、一部重複するが、プロセッサ11は、中腹領域32と中腹領域42とを異なる中腹領域として特定する。
【0048】
また、
図6は、プロセッサ11が特定した中腹領域の他の例を示す。ここでは、プロセッサ11は、文字列50が記載された画像を取得するものとする。
【0049】
図6が示すように、プロセッサ11は、文字列50内に中腹領域52を特定する。文字列50は、所定の角度で傾いている。また、文字列50は、途中で折れ曲がる。しかしながら、プロセッサ11は、文字列50の傾き及び折れ曲がりに沿って中腹領域52を特定する。
【0050】
また、プロセッサ11は、特定した中腹領域及び算出した上端領域スコアに基づいて、上端領域の上端(第1の境界)を探索する機能を有する。
即ち、プロセッサ11は、文字行領域の上端を形成する線(上端線)を探索する。
【0051】
図7は、プロセッサ11が上端線65を探索する動作例を説明するための図である。
ここでは、取得した画像の横軸をX軸とし、縦軸をY軸とする。また、X軸において、左側から右側に掛けてX座標の値が上昇するものとする。また、Y軸において、上側から下側に掛けてY座標の値が上昇するものとする。また、プロセッサ11は、中腹領域62を特定したものとする。
【0052】
たとえば、プロセッサ11は、中腹領域62の左端のX座標を取得する。左端のX座標を取得すると、プロセッサ11は、左端のX座標における中腹領域62の上端(第1の方向の端)のY座標を取得する。プロセッサ11は、中腹領域62の上端のY座標から上部に進み、上端線の座標を探索する。
【0053】
プロセッサ11は、中腹領域62の上端のY座標から上部に進みながら、各座標における上端領域スコアを取得する。プロセッサ11は、上端領域スコアが所定の閾値以下になるまで上部に進む。即ち、プロセッサ11は、中腹領域62の上端のY座標から上方向に沿って画素ごとに上端領域スコアが所定の閾値以下となるか否かを順に判定する。プロセッサ11は、上端領域スコアが所定の閾値以下になると探索を終了する。プロセッサ11は、上端領域スコアが所定の閾値以下になる座標を上端座標リストに格納する。
【0054】
ここで、上端座標リストは、上端線の座標を格納するリストである。
プロセッサ11は、中腹領域62の左端のX座標から右端のX座標まで上記の動作を繰り返して、上端線を探索する。
【0055】
また、プロセッサ11は、特定した中腹領域及び算出した下端領域スコアに基づいて、下端領域の下端(第2の境界)を探索する機能を有する。
即ち、プロセッサ11は、文字行領域の下端を形成する線(下端線)を探索する。
【0056】
図8は、プロセッサ11が下端線66を探索する動作例を説明するための図である。
たとえば、プロセッサ11は、中腹領域62の左端のX座標を取得する。左端のX座標を取得すると、プロセッサ11は、左端のX座標における中腹領域62の下端(第2の方向の端)のY座標を取得する。プロセッサ11は、中腹領域62の下端のY座標から下部に進み、下端線の座標を探索する。
【0057】
プロセッサ11は、中腹領域62の下端のY座標から下部に進みながら、各座標における下端領域スコアを取得する。プロセッサ11は、下端領域スコアが所定の閾値以下になるまで下部に進む。即ち、プロセッサ11は、中腹領域62の下端のY座標から下方向に沿って画素ごとに下端領域スコアが所定の閾値以下となるか否かを順に判定する。プロセッサ11は、下端領域スコアが所定の閾値以下になると探索を終了する。プロセッサ11は、下端領域スコアが所定の閾値以下になる座標を下端座標リストに格納する。
【0058】
ここで、下端座標リストは、下端線の座標を格納するリストである。
プロセッサ11は、中腹領域62の左端のX座標から右端のX座標まで上記の動作を繰り返して、下端線を探索する。
【0059】
また、プロセッサ11は、上端線及び下端線に基づいて文字行領域を特定する機能を有する。
プロセッサ11は、上端線と下端線との間の領域を文字行領域として特定する。
【0060】
図9は、プロセッサ11が特定した文字行領域67の例を示す。
図9が示すように、プロセッサ11は、上端線65と下端線66との間の領域を文字行領域67として特定する。即ち、プロセッサ11は、上端線65と下端線66と中腹領域62の左端のX座標においてY軸方向に延びる直線と右端のX座標においてY軸方向に延びる直線とに囲まれた領域を文字行領域67として特定する。
【0061】
プロセッサ11は、文字行領域67を特定すると、文字行リストに文字行領域67を格納する。文字行リストは、取得された画像における各文字行領域を格納する。
【0062】
次に、情報処理装置10の動作例について説明する。
図10は、情報処理装置10の動作例について説明するためのフローチャートである。
【0063】
まず、情報処理装置10のプロセッサ11は、インターフェース15を通じて画像を取得する(S11)。画像を取得すると、プロセッサ11は、画像の各画素について中腹領域スコアを算出する(S12)。
【0064】
各画素について中腹領域スコアを算出すると、プロセッサ11は、各画素について上端領域スコアを算出する(S13)。各画素について上端領域スコアを算出すると、プロセッサ11は、各画素について下端領域スコアを算出する(S14)。
【0065】
各画素について下端領域スコアを算出すると、プロセッサ11は、各画素の中腹領域スコアに基づいて画像から中腹領域を特定する(S15)。中腹領域を特定すると、プロセッサ11は、文字行領域の特定を完了したか判定する(S16)。たとえば、プロセッサ11は、特定した各中腹領域について文字行領域を特定したか判定する。
【0066】
文字行領域の特定を完了していないと判定すると(S16、NO)、プロセッサ11は、中腹領域及び上端領域スコアなどに基づいて上端線を探索する(S17)。上端線を探索すると、プロセッサ11は、中腹領域及び下端領域スコアなどに基づいて下端線を探索する(S18)。
【0067】
下端線を探索すると、プロセッサ11は、上端線及び下端線に基づいて文字行領域を特定する(S19)。文字行領域を特定すると、プロセッサ11は、文字行リストに文字行領域を格納する(S20)。文字行リストに文字行領域を格納すると、プロセッサ11は、S16に戻る。
【0068】
文字行領域の特定を完了したと判定すると(S16、YES)、プロセッサ11は、文字行リストを出力する(S21)。文字行リストを出力すると、プロセッサ11は、動作を終了する。
【0069】
次に、プロセッサ11が上端線を探索する動作例(S17)について説明する。
図11は、プロセッサ11が上端線を探索する動作例(S17)について説明するためのフローチャートである。
【0070】
まず、プロセッサ11は、中腹領域を取得する(S31)。中腹領域を取得すると、プロセッサ11は、Xに中腹領域の左端のX座標(Left)を代入する(S32)。XにLeftを代入すると、プロセッサ11は、Xが中腹領域の右端のX座標(Right)よりも大きいか判定する(S33)。
【0071】
XがRight以下であると判定すると(S33、NO)、プロセッサ11は、座標Xにおける中腹領域の上端の座標(Yu)をYに代入する(S34)。YuをYに代入すると、プロセッサ11は、座標(X,Y)における上端領域スコアが所定の閾値以下であるか判定する(S35)。
【0072】
座標(X,Y)における上端領域スコアが所定の閾値以下でないと判定すると(S35、NO)、プロセッサ11は、YにY-1を代入する(S36)。YにY-1を代入すると、プロセッサ11は、S35に戻る。
【0073】
座標(X,Y)における上端領域スコアが所定の閾値以下であると判定すると(S35、YES)、プロセッサ11は、上端座標リストに座標(X,Y)を格納する(S37)。上端座標リストに座標(X,Y)を格納すると、プロセッサ11は、XにX+1を代入する(S38)。
【0074】
XにX+1を代入すると、プロセッサ11は、S33に戻る。
Xが中腹領域の右端のX座標(Right)よりも大きいと判定すると(S33、YES)、プロセッサ11は、動作を終了する。
【0075】
次に、プロセッサ11が下端線を探索する動作例(S18)について説明する。
図12は、プロセッサ11が下端線を探索する動作例(S18)について説明するためのフローチャートである。
【0076】
まず、プロセッサ11は、中腹領域を取得する(S41)。中腹領域を取得すると、プロセッサ11は、Xに中腹領域の左端のX座標(Left)を代入する(S42)。XにLeftを代入すると、プロセッサ11は、Xが中腹領域の右端のX座標(Right)よりも大きいか判定する(S43)。
【0077】
XがRight以下であると判定すると(S43、NO)、プロセッサ11は、座標Xにおける中腹領域の下端の座標(Yd)をYに代入する(S44)。YdをYに代入すると、プロセッサ11は、座標(X,Y)における下端領域スコアが所定の閾値以下であるか判定する(S45)。
【0078】
座標(X,Y)における下端領域スコアが所定の閾値以下でないと判定すると(S45、NO)、プロセッサ11は、YにY+1を代入する(S46)。YにY+1を代入すると、プロセッサ11は、S45に戻る。
【0079】
座標(X,Y)における下端領域スコアが所定の閾値以下であると判定すると(S45、YES)、プロセッサ11は、下端座標リストに座標(X,Y)を格納する(S47)。下端座標リストに座標(X,Y)を格納すると、プロセッサ11は、XにX+1を代入する(S48)。
【0080】
XにX+1を代入すると、プロセッサ11は、S43に戻る。
Xが中腹領域の右端のX座標(Right)よりも大きいと判定すると(S43、YES)、プロセッサ11は、動作を終了する。
【0081】
なお、プロセッサ11は、文字行リストが格納する文字行領域に基づいて文字の認識処理を行ってもよい。また、プロセッサ11は、文字行リストを外部装置に送信してもよい。
【0082】
また、プロセッサ11は、さらに下端領域スコアに基づいて上端線を探索してもよい。たとえば、プロセッサ11は、座標を上部に進めながら、下端領域スコアが上端領域スコアを上回る座標を上端線の座標として特定してもよい。また、プロセッサ11は、座標を上部に進めながら、上端領域スコアが所定の閾値以下となる場合又は下端領域スコアが上端領域スコアを上回る場合、座標を上端線の座標として特定してもよい。
【0083】
また、プロセッサ11は、さらに上端領域スコアに基づいて下端線を探索してもよい。たとえば、プロセッサ11は、座標を下部に進めながら、上端領域スコアが下端領域スコアを上回る座標を下端線の座標として特定してもよい。また、プロセッサ11は、座標を下部に進めながら、下端領域スコアが所定の閾値以下となる場合又は上端領域スコアが下端領域スコアを上回る場合、座標を下端線の座標として特定してもよい。
【0084】
また、プロセッサ11は、上端線を探索する際に、座標を上部に進めながら各座標の上端領域スコアを算出してもよい。
【0085】
また、プロセッサ11は、下端線を探索する際に、座標を下部に進めながら各座標の下端領域スコアを算出してもよい。
【0086】
また、プロセッサ11は、中心線の座標から上端線を探索してもよい。たとえば、プロセッサ11は、中心線のY座標から上部に座標を進めて、上端線を探索する。
【0087】
また、プロセッサ11は、中心線の座標から下端線を探索してもよい。たとえば、プロセッサ11は、中心線のY座標から下部に座標を進めて、下端線を探索する。
【0088】
また、プロセッサ11は、文字行領域以外の領域を特定するものであってもよい。プロセッサ11が特定する対象は、特定の構成に限定されるものではない。
【0089】
次に、情報処理装置10の変形例について説明する。
情報処理装置10は、中腹領域から3以上の方向に境界を探索する。
【0090】
図13は、情報処理装置10のプロセッサ11が取得する撮影画像の例を示す。
図13が示すように、撮影画像は、認識する対象として対象領域71を含む。
【0091】
対象領域71は、所定の対象物が表示される領域である。たとえば、対象領域71は、所定の人、動物又は物品が表示される領域である。対象領域71は、任意の形状を有する。対象領域71に表示される対象物及び対象領域71の形状は、特定の構成に限定されるものではない。
【0092】
次に、プロセッサ11の動作例について説明する。
図14は、プロセッサ11の動作例を説明するための図である。
図14が示すように、プロセッサ11は、中腹領域72から8方向に境界を探索する。
【0093】
まず、プロセッサ11は、各画素において中腹領域スコアを算出する。ここでは、中腹領域は、対象領域の内部に形成され対象領域の境界に接しない領域である。たとえば、中腹領域は、対象領域の中心部に所定の半径で形成される円型の領域である。
【0094】
また、プロセッサ11は、各画素において、各方向の端領域スコアを算出する。端領域は、対象領域内において所定の方向に形成される領域である。端領域スコアは、画素が端領域であることに関連するスコアである。
【0095】
ここでは、プロセッサ11は、各画素において、0度方向、45度方向、90度方向、135度方向、180度方向、225度方向、270度方向及び315度方向の端領域スコアを算出する。
【0096】
また、プロセッサ11は、中腹領域スコアに基づいて中腹領域を特定する。プロセッサ11が中腹領域を特定する方法は、前述の通りである。
【0097】
図14が示す例では、プロセッサ11は、中腹領域72を特定する。
また、プロセッサ11は、中腹領域72及び各端領域スコアに基づいて、各方向の端領域の境界を探索する。
【0098】
プロセッサ11は、所定の方向における中腹領域72の端から当該方向に向って当該方向の端領域の境界を探索する。たとえば、プロセッサ11は、当該方向の端領域スコアが所定の閾値以下となる点を端領域の境界の一点(境界点)として特定する。同様に、プロセッサ11は、各方向において、境界点を探索する。
【0099】
図15は、プロセッサ11が探索した境界点を示す。
図15が示すように、プロセッサ11は、境界点81乃至境界点88を探索する。
【0100】
境界点81乃至境界点88は、プロセッサ11が0度方向、45度方向、90度方向、135度方向、180度方向、225度方向、270度方向及び315度方向にそれぞれ探索して得られた境界点である。
【0101】
プロセッサ11は、探索した境界点に基づいて対象物が表示される対象領域を特定する。たとえば、プロセッサ11は、探索した境界点を線(たとえば、直線)で結んで形成される領域を検出対象が表示される対象領域として特定する。
【0102】
図15が示す例では、プロセッサ11は、検出対象が表示される対象領域として、領域73を特定する。
領域73は、境界点81乃至境界点88を直線で結んで形成される。
【0103】
なお、プロセッサ11は、境界点81乃至境界点88を曲線で結んで形成される領域を検出対象が表示される対象領域として特定してもよい。プロセッサ11が境界点から検出対象が表示される対象領域を特定する方法は、特定の方法に限定されるものではない。
【0104】
また、プロセッサ11は、所定の方向の境界点として複数の境界点を探索してもよい。たとえば、プロセッサ11は、所定の幅で所定の方向に探索を行い複数の境界点を探索してもよい。
【0105】
また、プロセッサ11は、3D空間において所定の領域を特定するものであってもよい。たとえば、プロセッサ11は、3D空間において中腹領域を特定し中腹領域から複数の方向に境界線(又は、境界点)を探索してもよい。
【0106】
以上のように構成された情報処理装置は、1行の文字列から構成される文字行の中腹領域を特定する。情報処理装置は、中腹領域に基づいて上端領域の上端を探索する。また、情報処理装置は、中腹領域に基づいて上端領域の下端を探索する。情報処理装置は、探索した上端及び下端に基づいて文字行の領域を特定する。その結果、情報処理装置は、文字行が傾いている又は曲がっている場合などにおいても適切に文字行の領域を特定することができる。
【0107】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
画像を取得するインターフェースと、
対象領域の中腹領域を特定し、
前記画像を構成する画素が前記対象領域の第1の端領域であることに関連する第1の端領域スコアを算出し、
前記画素が前記対象領域の第2の端領域であることに関連する第2の端領域スコアを算出し、
前記中腹領域及び前記第1の端領域スコアに基づいて前記第1の端領域の第1の境界を特定し、
前記中腹領域及び前記第2の端領域スコアに基づいて前記第2の端領域の第2の境界を特定し、
前記第1の境界及び前記第2の境界に基づいて前記対象領域を特定する、
プロセッサと、
を備える情報処理装置。
[C2]
前記プロセッサは、
前記中腹領域から第1の方向に沿って画素ごとに前記第1の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第1の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第1の境界を特定し、
前記中腹領域から前記第1の方向と異なる第2の方向に沿って画素ごとに前記第2の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第2の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第2の境界を特定する、
C1に記載の情報処理装置。
[C3]
前記プロセッサは、
前記中腹領域における前記第1の方向の端から前記第1の方向に沿って画素ごとに前記第1の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第1の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第1の境界を特定し、
前記中腹領域における前記第2の方向の端から前記第2の方向に沿って画素ごとに前記第2の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第2の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第2の境界を特定する、
C2に記載の情報処理装置。
[C4]
前記プロセッサは、
前記中腹領域における中心線から前記第1の方向に沿って画素ごとに前記第1の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第1の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第1の境界を特定し、
前記中心線から前記第2の方向に沿って画素ごとに前記第2の端領域スコアが所定の閾値以下であるか否かを順に判定し、前記第2の端領域スコアが所定の閾値以下である画素の座標に基づいて前記第2の境界を特定する、
C2に記載の情報処理装置。
[C5]
前記第2の方向は、前記第1の方向と逆方向である、
C2乃至4の何れか1項に記載の情報処理装置。
[C6]
前記第1の端領域は、前記中心線よりも上部に形成される上端領域であり、
前記第2の端領域は、前記中心線よりも下部に形成される下端領域である、
C4に記載の情報処理装置。
[C7]
前記対象領域は、1行の文字列から構成される文字行を表示する領域である、
C1乃至6の何れか1項に記載の情報処理装置。
[C8]
前記プロセッサは、
前記画素が前記中腹領域であることに関連する中腹領域スコアを算出し、
前記中腹領域スコアに基づいて前記中腹領域を特定する、
C1乃至7の何れか1項に記載の情報処理装置。
[C9]
前記プロセッサは、深層学習によって得られたモデルに基づいて前記第1の端領域スコア及び前記第2の端領域スコアを算出する、
C1乃至8の何れか1項に記載の情報処理装置。
[C10]
プロセッサによって実行されるプログラムであって、
前記プロセッサに、
画像を取得させ、
対象領域の中腹領域を特定させ、
前記画像を構成する画素が前記対象領域の第1の端領域であることに関連する第1の端領域スコアを算出させ、
前記画素が前記対象領域の第2の端領域であることに関連する第2の端領域スコアを算出させ、
前記中腹領域及び前記第1の端領域スコアに基づいて前記第1の端領域の第1の境界を特定させ、
前記中腹領域及び前記第2の端領域スコアに基づいて前記第2の端領域の第2の境界を特定させ、
前記第1の境界及び前記第2の境界に基づいて前記対象領域を特定させる、
プログラム。
【符号の説明】
【0108】
10…情報処理装置、11…プロセッサ、12…ROM、13…RAM、14…NVM、15…インターフェース、16…操作部、17…表示部、20…文字行、21…中心線、22…中腹領域、23…上端領域、24…下端領域、30…文字列、32…中腹領域、40…文字列、42…中腹領域、50…文字列、52…中腹領域、62…中腹領域、65…上端線、66…下端線、67…文字行領域、71…対象領域、72…中腹領域、73…領域、81乃至88…境界点。