(58)【調査した分野】(Int.Cl.,DB名)
前記単色化処理における前記文字部の判定では、前記取得された画像に対して二値化処理を行うことにより得られる2値画像に基づいて前景領域を特定し、当該特定した前景領域の属性判定を行うことによって、前記第二の除去処理を実行した後の画像における前記文字部を判定する、ことを特徴とする請求項1または2に記載の画像処理装置。
前記予め用意された複数の異なる置換色は、ホワイトボードに描かれるマーカーに対応する色であることを特徴とする請求項1乃至3の何れか1項に記載の画像処理装置。
【発明を実施するための形態】
【0011】
(実施例1)
以下に、本発明を実施するための形態について図面を用いて説明する。
【0012】
<携帯端末の構成>
図1に本実施例で利用する携帯端末(画像処理装置、情報処理装置)101の外観を示す。
図1(a)は、携帯端末101を表側の外観図であり、表側には、タッチパネルディスプレイ102、操作ボタン103が含まれる。
図1(b)は、携帯端末101の裏側の外観図であり、裏側には、カメラ104が配置されている。また、カメラ104には図示しないオートフォーカス機構が搭載されており、これにより焦点距離や被写体距離を測定することもできる。
【0013】
なお、本実施例は撮影機能(カメラ機能)を備える携帯端末ならば利用が可能である。例えば、撮影機能(カメラ機能)を有するスマートフォン(携帯電話)やタブレット端末やパソコン(PC)のみならず、タッチパネルディスプレイを有するデジタルカメラでも構わない。また、有線または無線でカメラと接続されたPC等でも実施可能である。また、カメラ等で撮影された画像が保存されている保存装置(メモリカード等)から、携帯端末やPC等が画像を読み込んで本実施例の処理を行うことも可能である。
【0014】
図2に携帯端末101のハードウェア構成を示す。但し、この構成図は本実施例を実施するための構成の一例であり、この構成に限るものではない。
【0015】
図2において、CPU201、RAM202、ROM203がデータバス209を介してプログラムやデータを送受信する。データバス209には、記憶部204、データ送受信部205、撮像部206、表示部207、操作部208が接続される。さらに、CPU201、RAM202、ROM203も併せて、互いにプログラムやデータの送受信を行う。
【0016】
記憶部204は、フラッシュメモリであり、画像や後述する各フローチャートを実行するための各種プログラムを格納する。
【0017】
データ送受信部205は、無線LANコントローラを有し、外部サーバや外部プリンタなどの外部装置とのデータの送受信を実現する。
【0018】
撮像部206は、カメラ104であり、ホワイトボードの撮影を行って撮影画像を取得する。取得された撮影画像のデータには、携帯端末のメーカー名やモデル名・画像解像度・絞り(F値)・焦点距離などのヘッダー情報が付与され、後述のように各部に送信される。
【0019】
表示部207は、タッチパネルディスプレイ102のディスプレイであり、カメラ機能を用いてホワイトボードを撮影する際にライブビュー映像が表示される。
【0020】
操作部208は、タッチパネルディスプレイ102のタッチパネルや操作ボタン103であり、ユーザからの操作を受け付けて各部へ該操作の情報を送信する。
【0021】
なお、CPU201がROM203または記憶部204で保持されているコンピュータプログラムを実行することで、これらの携帯端末101内の構成要素の制御を行う。
【0022】
<フローチャートを用いた本実施例の詳細説明>
図3は、本実施例における携帯端末101が実行する処理手順を説明するフローチャートである。
図4は、被写体としてホワイトボード面を撮影した場合を例にして、撮影画像からホワイトボード面の領域を切り出す処理の流れを示した図である。なお、携帯端末101のCPU201(コンピュータ)が、ROM203に格納されている処理プログラムをRAM202にロードして実行することにより、
図3の各ステップの処理を実行する処理部として機能する。また、データ送受信部205を介して外部から取得した処理プログラムを記憶部204に格納し、RAM202にロードして実行することで機能してもよい。本実施例では、ユーザが携帯端末101を用いて紙面やホワイトボード面を被写体として撮影し、撮影画像内から被写体の領域だけを切り出して補正し、ユーザが指定した出力先に補正後の画像を出力するアプリケーションを想定している。出力先の指定はユーザが事前に行ってもよいし、後述のS308で終了指示を受け付けた後にユーザがしているようにしてもよい。
【0023】
ステップS301において、CPU201は、ユーザによって選択または撮影された画像を入力画像として取得する。入力画像が選択される場合には、CPU201は、記憶部204やメモリカード等に格納されている画像の中から、操作部208によってユーザが選択した画像を、データバス209を経由して取得する。また、入力画像が撮影される場合には、CPU201は、操作部208によってユーザが撮影指示を行って撮像部206がキャプチャーした画像を、データバス209を経由して取得する。
図4(a)は、入力画像であり、画像内にホワイトボード面401を含む。
【0024】
ステップS302において、CPU201は、ステップS301で取得した入力画像から、ホワイトボード面を表す四辺形領域を特定する領域特定処理を実行する。領域特定処理は、ホワイトボード面の各辺の候補となる候補線分群(候補辺群)を検出し、その候補線分群の組み合わせで構成される四辺形を評価することで実現する。なお、候補線分群の検出と、四辺形の評価方法は公知の方法でよい。たとえば、候補線分群は、入力画像から検出されたエッジ情報を、極座標上に投票して直線を検出するHough変換アルゴリズムによって検出する。また、四辺形は、対辺の長さの比や内角の大きさ、アスペクト比などの幾何学的な情報に基づいて評価してもよいし、四辺形を構成する線分について、内側と外側の色味や分散を比較するなどの画像情報に基づいて評価してもよい。なお本実施例ではホワイトボード面の領域を特定するようにしているが、被写体が紙面の場合には紙面の領域を特定すればよい。
【0025】
ステップS303において、CPU201は、ステップS302で検出された四辺形領域を前記入力画像に重ねて表示し、当該表示された四辺形領域の形状変更(修正)をユーザから受け付ける領域指定処理を実行する。
図4(b)は、入力画像上に特定された四辺形領域を重ねて表示した画像である。402、403、404、405が特定された領域の辺を示しており、ユーザから辺の位置の指示を受け付けるための辺ハンドラである。また、406、407、408、409は特定された領域の頂点を示しており、ユーザから頂点の位置の指示を受け付けるための頂点ハンドラである。ユーザが辺ハンドラおよび頂点ハンドラを、選択して操作することで四辺形領域の形状変更を可能にする。
【0026】
ステップS304において、CPU201は、ステップS303で指定された四辺形領域にしたがって、入力画像のうち一部(この四辺形領域に含まれる画像)を抽出して矩形状の画像になるように歪みを補正する歪み補正処理(幾何補正処理)を実行する。歪み補正は、四辺形領域が台形以外の形状に歪んでいる場合も考慮し、射影変換を利用する。射影変換行列は、入力画像内の四辺形領域の頂点情報(頂点406、407、408、409)と、出力画像の四隅の座標情報(410、411、412、413)から公知の方法により算出することが可能である。なお、処理速度を優先する場合には、アフィン変換行列や単純な変倍率を変倍パラメータとして算出しても良い。歪み補正の結果画像を示したのが、
図4(c)である。
【0027】
ステップS305において、CPU201は、ステップS304で得られた歪み補正後の画像に対して、画像補正処理を実行する。画像補正処理の詳細については、
図5および
図6を用いて後述する。
【0028】
ステップS306において、CPU201は、ステップS305で得られた画像補正結果画像を表示部207に表示する。
【0029】
ステップS307において、CPU201は、操作部208によって、ユーザから画像補正モード指示(画像補正の種類を選択する指示)または終了指示(画像補正の結果を確定する指示)を受け付ける。
【0030】
ステップS308において、CPU201は、ステップS307で、画像補正モード指示を受け付けたか、終了指示を受け付けたか判断する。ステップS307で、画像補正モード指示を受け付けた場合には、ステップS305に処理を進め、再度、画像補正処理を実行する。ステップS307で、終了指示を受け付けた場合には、CPU201は、画像補正処理後の画像をユーザが指定した出力先(記憶部204の指定フォルダや指定された外部サーバや指定された外部プリンタなど)に出力して処理を終了する。画像を外部装置へ画像を出力する場合にはCPU201はデータ送受信部205を介して画像を出力する。
【0031】
<画像補正処理(S305)の詳細説明>
画像補正処理の詳細について、
図5を用いて説明する。本フローの処理対象である入力画像は、S305の歪み補正後の画像である。
【0032】
ステップS501において、CPU201は、画像補正モードを取得して判断する。このステップS501が
図3のステップS304の次に行われる場合には、CPU201は、予め設定されている画像補正モード(例えば第一の画像補正モード)を取得する。なお、この場合には、予め設定された画像補正モードではなく、このアプリケーションの直近の実行において実行された画像補正モードを取得してもよい。一方、このステップS501が
図3のステップS308の次に行われる場合には、CPU201は、ステップS307で受け付けた画像補正モードを取得する。取得した画像補正モードが、第一の画像補正モードであった場合には、ステップS502に処理を進める。また、取得した画像補正モードが、第二の画像補正モードであった場合には、ステップS504に処理を進める。
【0033】
ステップS502、S503に示す処理が、第一の画像補正モードにおける補正処理であり、ステップS504〜S506に示す処理が、第二の画像補正モードにおける補正処理である。
【0034】
ステップS502において、CPU201は、入力画像から照明ムラや影などの明るさのムラを取り除く影除去処理を実行する。影除去処理は、入力画像から照明ムラや影などの明るさムラを推定した影成分画像(入力画像面内の画素値補正情報)を生成し、入力画像と影成分画像との差分値に応じて入力画像を補正することで実現する。入力画像から影成分画像を生成するために、CPU201は、入力画像をブロック分割し、ブロックごとに輝度値(明るさ情報)を解析する。そしてCPU201は、各ブロックからブロック内で最大輝度値を持つ画素のR(赤)G(緑)B(青)それぞれの成分の画素値を代表画素値として算出する。本実施例では、入力画像を32×32個のブロックに分割する。このとき、ブロック内に下地領域(例えば紙原稿やホワイトボードの白い領域)が含まれている場合には、正しく影成分を取得できる。一方、写真や図などの大きいオブジェクトの影響でブロック内に下地領域が無い場合には、正しい影成分を取得することが困難である。そこで、周辺ブロックと比較して極端に暗いブロックについては、周辺ブロックの代表値を利用して補正する。例えば、隣接ブロック内の画素の最大輝度値から自ブロック内の画素の最大輝度値を引いた値が所定値以上ある場合に、CPU201は、その隣接ブロックの代表画素値を自ブロックの代表画素値とするように修正する。このようにして入力画像の各ブロックにつき、1つの代表画素値が求められる。こうして算出した各ブロックの代表画素値のみで構成される画像は、入力画像をブロック分割数で規定される画素数を持つ画像に縮小したものである。本実施例では、32×32個の各ブロックの代表画素値を有する32×32画素の画像が得られる。そこでCPU201は、この縮小画像を入力画像と同画素数となるように拡大処理することで、影成分画像を生成する。そして、CPU201は、影成分画像と入力画像とに基づいて、入力画像の画素値を補正する。例えば、CPU201は、入力画像の画素値を影成分画像の画素値で割った値に白色を示す画素値(輝度値)255を掛け合わせ、その結果を補正後の画素値とする。またあるいはCPU201は、影成分画像の画素値と入力画像の画素値との差分に基づいて求まる値で、入力画像の画素値を割って、その結果の値に255を掛けた値を補正後の画素値としてもよい。以上のとおり、影成分画像(画像面内の画素値補正情報)は、入力画像の面内の明るさ情報を解析することで得られ、この影成分画像に基づいて入力画像の各画素値が補正される。以上の内容は、特許文献1にて開示されている。
【0035】
ステップS503において、CPU201は、ステップS502で得られた影除去後の画像に対して、先鋭化処理を実行する。なお、先鋭化処理は公知の手法でよい。例えば、下記のような係数(3×3行列)で実現される8近傍フィルタを、影除去後の画像の各画素に対して適用する。
【0037】
以上のように、本ステップにおいて得られる画像が、第一の補正モードの補正結果である。
【0038】
ステップS504において、CPU201は、入力画像から照明ムラや影などの明るさのムラを取り除く影除去処理を実行する。なお、本ステップにおける影除去処理は、ステップS502と同様の処理でもよいが、本実施例においては、画像をより白色にしやすくする影除去処理を実施する。そこで本実施例では、ステップS502と同様の影除去処理手順において、入力画像をブロック分割する際のブロックサイズを、ステップS502と比べて小さくし、128×128個のブロックに分割する。これにより、急激に濃度が変わるような下地領域の影成分を推定しやすくする。さらに、上向きに凸型のトーンカーブを利用したトーンカーブ補正処理を施すことで、ステップS502で得られる影除去画像と比べて、影除去後の下地領域の輝度がより明るくなった影除去画像を取得する。
【0039】
ステップS505において、CPU201は、入力画像から文字部などの前景領域を抽出する前景抽出処理を実行する。前景抽出処理は、入力画像をグレースケール変換した上で、入力画像の各画素に対する二値化閾値の配列を画像で表現した閾値マップ画像を利用した二値化処理によって実現する。閾値マップ画像には、ステップS504の影除去処理と同様に、入力画像から推定される影成分画像を利用する。ステップS504の影成分画像との違いは、影成分画像がRGB表現ではなく輝度表現であることである。なお、閾値マップの作成方法は、上記の方法に限るものではなく、公知の方法でよい。たとえば、大津の手法を用いて求めた画像全面に対する一律の閾値を閾値マップとしてもよい。説明のためにグレースケール画像、閾値マップともに各画素8bitで表される画素値で構成され、画素値0が黒、画素値255が白であるとする。また出力される2値画像は各画素1bitで表される画素値で構成され、画素値0は白、画素値1は黒とする。座標(x、y)におけるグレースケール画像の画素値をg(x、y)、閾値マップの画素値をt(x、y)、出力される2値画像の画素値をb(x、y)で表す。同座標でのグレースケール画像の画素値g(x、y)と閾値マップの画素値t(x、y)の大小を比較することで、下記のように2値画像の画素値b(x、y)が0であるか1であるかを決定して2値画像を生成する。
【0040】
g(x、y)≧t(x、y)のとき、b(x、y)=0(白画素)
g(x、y)<t(x、y)のとき、b(x、y)=1(黒画素)
こうして得られた2値画像の黒画素によって表される領域が、文字部や写真部などを表す前景領域である。
【0041】
ステップS506において、CPU201は、ステップS505で抽出された前景のうち、文字部に対して単色化を行う前景補正処理を実行する。まずCPU201は、S506で得られた2値画像を利用して、S504の影除去処理後の画像中の文字部を特定する。具体的には前景領域として抽出された黒画素についてラベリング処理を行うことで、CPU201は、隣接する黒画素群を、同じラベルを持つ1領域(ラベリング領域)として抽出する。次に、CPU201は、各領域が文字部であるか、非文字部(例えば写真部)であるかという属性判定を行う。
【0042】
属性判定は、公知の手法でよい。例えば、CPU201は、ラベリング領域に対応する、S504の影除去処理後の画像の領域内の画素のYUV色空間での色分散(例えばU値の分散値およびV値の分散値)を算出する。そしてCPU201は、その色分散値が閾値未満であれば(所定の色条件を満たせば)、そのラベリング領域(および対応する影除去処理後の画像部分)は文字部であると判定する。すなわち、ここでCPU201は、影除去処理後の画像中の、類似色が支配的な画像部分(類似色を比較的多く持つ画像部分)を特定している。また別の属性判定の方法として例えばCPU201は、ラベリング領域に対応する、影除去処理後画像の領域内の画素について、類似する色差値(差が閾値範囲内のU値およびV値)を持つ画素の数をカウントする。そしてCPU201はその画素数の、ラベリング領域内の全画素数に対する割合が閾値を超える(所定の色条件を満たす)場合にそのラベリング領域は文字部であると判定してもよい。
【0043】
そしてCPU201は、属性判定において文字部として判定されたラベリング領域を単色化する。すなわちここでCPU201は、影除去処理後の画像のうちの、類似色が支配的な部分を、複数の予め用意された置換色(所定の複数の異なる色)のうち1色で置き換える処理(単色化処理)を行う。本実施例では、複数の所定の色として、ホワイトボードマーカーの代表的な色である黒(R=G=B=0)、赤(R=255、G=B=0)、青(B=255、R=G=0、)、緑(G=255、R=B=0)の4色を用意する。なおこれらの4色に該当しない類似色領域についてはその領域の平均色で、その領域が単色化される。この置換色の決定には、各ラベリング領域に対応する影除去処理後の画像部分のYUV色空間での平均色を利用する。具体的には、予めYUV色空間における黒、赤、青、緑の範囲を定めておき、CPU201は、各ラベリング領域に対応する影除去処理後の画像部分の平均色が、規定マーカー色の範囲に該当にすれば、4色のいずれか1色を置換色とする。一方、規定マーカー色の4色の範囲に該当しなければ、CPU201は、その画像部分の平均色を置換色とする。CPU201は、こうして決定した置換色で、ラベリング領域を単色化し、単色化されたラベリング領域を、ステップS504で得られる影除去処理後の画像に上書きする。つまり影除去処理後の画像のうち、ラベリング領域に対応する画像部分が単色化される。このようにすることで、文字部の色の区別がつきやすくなるとともに、本来同じ色で表現されている複数の文字それぞれの色を1色で統一することができる。なお、CPU201は、文字部(単色化された部分)の輪郭部分についてのみスムージング処理を行うことで、第二の補正モードの補正結果として、影除去がされた上に文字部のみ単色化された画像を得ることができる。
【0044】
第一の画像補正モードと第二の画像補正モードによる画像補正処理の効果について、
図6を用いて説明する。
【0045】
601および602は、
図5のフローにおける入力画像(
図3のステップS304で得られる歪み補正後画像)である。601は、被写体として帳票原稿を撮影した例を示しており、グラデーションで表現される企業ロゴ607や、白ではない下地領域608および609を含んでいる。602は、被写体としてホワイトボードを撮影した例を示しており、黒いマーカーで描かれた文字部616、赤いマーカーで描かれた文字部617、青いマーカーで描かれた文字部618を含んでいる。
【0046】
603および604は、
図5のステップS503の処理結果として得られる第一の画像補正モードの出力画像であり、それぞれ601および602に対する出力結果を表している。また、605および606は、
図5のステップS506の処理結果として得られる第二の画像補正モードの出力画像であり、それぞれ601および602に対する出力結果を表している。
【0047】
第一の画像補正モードでは、急激な濃度差を含む画像においては、622のように白に補正することができない下地領域が現れることがあるが、白ではない下地領域611および612の輝度を残しつつ、画像内に含まれる照明ムラを除去することができる。また、文字の単色化を行わないため、グラデーションで表現される企業ロゴ610の原稿との類似性および視認性を保持した補正処理を実施することができる。
【0048】
第二の画像補正モードでは、文字部を前景抽出して単色化を行うため、613に示ようにグラデーションで表現される領域を単色化してしまうので、画像603中のロゴ610に比べて原稿中のロゴ607との見た目が相違する。一方、それぞれ異なる色のマーカーで描かれた文字部623、624、625のそれぞれが、対応する1色に統一されるため、各文字部の視認性は619、620、621と比べて向上させることができる。また、下地領域の輝度を明るくするように影除去処理を行うことで、白ではない下地領域614、615まで白に補正してしまうことがあるものの、626に示すように、下地部分の急激な濃度差を含む画像においても適切に下地を補正することができる。
【0049】
以上、本実施例によれば、撮影画像の補正において、ユーザの指定に応じて前景部を単色化するかしないかを切り替えることができる。そのため、単色化された画像の出力先への出力も、単色化されない画像の出力先への出力も可能となる。
【0050】
なお、本実施例では、ユーザの指定に応じてどちらの画像(単色化された画像か単色化されなかった画像)を出力先に出力するのかが決まるが、どちらの画像も出力先に出力するようにしてもよい。この場合にはユーザは必要のないいずれかの画像を後で削除すればよい。重要なのは、本実施例の携帯端末がどちらの画像も出力先に出力が可能であるということである。
【0051】
(実施例2)
実施例1では、前景単色化を行う(ON)か行わない(OFF)かを切り替えていた。本実施例では、前景単色化のON/OFFを切り替える処理に加え、単色化をONにする場合に、前景領域の抽出方法を切り替える処理を実施する。以下では、実施例1と差分がある部分についてのみ説明する。
【0052】
<実施例2における画像補正処理(S305)の詳細説明>
図7は、本実施例において、
図3のステップS305に示す画像補正処理として実行される処理手順を示すフローチャートである。
【0053】
ステップS701において、CPU201は、画像補正モードを取得して判断する。取得した画像補正モードが、第一の画像補正モードであった場合には、ステップS702に処理を進める。また、取得した画像補正モードが、第二の画像補正モードあるいは第三の補正モードであった場合には、ステップS704に処理を進める。
【0054】
ステップS702乃至ステップS704は、
図5のステップS502乃至ステップS504と同様の処理である。
【0055】
ステップS705において、CPU201は、画像補正モードを取得して判断する。取得した画像補正モードが、第二の画像補正モードであった場合には、ステップS706に処理を進める。また、取得した画像補正モードが、第三の補正モードであった場合には、ステップS707に処理を進める。ここでは、ユーザによる前景単色化に関する指定が第1の指定であるのか第2の指定であるのかを判定している。
【0056】
ステップS706は、
図5のステップS505と同様の処理である。
【0057】
ステップS707において、入力画像(歪み補正後の画像)から文字部などの前景領域を抽出する前景抽出処理を実行する。このステップS707での前景抽出処理とステップS706(ステップS505)での前景抽出処理との違いは、用いられる閾値マップである。このステップS707では、閾値マップの画素と近い値を持つかすれ文字を前景として抽出するために、ステップS706で用いられる閾値マップの各画素値を、一律で5ずつ上げたものを閾値マップとして利用する。これにより、ステップS706よりも、多くの領域を前景として抽出することができる。例えば、S706では抽出されないような、文字の掠れた部分なども前景として抽出される。なお、本ステップにおいて利用する閾値マップは、ステップS706の前景抽出結果と異なる前景抽出結果を得られれば良く、必ずしも閾値マップの画素値の一律で5ずつ上げる必要はない。ステップS706の前景抽出で利用する閾値マップの閾値を一律で下げてもよいし、ステップS706とは別のアルゴリズムで求めた閾値マップを利用してもよい。すなわち、ステップS706およびS707を備えることで本実施例の携帯装置は、前景抽出レベルを可変にする構成を有すればよい。
【0058】
ステップS708は、
図5のステップS506と同様の処理である。
【0059】
なお、ステップS705乃至ステップS707で実現される前景抽出に利用する閾値マップの変更は、操作部208を通じてユーザからの指示によって変更されるものであれば、モードによる切り替えでなくてもよい。例えば、スライダーバーを利用して、基準値からの閾値の調整量の指定を受け付け、その指定量に応じて閾値マップを調整して前景抽出を行ってもよい。
【0060】
本実施例における第三の画像補正モードによる画像補正処理の効果について、
図8を用いて説明する。
【0061】
801は、
図3のステップS304で得られる歪み補正後画像であり、画像補正処理の入力画像である。被写体としてホワイトボードを撮影した例を示しており、かすれたマーカーで書かれた文字部805を含んでいる。802は、
図7のステップS703の処理結果として得られる第一の画像補正モードの出力画像である。803、804はそれぞれ、
図7のステップS705にて第二の画像補正モードと第三の画像補正モードを取得した場合の、ステップS708の処理結果として得られる出力画像である。
【0062】
806に示すように、第一の画像補正モードでは、下地領域と輝度の近いかすれた文字部は、影除去処理によって色が薄くなってしまう。また、807に示すように、第二の画像補正モードでは、二値化による前景抽出に失敗してしまう場合がある。しかしながら、第三の画像補正モードでは、前景抽出に利用する閾値マップの画素値を一律で上げることで、下地領域と輝度差の小さいかすれ文字部についても、前景として抽出することができる。
【0063】
以上、実施例2によれば、前景単色化のON/OFFを切り替えるだけでなく、ユーザの指定に応じて、前景抽出の二値化閾値パラメータを変更することによって、単色化する対象となる前景抽出の結果を変更可能になる。これにより、かすれたペンやマーカーで描かれた文字などの下地領域と輝度差の小さい前景についても、ユーザに視認性を向上させた画像を提供可能になる。
【0064】
(その他の実施例)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(コンピュータプログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。