以下、本発明の実施形態に係る撮影装置を図面を参照して説明する。
本実施形態に係る撮影の構成を図1に示す。
撮影装置は、書画カメラ1と、プロジェクタ2と、を備える。書画カメラ1とプロジェクタ2とは、ビデオ映像ケーブル31を介して接続される。
書画カメラ1は、撮影対象を撮影するためのカメラシステムであり、カメラ部11と、支柱12と、台座13と、を備える。カメラ部11は、原稿4を撮影するためのものである。カメラ部11には、デジタルカメラが用いられる。支柱12は、カメラ部11を取り付けるためのものである。台座13は、支柱12を支えるためのものである。
この書画カメラ1は、各辺の長さが既知の基準長方形の取得が可能な被写体を撮影し、被写体の基準長方形とこの被写体の画像の長方形とを比較して射影補正パラメータを取得することにより、原稿画像を正面補正画像に正しく補正する機能を有している。この機能を実現するための構成については、後述する。
また、この書画カメラ1は、図2に示すように、画像データ生成部21と、データ処理部22と、からなる。画像データ生成部21は、原稿4を撮影して得られた原稿画像のデータを取り込むためのものである。
データ処理部22は、画像データ生成部21から、撮影対象の画像データを取得して、プロジェクタ2に出力するための画像の処理を行うものである。
尚、画像データ生成部21とデータ処理部22とは、図1に示すカメラ部11に備えられてもよいし、画像データ生成部21、データ処理部22が、カメラ部11に備えられてもよい。
画像データ生成部21は、光学レンズ装置101と、イメージセンサ102と、から構成される。
光学レンズ装置101は、原稿4を撮影するために、光を集光するレンズなどで構成されたものであり、焦点、露出、ホワイトバランス等のカメラ設定パラメータを調整するための周辺回路を備える。
イメージセンサ102は、光学レンズ装置101が光を集光することによって結像した画像を、デジタル化した画像データとして取り込むためのものであり、CCD等によって構成される。
また、画像データ生成部21は、高解像度画像撮影と低解像度画像撮影が可能なものである。低解像度画像撮影は、例えば、画像解像度がXGA(1024×768ドット)程度での撮影である。低解像度画像撮影では、解像度は低いものの、画像を30fps(フレーム/秒)の速さで動画撮影と画像読み出しが可能になる。
一方、高解像度画像撮影は、撮影可能な最大の画素数、例えば400万画素(2304×1728)のカメラである場合はその400万画素での画像撮影である。高解像度画像撮影では、画像データの読み取りは遅くなるものの、低解像度画像撮影と比較して解像度の高い画像が得られる。
データ処理部22は、メモリ201と、ビデオ出力装置202と、画像処理装置203と、操作部204と、支柱傾き変化検出部205と、プログラムコード記憶装置206と、CPU207と、から構成される。
メモリ201は、画像データ、各種フラグの値、閾値等を記憶するものである。メモリ201は、これらのデータが書き込まれる領域として、図3に示すように、センサ画像記憶領域201a1,201a2と、処理画像記憶領域201bと、表示画像記憶領域201cと、作業データ記憶領域201dと、閾値記憶領域201eと、を有する。
センサ画像記憶領域201a1,201a2は、イメージセンサ102が取り込んだ画像データを、撮影する毎に交互に一時記憶するための領域である。イメージセンサ102は、画像データをセンサ画像記憶領域201a1,201a2に交互に記憶し、画像処理装置203、CPU207は、一時記憶された画像データをセンサ画像記憶領域201a1,201a2から交互に読み出す。
処理画像記憶領域201bは、画像処理装置203が処理に必要な画像データを書き込むための領域である。作業データ記憶領域201dは、座標データ、各種フラグを記憶するための領域である。閾値記憶領域201eは、各種判定に用いる閾値を記憶するための領域である。
図2に戻り、ビデオ出力装置202は、メモリ201の表示画像記憶領域201cに記憶された画像データに基づいてRGB信号を生成するものである。ビデオ出力装置202は、生成したRGB信号をプロジェクタ2に出力する。
画像処理装置203は、CPU207に制御されて、メモリ201のセンサ画像記憶領域201a1,201a2に一時記憶された画像データに対して画像処理を行うためのものである。画像処理装置203は、上記書画カメラ1の機能を実現するため、以下のような画像処理を行う。
単機能画像処理
(1)縮小画像の作成処理
(2)2値エッジ画像の作成処理
(3)矩形取得処理
(4)画像の動き検出処理
(5)画像の圧縮処理
(6)画像変換処理
複合機能処理
(7)射影補正パラメータ取得処理
(8)回転補正パラメータ取得処理
(9)動画投影処理
(10)静止画投影処理
(1)〜(6)の処理は、単機能の画像処理であり、(7)〜(10)の処理は、(1)〜(6)のうちのいくつかの画像処理機能を組み合わせた複合機能処理である。この(1)〜(10)までの処理を具体的に説明する。
(1)縮小画像の作成処理
縮小画像の作成処理は、元画像からいくつかの近傍の画素(画素値)を平均化して縮小画像の画素を求め、画素数を減らした(輝度)縮小画像を作成する処理である。この処理は、画像の動き検出処理、射影パラメータ取得処理、回転補正パラメータ取得処理において実行される処理である。
画像処理装置203は、元画像からいくつかの近傍の画素の平均化を行うことによって画素数を減らした縮小画像を作成する。
元画像のサイズが(Xbmax,Ybmax)で縮小画像のサイズが(Xsmax,Ysmax)である場合、縮小画像の画素q(k,l) (1≦k≦Xsmax, 1≦l≦Ysmax)は、次の数4に従い、元画像p(x,y)の周辺近傍9点の平均で求められる。尚、縮小画像q(k,l)は、縮小画像の座標(k,l)における画素の画素値を表す。
例えば、元画像がXGA(1024×768)の画像であり、縮小画像が17万画素の画像(480×360)であるときは、Xbmax=1024,Ybmax=768,Xsmax=480,Ysmax=360として縮小画像q(k,l)が計算される。
(2)2値エッジ画像の作成処理
2値エッジ画像の作成処理は、生成した縮小画像から、エッジを検出し、縮小画像の輪郭によって形成されるエッジ画像を作成する処理である。例えば、撮影画像が図4(a)に示すような撮影画像11aの場合、画像処理装置203は、2値エッジ画像の作成処理を実行することにより、図4(b)に示すような2値エッジ画像11bを取得する。この処理は、射影パラメータ処理、矩形取得処理において実行される処理である。
エッジ画像を作成するには、例えば、Robertsフィルタと呼ばれるエッジ検出用のフィルタを用いる。このRobertsフィルタとは、2つの4近傍画素の重み付けを行って2つのフィルタΔ1、Δ2を取得し、平均化することによって、画像のエッジを検出するフィルタである。
ある着目した座標(x,y)の画素の画素値f(x,y)にRobertsフィルタを適用すると、変換後の画素値g(x,y)は、次の数5によって表される。
画像処理装置203は、このようにして得られたエッジ画像を2値化する。画像処理装置203は、画素値g(x,y)を予め設定された閾値g_thと比較することにより、エッジ画像の2値化を行う。
閾値g_thは、固定値であってもよいし、可変閾値法等の方法によって求められた可変値であってもよく、メモリ201の閾値記憶領域201eに予め記憶される。画像処理装置203は、数5に基づいて得られたエッジ画像の画素値g(x,y)から、次の数6を用いて2値エッジ画像の座標(x,y)における画素値h(x,y)を求める。
(3)矩形取得処理
矩形取得処理は、撮影画像に含まれる矩形形状を取得する処理であり、回転補正パラメータ取得処理において、この処理を実行し、原稿画像の輪郭によって特定される矩形形状を取得する。
画像処理装置203は、マスキングを行うように指定されている場合、図4(c)に示すようなマスキング画像mを用いてマスキング処理を行う。尚、画像処理装置203は、このマスキング画像mを、後述する射影補正パラメータ取得処理において作成する。
マスキング処理を行う場合、画像処理装置203は、2値エッジ画像の作成処理において得られた2値画像とこのマスキング画像mとの論理積演算を行い、マスキング領域内の原稿画像の切り出しを行う。そして、画像処理装置203は、図4(d)に示すような2値画像11cを取得する。
一方、マスキングを行うような指定がない場合、画像処理装置203は、マスキングを行わずに、矩形形状を取得する。
画像処理装置203は、矩形形状を取得するため、2値エッジ画像の作成処理において生成した2値エッジ画像に対し、ハフ変換を行い、原稿画像の輪郭を形成する直線を検出する。
ハフ変換とは、図5(a)に示すようなX−Y平面上の直線を構成する点を、次の数7によって表される図5(b)に示すようなρ-θ平面上に投票して、ρ-θ平面上の投票数に変換する変換手法である。
具体的には 2値エッジ画像を走査し、0°≦θ<180°の範囲で、順次、エッジが検出された画素(x,y)を数7に代入し、各角度θにおける投票数ρの計算を行い、投票箱(ρ,θ)に投票する。角度θが180°までとしたのは、この範囲で全ての直線の検出が可能であって、180°≦θ<360°までの間は、0°≦θ<180°の範囲のρが負の値で一致するからである。
各点の座標(x、y)において角度θを0から180°まで変化させた場合、同一直線はρ-θ平面では一点で表される。このため、投票数ρの多いρ-θ座標を直線と判断することができる。この際、投票数ρは、直線上のピクセル数になるため、直線の長さとみなすことができる。したがって、投票数ρの極端に少ないρ-θ座標は、短い直線を表し、直線の候補から除外される。
原稿4又は台座13のような撮影対象の中心が画像の中心近辺に位置する場合、実際に撮影される撮影対象(四角形)の各辺は、上下左右に存在することになる。この場合、上辺下辺はθ=90°を中心に存在し、左右の辺は0°または180°を中心に存在することになる、この理由から、ρ-θ平面上の投票箱は0°≦θ<180°の範囲で作成するよりは、60°≦θ<120°、および、150°≦θ<210°の範囲で作成した方が効率的であり実用的である。
また、投票数ρの値が正の値か負の値かによって、辺の上下、または辺の左右を特定することが可能である。さて、このようにして作成された投票箱は数8によって表される。
従って、撮影対象の中心が画像の中心近辺に位置する場合、数8に示す範囲内で投票数ρを検索することによって、撮影対象の輪郭を構成する辺をより効率的に選択することが可能となる。
画像処理装置203は、投票数ρに対して予め閾値を設定し、数8に示す各辺の範囲内でこの閾値以上である直線(ρ、θ)を探し、各辺の候補リストを作成する。画像処理装置203は、その候補の中から、|ρ|が最大となる直線を、撮影対象の輪郭を構成する辺による直線として、この直線を取得する。
画像処理装置203は、このようにして得られた上辺、下辺、左辺、右辺のそれぞれの輪郭候補の有無を調べ、輪郭の直線情報(ρ、θ)からなる輪郭情報を作成して矩形取得処理を行う。
(4)画像の動き検出処理
画像の動き検出処理は、撮影された被写体の動きを検出する処理である。画像処理装置203は、この動きの検出を画像変化量MDに基づいて行う。この画像変化量MDは、新たに撮影した画像が前回撮影した時の画像と比較してどれぐらい変化したかを示す量である。画像処理装置203は、次の数9に基づいて、画像変化量MDを求める。
尚、全画素の総和を求めるには、計算量が多いので、画像処理装置203は、いくつかの画素を抜き出して画像変化量MDを求めるようにしてもよい。
画像処理装置203は、被写体の動きを検出するため、この画像変化量MDと予め設定された閾値MD_thとを比較する。閾値MD_thは、この判定を行うために予め設定されたものであり、メモリ201は、この閾値MD_thを閾値記憶領域201eに記憶する。
原稿4等を差し替えている場合、撮影画像は変化して、画像変化量MDは大きくなる。画像変化量MDが閾値MD_thを越えた場合、画像処理装置203は、撮影された被写体に動きがあったことを検出する。
一方、原稿4の載置が終了して原稿4の投影が行われようとしている場合、画像変化量MDは、原稿4等を差し替えている場合と比較して小さくなる。画像変化量MDが閾値MD_th以下となった場合、画像処理装置203は、撮影された被写体に動きがないことを検出する。
画像処理装置203は、動きの有無に基づいて、動きの検出結果を示す動き検出結果フラグのフラグ値をセット又はリセットする。即ち、画像変化量MDが閾値MD_thを越えた場合、画像処理装置203は、撮影された被写体に動きがあったことを示すため、動き検出結果フラグのフラグ値をセットする。
一方、画像変化量MDが閾値MD_th以下の場合、画像処理装置203は、撮影された被写体に動きがなかったことを示すため、動き検出結果フラグのフラグ値をリセットする。画像処理装置203は、動き検出結果フラグのセット又はリセットしたフラグ値をメモリ201の作業データ記憶領域201dに記録する。
(5)画像の圧縮処理
画像の圧縮処理は、静止画処理において補正した画像の画像データを、プロジェクタ2に送り出すために圧縮する処理である。
画像処理装置203は、メモリ201の表示画像記憶領域201cに記憶されている画像データに対してJPEG画像圧縮を行い、画像データを圧縮する。画像処理装置203は、圧縮した画像データをメモリ201の表示画像記憶領域201cに書き込む。
(6)画像変換処理
画像変換処理は、切り抜いた原稿画像に対して、射影補正、回転補正、ズーム処理を行う処理である。画像処理装置203は、抽出した矩形の4つの頂点に基づいて、撮影画像から原稿画像を切り抜く。通常、補正を行わずに切り抜かれた原稿画像は歪んだものになる。
画像処理装置203は、切り抜いた原稿画像に対し、後述する各処理において取得した射影補正パラメータ、回転補正パラメータ、ズームパラメータに基づいて画像変換処理を行い、補正後原稿画像を取得する。
射影補正処理は、切り取った原稿画像を射影変換することにより、原稿画像の歪みを補正する処理である。画像処理装置203は、この歪みを補正するため、画像の空間変換に幅広く応用されているアフィン変換を用いる。本実施形態では、原稿画像の回転補正、画像の拡大、縮小処理にもこのアフィン変換を用いる。
画像処理装置203は、原稿画像等の元画像から、射影補正画像とのアフィン変換の関係を示すアフィンパラメータAを抽出し、この変換Aを用いて、求める射影補正画像の各画素P(u,v)に対応する元画像の画素点p(x,y)を求めることによって射影補正を行う。
次に、このアフィン変換についての基本的な考え方(実現方法)を説明する。
画像の空間変換にアフィン変換が幅広く応用されている。本実施形態では、3次元のカメラパラメータを用いずに2次元アフィン変換を用いて射影変換を行う。変換前の座標(u,v)の点は、移動、拡大縮小、回転などの変換が行われることによって変換後の座標(x,y)になる。変換前の座標(u,v)と変換後の座標(x,y)とは、次の数10によって関係付けられる。射影変換もこのアフィン変換により行われる。
最終的な座標(x,y)は、次の数11によって算出される。
数11は、射影変換するための式であり、座標(x,y)は、z'の値に従い、0に向かって縮退する。即ち、z'に含まれるパラメータが射影に影響を及ぼすことになる。このパラメータはa13,a23,a33である。また、他のパラメータは、パラメータa33で正規化されることができるので、a33を1としてもよい。
本実施形態の画像処理装置203は、このアフィン変換を用いて、入力画像pと出力画像Pとの関係付けを行う。
ここで、入力画像pから出力画像Pを求める場合、入力画像pの画素位置に対応する出力画像Pの画素位置を求めるのではなく、出力画像Pの画素位置に対応する入力画像pの画素位置を求める方が好ましい。
本実施形態の画像処理装置203は、入力画像pと出力画像Pとの関係付け行うのに、以下の3つのアフィン変換を用いるものとする。この変換を図6に基づいて説明する。
図6(a)に示すように、撮影画像11aの座標系を入力画像xy座標系として、画素位置(x,y)における入力画像(画素値)をp(x,y)とする。また、撮影画像11aのサイズを、0≦x<xmax,0≦y<ymaxとする。
画像処理装置203は、この入力画像p(x,y)を、図6(b)に示すような台座画像13aの座標系である台座UV座標系に射影補正し、原稿画像4aを含む台座画像13aを、台座画像13aの輪郭に沿って切り出す。画像処理装置203は、このような処理を行って画像p(U,V)を生成する。尚、台座UV座標系の画像のサイズを、0≦U<Usc,0≦V<Vscとする。また、入力画像p(x,y)を台座UV座標系に射影補正するための射影補正パラメータをAtpとする。
次に、画像処理装置203は、台座UV座標系の原稿画像に対して回転補正を行い、図6(c)に示すような回転補正後の回転補正pq座標系の画像p(p,q)を生成する。この回転補正パラメータをArfとする。
次に、画像処理装置203は、図6(c)に示す画像p(p,q)の全体、あるいは、その一部を拡大し、さらに出力画像のサイズに合わせ、図6(d)に示すように出力画像uv座標系の画像P(u,v)を生成する。尚、出力画像uv座標系の画像のサイズを、0≦u<umax,0≦v<vmaxとする。また、このようなズーム処理を行うためのズームパラメータをAzmとする。
入力画像p(x,y)と補正出力画像P(u,v)とは、射影補正パラメータAtpによる射影補正、回転補正パラメータArfによる回転補正と原稿画像の切り出し、ズームパラメータAzmによるズーム処理の3つの変換によって関係付けられると考える。このように考えて、モデル化すると、入力画像p(x,y)と補正出力画像P(u,v)との入出力関係は、次の数12によって表される。
但し、数10より、次の数13の関係が成り立つ。
尚、図6(a)〜(d)に示すそれぞれの座標系の関係は、次の数14〜数16によって表される。
画像処理装置203がこのような画像変換処理を実行するにあたって、以下のような入力値を必要とする。
(a)アフィン変換パラメータA
(b)入力画像p(x,y)のデータが記憶されているメモリ201内の領域(センサ画像記憶領域201a1,201a2)とその画像サイズ(0≦x<xmax,0≦y<ymax)
(c)出力画像P(u,v)のデータを書き込むメモリ201内の領域(表示画像記憶領域210c)と、変換を行う出力範囲(umin≦u<umax,vmin≦v<vmax)
画像処理装置203は、上記(a)〜(c)に示すパラメータが供給されて出力画像の画素値P(u,v)を1画素毎に求める。まず、画像処理装置203は、数11に従い、出力画像Pの座標(u,v)に対応する入力画像pの座標(x,y)を求める。
座標(x,y)は、整数になるとは限らないため、画像処理装置203は、出力画素Pの座標(u,v)の画素値P(u,v)を、入力画像pの座標(x,y)の周辺の画素値からバイリニア法による補間方法を用いて求める。バイリニア法による補間方法は、次の数17によって表され、画像処理装置203は、数17に従い、出力範囲全ての座標点について画素値を求める。
(7)射影補正パラメータ取得処理
射影補正パラメータ取得処理とは、入力した撮影画像と撮影画像に含まれる台座画像との関係に基づいて、数14に示す射影補正パラメータAtpを求める処理である。
各辺の長さが既知である長方形の取得可能な被写体を撮影し、その被写体画像から、被写体の長方形に対応する画像輪郭を取得して射影補正パラメータAtpを求めれば、原稿4の反り等の影響を受けずに射影補正を行うことができる。このような観点から、書画カメラ1は、原稿を台座とともに撮影し、台座画像13aの形状を取得する。
具体的には、図7(a1)に示すような既知の外形を有する台座13を被写体として撮影し、図7(a2)に示すような撮影画像から台座画像13aの形状を取得することが考えられる。
但し、台座13が載置されたテーブル等によって、台座画像13aの輪郭(形状)の取得をうまく行えない場合があるので、図7(b1)に示すような台座13に描画された長方形図形13−1を用いる他の方法もある。
この場合、長方形13−1の内部を、長方形13−1外部とは異なる色で塗りつぶしておく。書画カメラ1は、この台座13を被写体として撮影して、図8(b2)に示すような撮影画像11aを取得する。この図8(b2)に示す撮影画像11aから、図8(b1)に示す長方形13−1に対応する台座画像13aの頂点座標を取得すれば、台座画像13aの形状を取得することができる。
また、図7(c1)に示すような台座13上の四隅に描画又は刻印されたL型のコーナーマーク13−2を用いる方法がある。
この場合、各コーナーマーク13−2の位置は既知とし、各コーナーマーク13−2の位置に基づいて台座画像13aの形状に対応する長方形の取得が可能となる。
そして、台座13の色を暗いグレーの無地の色とし、コーナーマーク13−2の色を白色とする。書画カメラ1は、このコーナーマーク13−2が刻印された(付された)台座13を被写体として撮影して、図7(c2)に示すような撮影画像11aを取得する。
そして、画像処理装置203は、この図7(c2)に示す4つのコーナーマーク13−2の画像13−2aの位置を検出し、検出したコーナーマーク画像13−2aの位置に基づいて台座画像13aの形状に対応する長方形画像を取得する。
尚、メモリ201は、図7(a1)に示すような台座13の外形、図7(b1)に示すような台座13上の長方形図形13−1、図7(c1)に示すようなコーナーマーク13−2の位置に基づいて取得される長方形の各辺の長さ(寸法)を、この基準多角形の形状として予め処理画像記憶領域201bに記憶する。
本実施形態では、例として、このコーナーマーク13−2を用いて射影補正パラメータAtpを取得する場合について説明する。
台座UV座標系における台座マークの位置の座標を図8(b)に示すように(0,0),(Usc,0),(Usc,Vsc),(0,Vsc)であるとする。また、図8(a)に示すように、台座13を含めて撮影を行ったときに、それぞれのマーク位置座標を(x0,y0), (x1,y1), (x2,y2), (x3,y3)であるとする。数14、数11の関係式から、次の数18の関係式が成立する。
このとき、射影係数α、βは次の数19によって表される。
この場合、射影補正パラメータAtpは次の数20によって表される。
二値化や、ラベリングなどの良く知られた画像処理方法等を用いて、台座13の4つのコーナーマーク13−2が写った撮影画像11aから、容易にコーナーマーク13−2の位置を抜き出すことができる。画像処理装置203は、4つの頂点(x0,y0),(x1,y1),(x2,y2),(x3,y3)から数20に基づいて、射影補正パラメータAtpを求める。画像処理装置203は、求めた射影補正パラメータAtpの値をメモリ201の作業データ記憶領域201dに記憶する。
また、画像処理装置203は、この座標点からなる四角形領域を有する図4(c)に示すようなマスキング画像mを作成する。このマスキング画像mは回転補正パラメータ取得処理において、原稿画像4aの輪郭取得を行う際に、台座画像13aの輪郭除去のために用いる。次に、画像処理装置203は、4点のコーナーマーク13−2の座標が正しく抜き出せたときに射影補正パラメータ取得結果フラグのフラグ値をセットし、このフラグ値をメモリ201の作業データ記憶領域201dに記憶する。
一方、大きな原稿4等が載置されていたためにコーナーマーク画像13−2aを検出できずに、四角領域を正しく取得できなかった場合には、ユーザに警告するため、射影補正パラメータ取得結果フラグのフラグ値をリセットし、このフラグをメモリ201の作業データ記憶領域201dに記憶する。
(8)回転補正パラメータ取得処理
回転補正パラメータ取得処理は、図6(b)に示すような回転補正前の原稿画像4aから、輪郭を構成する直線を取得して、台座UV座標系の台座画像13aの辺に対する原稿画像4aの傾きを補正するための回転補正パラメータを取得する処理である。さらに、この処理は、原稿画像4aの輪郭から原稿画像4aの領域を求め、原稿画像4aの切り出し領域を決定する処理も含んでいる。
回転補正パラメータを取得する考え方について説明する。画像処理装置203は、回転補正パラメータ取得処理を実行する際、以下のパラメータを参照する。
(a)回転補正制御フラグRotate_Control_Flag
回転補正制御フラグRotate_Control_Flagは、回転補正を行うか否かを示すフラグである。CPU207は、この回転補正制御フラグRotate_Control_Flagのフラグ値をセット又はリセットし、このフラグ値をメモリ201の作業データ記憶領域201dに記憶する。そして、画像処理装置203が、このフラグを作業データ記憶領域201dから読み出して、回転補正を行うか否かを判別する。回転補正制御フラグRotate_Control_Flagがセットされている場合、回転補正の実行が指示されたことを示し、画像処理装置203は回転補正を行う。一方、このフラグがリセットされている場合、回転補正を行わないことを示し、画像処理装置203は、この処理を実行しない。
(b)切り出し制御フラグFitting_Control_Flag
制御フラグFitting_Control_Flagは、切り出した原稿画像を原稿4のサイズに合わせ、スクリーン3に投影する原稿画像4aを最大表示する処理を有効にするか否かを示すフラグである。CPU207がこの切り出し制御フラグFitting_Control_Flagのフラグ値をセット又はリセットして、メモリ201の作業データ記憶領域201dにこのフラグ値を記憶する。そして、画像処理装置203が、作業データ記憶領域201dから、このフラグ値を読み出す。切り出し制御フラグFitting_Control_Flagがセットされている場合、この処理は有効であり、画像処理装置203は、この処理を実行する。一方、このフラグがリセットされている場合、この処理は無効であり、画像処理装置203は、この処理を行わない。
(c)入力画像データp(x,y)が書き込まれているメモリ領域(センサ画像記憶領域201a1,201a2)と入力画像データp(x,y)のデータサイズ(0≦x<xmax,0≦y<ymax)の指定
(d)出力画像データP(u,v)を書き込むメモリ領域(表示画像記憶領域201c)と出力画像データP(u,v)のデータサイズ(0≦u<umax,0≦v<vmax)の指定
次に、原稿画像4aの輪郭と原稿画像4aの傾きとの関係について説明する。図9は、画像処理装置203が射影補正を行って、原稿4を真上から見たような画像に変換した後の輪郭の一例を示す。射影補正後の画像であっても、輪郭から直線の検出を行う場合、原稿4aの大きさや置かれた状態によって検出される直線は、図9(a)〜(g)に示すように変化する。
図9(a)は、台座13上に原稿4の輪郭が全て含まれている例を示す。図9(b)は、原稿4の一辺が台座13からはみ出し、3辺の直線しか検出されない例を示す。図9(c)は、原稿4の2辺がはみ出して2辺の直線しか検出されない例を示す。
図9(d)は、原稿4が大きくて1辺の直線しか検出されない例を示す。図9(e)は、台座13に原稿4以外のものが載置されて直線を全く検出できない例を示す。図9(f)は、五角形の形状の原稿が載置されて検出直線を誤ってしまう例を示す。図9(g)は、原稿4とともに原稿4とは異なる物体が載置された例を示す。
このように、様々な状況であっても、画像処理装置203は、原稿画像4aの輪郭線の中で縦の辺、横の辺を区別する。そして、画像処理装置203は、縦の辺は90度の傾きからの差分、横の辺は0度からの差分を求め、これらの差分の平均を原稿画像4aの傾きとして、輪郭を形成する直線を特定する。
しかし、補正前の元画像では、長方形の輪郭を持つ原稿4を斜めから撮影した場合、射影ひずみによって長方形がひずむため、上の輪郭線と下の輪郭線の傾きが同じでない。
本実施形態の画像処理装置203は、射影補正画像を作成せずに、原稿画像4aの輪郭による直線の傾きを求め、原稿画像4aの傾きを特定する。
まず、アフィン変換によって直線がどのように変換されるかについて説明する。入力画像xy座標系のxy座標と台座UV座標系のUV座標との間に次の数21によって表される関係があるものとする。
数21に、直線式ax+by+c=0を代入することによって、次の数22が得られる。
ρ-θ座標の直線の場合、数22に、次の数23の関係を代入し、a',b',c'を求める。
変換後の直線の傾き角度θ'は次の数24によって表される。
画像処理装置203は、数24に従って、直線の傾き角度θ'を取得する。
画像処理装置203は、このような直線の傾き角度θ'を取得するため、書画カメラ1が原稿4を高解像度撮影を行った元画像から、射影補正を行った縮小画像を作成する。
画像処理装置203は、射影パラメータ取得処理において取得したマスキング画像mを用いて台座画像13aの輪郭をマスクして、矩形取得処理を実行する。そして、画像処理装置203は、矩形取得処理において原稿画像4aの輪郭によって形成された直線を取得する。画像処理装置203は、さらに、矩形取得処理において取得した原稿画像直線の上下左右の直線情報(ρ、θ)から、数24に従って射影補正後の原稿画像直線と台座画像直線との傾き角度θ'を求める。
次に、画像処理装置203は、各辺の傾きのない角度からの差分を求める。即ち、画像処理装置203は、上下の辺の場合は δ=θ'−180°とする。また、画像処理装置203は、左右の辺の場合は δ=θ'−90°とする。そして、画像処理装置203は、このようにして取得したこれらの差分の平均を原稿画像4aの傾き角度θpとして、傾き角度θpを取得する。
この傾き角度θpを用いると、台座UV座標系と回転pq座標系との間には、次の数25の関係が成り立つ。
逆変換は次の数26によって表される。
画像処理装置203は、数26に従い、回転補正を行う。次に、画像処理装置203は、回転補正された画像から、原稿部分(撮影対象)の切り出しを行う。この切り出し処理について説明する。
切り出しは、図10(a)に示すような射影補正を行った画像から、図10(d)に示すように、出力画像に最大表示されるように行われることが望ましい。このため、回転補正画像を求める必要がある。
しかし、回転補正画像を求めていたのでは、画像処理に時間を要する。そこで、本実施形態の画像処理装置203は、被写体の形状が原稿のように四角形である場合、次のような手順で切り出し領域を決定する。
画像処理装置203は、矩形取得処理において、検出できなかった原稿画像4aの辺を、台座画像13aの対応する辺(境界の辺)、即ち、台座画像13aの上辺、下辺、右辺、左辺で代用する。例えば、原稿画像13aの上辺が検出されていないとき、画像処理装置203は、台座画像13aの上辺を原稿画像4aの上辺とする。このようにして、原稿画像4aの上下左右の4辺の辺が得られる。
画像処理装置203は、これらの辺からなる四角形の頂点を求める。但し、矩形取得処理で得られる直線情報(ρ、θ)は入力画像xy座標系の情報であるので、画像処理装置203は、これを用いずに、数24で求めた(a',b',c')を直線情報(直線パラメータ)として用いる。台座画像13aの辺は、図11に示す直線パラメータによって表される。
この直線パラメータは台座UV座標系のパラメータである。従って、画像処理装置203は、数25を用いて、台座UV座標系の頂点座標(U0,V0),(U1,V1),(U2,V2),(U3,V3)を、回転補正pq座標系の座標(p0,q0),(p1,q1),(p2,q2),(p3,q3)に変換する。
画像処理装置203は、このように回転補正を行った原稿画像4aに対して、図10(c)に示すように外接四角形Rを求め、外接四角形Rを最小の長方形として、出力画像が最大表示されるように原稿画像4aを切り出す。
外接四角形Rの対角点を(p
L,q
L),(p
H,q
H)とすると、外接四角形Rの対角点(p
L,q
L),(p
H,q
H)は、次の数27によって求められる。
原稿画像4aが図9(e)〜(g)に示すように四角形でない場合、画像処理装置203は、回転補正を行わずに、切り出しだけを行う。この場合、回転補正を行わないので、画像処理装置203は、矩形検出処理において作成したエッジ画像を用いて、エッジの画素をスキャンする。そして、画像処理装置203は、エッジのある画素の座標点(pi,qi)から、数27に従って、pq成分のそれぞれの最大、最小値を検索し、最小の外接長方形Rを求める。
回転補正と切り出しを行うための回転補正パラメータArfは、次の数28、数29によって表される。
(9)動画投影処理
動画投影処理は、原稿4が載置される前、あるいは原稿4の差し替えを行っているときに、プロジェクタ2を介してリアルタイムに現在の画像を投影する処理である。
画像処理装置203は、画像データ生成部21から取り込まれた低解像度画像をメモリ201のセンサ画像記憶領域201a1,201a2から交互に読み出し、同じメモリ201内の表示画像記憶領域201cにコピーして画像圧縮処理を行う。
(10)静止画投影処理
静止画投影処理は、原稿4が載置されて静止したときに、プロジェクタ2に図25(a)または(b)に示すような撮影画像から、図25(c)に示すような画像に変換し、スクリーン3に投影させる処理である。
画像処理装置203は、すでに求めた3つのアフィン変換パラメータAzm,Arf,Atpから合成したアフィンパラメータAtを、数12に従って求める。
次に、画像処理装置203は、以下のパラメータを用いて画像変換処理を実行する。
(a)アフィン変換パラメータAt
(b)入力画像p(x,y)が記憶されているメモリ領域(センサ画像記憶領域201a1,201a2)と、その画像サイズ(0≦x<xmax,0≦y<ymax)
(c)出力画像P(u,v)を書き込むメモリ領域(表示画像記憶領域201c)と、変換を行う出力範囲(0≦u<umax,0≦v<vmax)
この画像変換処理を行うことにより、画像処理装置203は、正面補正とズーム処理とを行った正面補正画像を取得する。
画像処理装置203は、正面補正画像を取得すると、この正面補正画像に対して画像引き延ばし処理等の画像の鮮明化処理を行い、正面補正画像を、視認性の高い画像に変換する。画像処理装置203は、このようにして歪み補正と傾き補正を行った補正後原稿画像を取得する。
画像処理装置203は、この鮮明化処理を行った画像を、メモリ201の表示画像記憶領域201cに記録する。
次に、図2に戻り、操作部204は、ユーザの操作情報を取得するためのものである。操作部204は、図12に示すように、電源スイッチ41と、拡大キー42aと、縮小キー42bと、左移動キー43aと、右移動キー43bと、上移動キー43cと、下移動キー43dと、回転補正有効スイッチ44と、画像フィッティングスイッチ45と、LED46,47と、を備える。
電源スイッチ41は、書画カメラ1の電源をオン(ON)、オフ(OFF)するためのものである。
拡大キー42aと縮小キー42bとは、ズーム制御キーであり、静止画投影画像を拡大、縮小表示を制御するためのプッシュ型のキーである。拡大キー42aは、押下される毎に、ズーム比Zoomを予め設定されたZOOM_RATIO倍して、現倍率の静止画像を拡大することを示す。縮小キー42bは、押下される毎に、ズーム比Zoomを予め設定された1/ZOOM_RATIO倍して、現倍率の静止画像を縮小することを示す。
左移動キー43aと右移動キー43bと上移動キー43cと下移動キー43dとは、画像の拡大表示中に、表示の中心座標の移動を指示するための表示移動キーである。
回転補正有効スイッチ44は、回転補正を有効にするか無効にするかを指示するためのスイッチであり、例えば、プッシュ型のロックキーによって構成される。回転補正有効スイッチ44は、投影する原稿画像の傾き補正を行う場合に押下され、押下されて回転補正を有効とすることを示す。
また、被写体が斜め線を有して、好ましい回転補正を行えない場合に、この回転補正有効スイッチ44が押下されると、回転補正有効スイッチ44は、回転補正を無効にすることを示す。
画像フィッティングスイッチ45は、切り出した原稿画像を原稿4のサイズに合わせる処理を有効とするか否かを指示するためのスイッチである。画像フィッティングスイッチ45は、押下されてフィッティングを有効とすることを示す。
LED46は、回転補正有効スイッチ44の上部に備えられ、点灯して傾き補正を有効としたことを示す表示灯である。LED47は、画像フィッティングスイッチ45の上部に備えられ、点灯してフィッティングを有効としたことを示すための表示灯である。
支柱傾き変化検出部205は、図1に示す支柱12の傾きなどを切り替えた場合に、その支柱12の傾きの変化を検出するためのものである。支柱傾き変化検出部205は、例えば、重力加速度計等を備え、機構的に支柱12の動作を検出する。
プログラムコード記憶装置206は、CPU207が実行するプログラムを記憶するためのものであり、ROM等によって構成される。
CPU207は、プログラムコード記憶装置206に格納されているプログラムに従って、各部を制御する。
具体的には、CPU207は、後述するカメラ基本処理を実行する。CPU207は、カメラ基本処理において、カメラ部11の撮影条件の初期化を行う。撮影条件には、カメラ部11のフォーカス、シャッター速度(露光時間)、絞りなどの露出、ホワイトバランス、ISO感度などを含む。CPU207は、オートフォーカス測定、測光などをおこなって撮影が最適になる条件を探して、画像データ生成部21をその条件となるように初期化を行う。
また、CPU207は、メモリ201の初期化、通信、画像処理等に用いるデータの初期化、射影補正パラメータ取得要求フラグのセット、動画モードの設定を行う。
尚、撮影モードとしては、動画モードと静止画モードとがあり、動画モードは、画像データ生成部21に低解像度画像撮影を行わせるモードであり、リアルタイム性を重視したモードである。一方、静止画モードは、画像データ生成部21に高解像度画像撮影を行わせるモードであり、解像度を重視するモードである。CPU207は、撮影モードを設定すると、設定した撮影モードをメモリ201の作業データ記憶領域201dに記憶する。
CPU207は、初期化を行うと、低解像度画像撮影を行うように画像データ生成部21を制御する。CPU207は、イメージセンサ102が取り込んだ画像データをメモリ201のセンサ画像記憶領域201a1,201a2に、交互に記憶するように、イメージセンサ102、メモリ201を制御する。
そして、CPU207は、センサ画像記憶領域201a1,201a2から、画像データを交互に読み出して処理画像記憶領域201bに書き込み、画像処理装置203に画像の動き検出処理を実行させる。
そして、CPU207は、メモリ201の作業データ記憶領域201dに記録された動き検出結果フラグを参照して撮影範囲内の被写体に動きがあるか否かを判定する。
CPU207は、動き検出結果フラグがセットされ、撮影範囲内の被写体に動きがあると判定した場合、撮影モードを動画モードに設定し、画像処理装置203に動画投影処理を実行させる。
一方、動き検出結果フラグがセット状態からリセット状態に変化した場合、撮影範囲内の被写体に動きが停止したと判定し、CPU207は、画像処理装置203に、前述の各処理を実行させる。
また、CPU207は、支柱傾き変化検出部205が支柱12の傾きの変化を検出すると、射影補正パラメータの取得を要求するため、射影補正パラメータ取得要求フラグのフラグ値をセットし、このフラグ値をメモリ201の作業データ記憶領域201dに記憶する。
そして、CPU207は、メモリ201の作業データ記憶領域201dに記憶されている射影補正パラメータ取得結果フラグのフラグ値を参照する。そして、このフラグ値がセットされていれば、CPU207は、射影補正パラメータ取得処理が繰り返し実行されないように、射影補正パラメータ取得要求フラグのフラグ値をリセットし、このフラグ値をメモリ201の作業データ記憶領域201dに記憶する。
一方、CPU207は、射影補正パラメータ取得結果フラグのフラグ値がリセットされていれば、射影補正パラメータの取得に失敗したことを判別し、警告を発する。警告は、例えば、音声による警告であっても、書画カメラ1の液晶ディスプレイ(図示せず)への表示による警告であってもよい。
また、CPU207は、操作部204から、ユーザの操作情報を取得し、取得した操作情報に基づいて各種フラグを設定し、ズームパラメータを取得する。
即ち、回転補正有効スイッチ44が押下された場合、CPU207は、回転補正を有効とするため、回転補正制御フラッグRotate_Control_Flagのフラグ値をセットする。そして、CPU207は、このフラグ値をメモリ201の作業データ記憶領域201dに記憶する。
また、画像フィッティングスイッチ45が押下された場合、CPU207は、切り出した画像の出力画像へのフィッティングを指示するため、切り出し制御フラグFitting_Control_Flagのフラグ値をセットする。CPU207は、このフラグ値をメモリ201の作業データ記憶領域201dに記憶する。
また、CPU207は、静止画モードに設定し、原稿4又は台座13に動きがない間、ズーム制御キー及び表示移動キーの操作を監視する。ズーム制御キー又は表示移動キーが押下されると、CPU207は、投影されている静止画像の拡大縮小、画像移動処理を行うため、ズームパラメータの修正処理を実行する。
ここで、ズームパラメータ修正処理の説明を行う前に、数12に示すズームパラメータAzmについて説明する。
ズームパラメータAzmは、単位行列Iであって、このアフィン変換によっては変化しない。このため、出力画像には、射影補正パラメータAtp及び回転補正パラメータArfによる変換によって、正面補正と回転補正がされた原稿4の全領域が最大表示されることになる。
ズームパラメータAzmはこの全原稿画像の一部を拡大するための変換パラメータであって、次の数30によって表される。
ここで、Zoomは、拡大比である。Cx,Cyは、拡大を行う表示基点を示す。本実施形態では、表示基点Cx,Cyを画像の左下の位置とする。
次に、ズームパラメータ修正処理について説明する。本実施形態において、最大拡大倍率をMAX_ZOOMとする。出力画像サイズは、前述のようにumax,vmaxとする。
まず、ズームパラメータの初期化処理が実行された状態において、CPU207は、Zoom=1,Cx=0,Cy=0に設定する。これにより、ズームパラメータAzmは単位行列Iとなる。
次に、CPU207は、操作部204の操作情報に基づいて、ズームパラメータAzmの修正を行う。ズームパラメータAzmの修正処理において、拡大キー42a、縮小キー42bが押下される毎に、拡大倍率はZOOM_RATIO毎に変化するものとする。また、カーソル移動では、出力画像uv座標系でMOVE_STEPずつ移動するものとする。
拡大キー42a又は縮小キー42bが1回押された場合、CPU207は、ズーム比ZoomをZOOM_RATIO倍又はZOOM_RATIO分の1する。
次に、CPU207は、計算されたズーム比Zoomのチェックを行う。次の数31に示す条件に適合する場合、CPU207は、ズーム比Zoomを修正する。式中MAX_ZOOM_RATIOは最大拡大率であり、予め決められた値である。通常最大拡大は8倍ぐらいまでなので、MAX_ZOOM_RATIOは8となる。
左右カーソルが押された場合、CPU207は、表示基点CxをMOVE_STEP/Zoomだけプラス又はマイナスする。上下カーソルが押された場合、CPU207は、表示基点CyをMOVE_STEP/Zoomだけプラス又はマイナスする。
次に、CPU207は、数32に従って、表示基点Cx,Cyが表示上、支障がないか否かを検証する。
CPU207は、このような検証を行って支障がなければ、ズーム比Zoom,表示基点Cx,CyからズームパラメータAzmを作成してメモリ201の作業データ記憶領域201dに保存する。
図1に戻り、プロジェクタ2は、書画カメラ1から供給された画像データを投影光に変換し、スクリーン3にこの投影光を照射して原稿画像をスクリーン3上に結像させるものである。
次に、本実施形態に係る撮影装置の動作を説明する。
ユーザが書画カメラ1の電源スイッチ41を押下すると、書画カメラ1の電源はONし、書画カメラ1のCPU207は、プログラムコード記憶装置206からプログラムコードを読み出してカメラ基本処理を実行する。
このカメラ基本投影処理の内容を図13及び図14に示すフローチャートに従って説明する。
CPU207は、光学レンズ装置101の周辺回路を制御して、光学レンズ装置101の焦点、ズームレンズ位置、絞りなどのカメラ設定と、ビデオ出力装置202等の初期化と、を行う(ステップS11)。
CPU207は、メモリ201の初期化、通信、画像処理等に用いるデータの初期化を行う(ステップS12)。
CPU207は、初期値として、射影補正パラメータ取得要求フラグをセットし、撮影モードを動画モードに設定する(ステップS13)。このとき、CPU207は、あわせて、カメラのフォーカス、シャッター速度(露光時間)、絞りなどの露出、ホワイトバランス、ISO感度等の撮影条件の初期化を行う。そして、CPU207は、オートフォーカス測定、測光等を行って撮影が最適になる条件を探して初期化を行う。
CPU207は、画像データ生成部21を制御して、低解像度でのカメラ撮影を行わせる(ステップS14)。そして、CPU207は、撮影によって得られた撮影画像をイメージセンサ102からメモリ201のセンサ画像記憶領域201a1,201a2に交互に書き込む。
CPU207は、画像処理装置203に画像の動き検出処理を実行させる(ステップS15)。画像処理装置203は、図15に示すフローチャートに従って画像の動き検出処理を実行する。
画像処理装置203は、縮小画像の作成処理を実行し、撮影画像から、縮小輝度画像を生成する(ステップS41)。画像処理装置203は、生成した縮小輝度画像をメモリ201の処理画像記憶領域201bに記憶する。
画像処理装置203は、既に処理画像記憶領域201bに記憶されている前回の縮小輝度画像と、新たに生成した縮小輝度画像とを比較し、数9に従い、画像変化量MDを計算する(ステップ42)。
画像処理装置203は、閾値MD_thを閾値記憶領域201eから読み出し、計算した画像変化量MDと閾値MD_thとを比較して、画像変化量MDが閾値MD_thを超えているか否かを判定する(ステップS43)。
画像変化量MDが閾値MD_thを超えていると判定した場合(ステップS43においてYes)、画像処理装置203は、動きがあったことを示すため、動き検出結果フラグのフラグ値をセットし、このフラグ値をメモリ201の作業データ記憶領域201dに記憶する(ステップS44)。
画像変化量MDが閾値MD_th以下であると判定した場合(ステップS43においてNo)、画像処理装置203は、動きがなかったことを示すため、動き検出結果フラグのフラグ値をリセットし、このフラグ値をメモリ201の作業データ記憶領域201dに記憶する(ステップS45)。
CPU207は、画像処理装置203が画像の動き検出処理を実行すると、メモリ201の作業データ記憶領域201dに記憶されている動き検出結果フラグのフラグ値に基づいて、動きがあったか否かを判定する(図13のステップS16)。
動き検出結果フラグのフラグ値がセットされている場合、CPU207は、被写体に動きがあったと判定し(ステップS16においてYes)、撮影モードを動画モードに設定する(ステップS17)。
CPU207は、画像処理装置203に動画投影処理を実行させる(ステップS18)。画像処理装置203は、図16に示すフローチャートに従って動作投影処理を実行する。
画像処理装置203は、低解像度画像撮影によって得られた画像データをメモリ201のセンサ画像記憶領域201a1又は201a2から交互に読み出す(ステップS51)。
画像処理装置203は、読み出した画像データを表示画像記憶領域201cにコピーする(ステップS52)。
画像処理装置203は、画像の圧縮処理を実行し、この画像データを圧縮する(ステップS53)。そして、ビデオ出力装置202は、圧縮された画像データを表示画像記憶領域201cから読み出して、プロジェクタ2に送り出す。
画像処理装置203が動画投影処理を実行すると、CPU207は、支柱傾き変化検出部205が支柱12の傾きを検出したか否かを判定する(図13のステップS19)。
支柱傾き変化検出部205が支柱12の傾きの変化を検出しなかったと判定した場合(ステップS19においてNo)、CPU207は、画像データ生成部21を制御して、低解像度でのカメラ撮影を行わせ(ステップS14)、画像処理装置203に画像の動き検出処理を実行させる(ステップS15)。
動き検出結果フラグのフラグ値がリセットされた場合、CPU207は、被写体の動きは停止したと判定し(ステップS16においてNo)、撮影モードが動画モードか否かを判定する(ステップS20)。
撮影モードが動画モードであると判定した場合(ステップS20においてYes)、CPU207は、動いていた被写体の動きが停止したと判定し、メモリ201の作業データ記憶領域201dから射影パラメータ取得要求フラグのフラグ値を読み出す。そして、CPU207は、このフラグ値に基づいて、射影補正パラメータ取得が要求されているか否かを判定する(ステップS21)。
射影補正パラメータ取得要求フラグがセットされている場合(ステップS21においてYes)、CPU207は、射影補正パラメータ取得が要求されていると判定し、画像処理装置203に射影補正パラメータ取得処理を実行させる。
画像処理装置203は、図17に示すフローチャートに従って射影補正パラメータ取得処理を実行する。
画像処理装置203は、縮小画像の作成処理を実行し、撮影画像から、縮小画像を生成する(ステップS61)。画像処理装置203は、生成した縮小画像をメモリ201の処理画像記憶領域201bに記憶する。
画像処理装置203は、二値化、あるいはラベリング法等の画像処理方法を用いて、撮影画像11aから、コーナーマーク画像13−2aの位置を求める(ステップS62)。
画像処理装置203は、コーナーマーク画像13−2aの位置を取得できたか否かを判定する(ステップS63)。
コーナーマーク画像13−2aの位置を取得できたと判定した場合(ステップS63においてYes)、画像処理装置203は、数20に従って射影補正パラメータAtpを求め、求めた射影補正パラメータAtpをメモリ201の作業データ記憶領域201dに記憶する(ステップS64)。
画像処理装置203は、取得した輪郭から台座画像13aの輪郭のマスキング画像mを作成する(ステップS65)。
画像処理装置203は、マスキング画像mを作成すると、射影補正パラメータの取得に成功したことを示すため、射影補正パラメータ取得結果フラグのフラグ値をセットする(ステップS66)。そして、画像処理装置203は、このフラグ値を作業データ記憶領域201dに記憶する。
一方、コーナーマーク画像13−2aの位置を取得できなかったと判定した場合(ステップS63においてNo)、画像処理装置203は、射影補正パラメータの取得に失敗したことを示すため、射影補正パラメータ取得結果フラグのフラグ値をリセットする(ステップS67)。そして、画像処理装置203は、このフラグ値を作業データ記憶領域201dに記憶する。
画像処理装置203がこのように射影補正パラメータ取得処理を実行すると、CPU207は、作業データ記憶領域201dに記憶されている射影補正パラメータ取得結果フラグのフラグ値を参照する(図14のステップS23)。
そして、CPU207は、このフラグ値に基づいて射影補正パラメータの取得に成功したか否かを判定する(ステップS24)。
射影補正パラメータ取得結果フラグがリセットされている場合、CPU207は、射影補正パラメータの取得に失敗したと判定し(ステップS24においてNo)、警告を発する(ステップS25)。
一方、射影補正パラメータ取得結果フラグがセットされている場合、CPU207は、射影補正パラメータの取得に成功したと判定する(ステップS24においてYes)。この場合、CPU207は、射影補正パラメータ取得要求フラグをリセットする(ステップS26)。
CPU207は、撮影モードを静止画モードに設定する(ステップS27)。
CPU207は、高品質な画像を得るために撮影条件の最適化を行ってから、画像データ生成部21を制御して、高解像度静止画撮影を行わせる(ステップ28)。
CPU207は、画像処理装置203に回転補正パラメータ取得処理を実行させる(ステップS29)。画像処理装置203は、図18に示すフローチャートに従って回転補正パラメータ取得処理を実行する。
画像処理装置203は、縮小画像の作成処理を実行して縮小画像を作成する(ステップS71)。尚、画像処理装置203は、台座画像が最大となるように、数18に従って台座画像13aのサイズ(usc,vsc)をスケーリングし直す。画像処理装置203は、生成した縮小画像をメモリ201の処理画像記憶領域201bに記憶する。
画像処理装置203は、図19に示すフローチャートに従って矩形取得処理を実行する(ステップS72)。
画像処理装置203は、2値エッジ画像作成処理を実行し、メモリ201の処理画像記憶領域201bに記憶された縮小画像のエッジ画像を作成する(ステップS91)。
画像処理装置203は、直線を検出するため、数7を用いてハフ変換を行う(ステップS92)。
画像処理装置203は、数8に従い、60°≦θ<120°の範囲において、上下の辺を形成する直線の候補として、ρが+、−それぞれの領域において、予め設定された閾値以上の投票数のピーク点を、複数探し出す。このとき、ρが+である候補は上辺に対応し、ρが−である候補は下辺に対応する。
また、画像処理装置203は、150°≦θ<210°の範囲においても、数8に従い、左右の辺を形成する直線の候補として、あらかじめ設定された閾値以上を有する投票数のピーク点を、複数探し出す。このとき、ρが+である候補は左辺に対応し、ρが−である候補は右辺に対応する(ステップS93)
画像処理装置203は、上下左右の直線候補のなかから、|ρ|が最大であるものを、各辺の最優先候補として選択する(ステップS94)。
画像処理装置203は、各辺の輪郭候補の有無と、その直線候補(ρ、θ)からなる輪郭情報と、を作成する(ステップS95)。
画像処理装置203は、このように矩形取得処理を実行すると、回転補正パラメータ取得処理に戻り、原稿画像の傾き角度θpを0に初期化する(図18のステップS73)。
画像処理装置203は、輪郭による直線が1本以上取得できたか否かを判定する(ステップS74)。
直線が1本以上取得できたと判定した場合(ステップS74においてYes)、画像処理装置203は、取得した直線に基づいて原稿画像4aの傾き角度θp、原稿画像4aの切り出しを行う。
まず、画像処理装置203は、メモリ201の作業データ記憶領域201dに記憶されている回転補正制御フラグRotate_Control_Flagのフラグ値を参照する。そして、画像処理装置203は、回転補正制御フラグRotate_Control_Flagがセットされているか否かを判定する(ステップS75)。
回転補正制御フラグRotate_Control_Flagがセットされていると判定した場合(ステップS75においてYes)、画像処理装置203は、回転補正の実行が指示されたと判別する。この場合、画像処理装置203は、矩形取得処理において取得した直線情報から数24に従って、各辺の射影補正後の傾き角度θ'を求める(ステップS76)。
画像処理装置203は、原稿画像4aの輪郭線の中で縦の辺、横の辺を区別し、縦の辺は90度の傾きからの差分δ、横の辺は180度からの差分δを求め、これらの差分δの平均を原稿画像4aの傾き角度θpとして、傾き角度θpを取得する(ステップS77)。
一方、回転補正制御フラグRotate_Control_Flagがリセットされていると判定した場合(ステップS75においてNo)、画像処理装置203は、回転補正の実行が指示されなかったと判別し、原稿画像4aの傾き角度θpの計算は行わない。
次に、画像処理装置203は、メモリ201の作業データ記憶領域201dに記憶されている切り出し制御フラグFitting_Control_Flagのフラグ値を参照し、このフラグがセットされているか否かを判定する(ステップS78)。
切り出し制御フラグFitting_Control_Flagがセットされていると判定した場合(ステップS78においてYes)、画像処理装置203は、原稿画像4aの切り出しの実行が指示されたと判別する。この場合、画像処理装置203は、上下左右で検出された直線パラメータから、数22から台座UV座標系の直線パラメータを求めた後、これらの直線の交点座標を求めることで、台座UV座標系の原稿画像4aを囲む四角形の頂点座標(U0,V0),(U1,V1),(U2,V2),(U3,V3)を求める(ステップS79)。
一方、切り出し制御フラグFitting_Control_Flagがリセットされていると判定した場合(ステップS78においてNo)、画像処理装置203は、原稿画像4aの切り出しの実行は指示されなかったと判別する。この場合、画像処理装置203は、台座画像13aの頂点を四角形の頂点として、その頂点座標を求める(ステップS80)。
画像処理装置203は、取得した回転補正前の画像の頂点座標から、原稿画像4aの傾き角度θpを用い、回転補正後である回転補正pq座標系の画像の四角形の頂点座標(p0,q0),(p1,q1),(p2,q2),(p3,q3)を求める(ステップS81)。
画像処理装置203は、補正後の頂点座標(p0,q0),(p1,q1),(p2,q2),(p3,q3)から、数27に従い、対角点(pL,qL),(pH,qH)を求め、頂点を含む外接四角形Rを求める(ステップS82)。
一方、図9(e)〜(g)に示すように、直線が1本も取得できなかったと判定した場合(ステップS74においてNo)、画像処理装置203は、原稿画像の回転補正、切り出しを行わず、エッジ画像から外接四角形を求める(ステップS83)。
画像処理装置203は、原稿画像4aの傾き角度θpと求めた外接四角形Rとから、数28に従い、回転補正パラメータArfを取得する(ステップS84)。
画像処理装置203が、このような回転補正パラメータ取得処理を実行すると、CPU207は、図20に示すフローチャートに従ってズームパラメータ初期化処理を実行する(図14のステップS30)。
CPU207は、ズーム比ZoomをZoom=1に設定する(ステップS101)。
CPU207は、表示基点Cx,Cyを、それぞれ、Cx=0,Cy=0に設定する(ステップS102)。
CPU207は、ズームパラメータAzmを単位行列(Azm=1)に設定する(ステップS103)。
このように、ズームパラメータ初期化を実行すると、CPU207は、画像処理装置203に、静止画投影処理を実行させる(図14のステップS31)。画像処理装置203は、図21に示すフローチャートに従って静止画投影処理を実行する。
画像処理装置203は、数12に基づいてアフィンパラメータAtを算出する(ステップS111)。
画像処理装置203は、図22に示すフローチャートに従って画像変換処理を実行する(ステップS112)。
画像処理装置203は、座標uを入力パラメータuminに初期化する(ステップS121)。
画像処理装置203は、座標vを入力パラメータvminに初期化する(ステップS122)。
画像処理装置203は、アフィンパラメータAtを用いて、数11に座標(u,v)を代入し、座標(x,y)を求める(ステップ123)。
画像処理装置203は、得られた座標(x,y)から、バイリニア法を示す数17に従って出力画像の画素値P(u,v)を求める(ステップ124)。
画像処理装置203は、座標vをインクリメントして、次のコラム座標点に移動させる(ステップS125)。
画像処理装置203は、座標vが指定範囲vmaxを超えたか否かを判定する(ステップ126)。
座標vが指定範囲vmax以下と判定した場合(ステップ126において、v≦vmax)、画像処理装置203は、再び、ステップS123〜125を実行し、同一ラインにおける画素値の取得が終了するまで、順番に出力画像の画素値P(u,v)を求める。
座標vが指定範囲vmaxを超えたと判定した場合(ステップ126において、v>vmax)、画像処理装置203は、座標uをインクリメントする(ステップS127)。
画像処理装置203は、座標uが指定範囲umaxを超えたか否かを判定する(ステップ128)。
座標uが指定範囲umax以下と判定した場合(ステップ128において、u≦umax)、画像処理装置203は、座標vを初期化し、そのラインを始点から順番に出力画像の画素値P(u,v)を求める(ステップS122〜S127)。
一方、座標uが指定範囲umaxを超えたと判定した場合(ステップ128において、u>umax)、画像処理装置203は、この画像変換処理を終了させる。
画像処理装置203は、画像変換処理が終了すると、画像の鮮明化処理を実行する(図21のステップS113)。
画像処理装置203は、切り出し画像を表示する(ステップS114)。
画像処理装置203は、画像データを圧縮する(ステップS115)。
画像処理装置203は、圧縮した画像データを送信し(ステップS116)、この静止画投影処理を終了させる。
画像処理装置203が静止画投影処理を終了させると、CPU207は、再び、支柱傾き変化検出部205が支柱12の傾きを検出したか否かを判定し(図13のステップS19)、低解像度画像撮影を行うように制御して被写体に動きがあるか否かを判定する(ステップS13〜S16)。
動いていた被写体の動きが停止したと判定し(ステップS16,S20においてそれぞれNo,Yes)、さらに、メモリ201の作業データ記憶領域201dから読み出した射影パラメータ取得要求フラグのフラグ値がリセットされている場合、CPU207は、射影補正パラメータ取得の要求はないと判定する(ステップS21においてNo)。
この場合、CPU207は、射影補正パラメータAtpは既に取得されているため、メモリ201の作業データ記憶領域201から射影補正パラメータAtpを読み出して、ステップS27〜S31を実行する。
また、静止していた被写体が動いたと判定した場合(ステップS16,S20において、ともにNo)、CPU207は、操作部204の操作情報に基づいてズームパラメータの修正を行うか否かを判定する(ステップS32)。
ズーム制御キー及び表示移動キーが押下されていなければ、CPU207は、ズームパラメータの修正を行わないと判定する(ステップS32においてNo)。
一方、ズーム制御キー又は表示移動キーが押下されていれば、CPU207は、ズームパラメータの修正を行うと判定し(ステップS32においてYes)、ズームパラメータ修正処理を実行する(ステップS33)。
CPU207は、図23に示すフローチャートに従って、ズームパラメータ修正処理を実行する。
CPU207は、操作部204から操作情報を取得し、ズーム制御キーが押下されたか否かを判定する(ステップS131)。
ズーム制御キーが押下されたと判定した場合(ステップS131においてYes)、CPU207は、押下されたキーの種別を判別する。
拡大キー42aが押下されたと判定した場合、CPU207は、ズーム比ZoomをZoom=Zoom*ZOOM_RATIOに設定する(ステップS132)。
縮小キー42bが押下されたと判定した場合、CPU207は、ズーム比ZoomをZoom=Zoom/ZOOM_RATIOに設定する(ステップS133)。
ズーム制御キーが押下されなかったと判定した場合(ステップS131においてNo)、CPU207は、ズーム比Zoomを修正せずに、次の処理を実行する。
CPU207は、数31に従ってズーム比Zoomのチェックを行い、条件と一致する場合、そのズーム比Zoomを修正する(ステップS134)。
CPU207は、左移動キー43a又は右移動キー43bが押下されたか否かを判定する(ステップS135)。
左移動キー43a又は右移動キー43bが押下されたと判定した場合(ステップS135においてYes)、CPU207は、押下されたキーの種別を判別する。
押下されたキーが左移動キー43aと判別した場合、CPU207は、表示基点CxをCx=Cx−MOVE_STEP/Zoomに設定する(ステップS136)。
押下されたキーが右移動キー43bと判別した場合、CPU207は、表示基点CxをCx=Cx+MOVE_STEP/Zoomに設定する(ステップS137)。
左移動キー43a又は右移動キー43bが押下されなかったと判定した場合(ステップS135においてNo)、CPU207は、表示基点Cxを修正せずに次の処理を実行する。
CPU207は、上移動キー43c又は下移動キー43dが押下されたか否かを判定する(ステップS138)。
上移動キー43c又は下移動キー43dが押下されたと判定した場合(ステップS138においてYes)、CPU207は、押下されたキーの種別を判別する。
押下されたキーが上移動キー43cと判別した場合、CPU207は、表示基点CyをCy=Cy−MOVE_STEP/Zoomに設定する(ステップS139)。
押下されたキーが下移動キー43dと判別した場合、CPU207は、表示基点CyをCy=Cy+MOVE_STEP/Zoomに設定する(ステップS140)。
上移動キー43c又は下移動キー43dが押下されなかったと判定した場合(ステップS138においてNo)、CPU207は、表示基点Cyの修正を行わずに次の処理を実行する。
CPU207は、数32に従って表示基点(Cx,Cy)の座標のチェックを行い、修正すべきであれば、修正を行う(ステップS141)。
CPU207は、ズーム比Zoom,表示基点Cx,Cyから、数30に従い、ズームパラメータAzmを作成する(ステップS142)。CPU207は、作成したズームパラメータAzmを、メモリ201の作業データ記憶領域201dに保存して、ズームパラメータ修正処理を終了させる。
CPU207は、ズームパラメータ修正処理を終了させると、画像処理装置203に静止画投影処理を実行させる(図14のステップS31)。
以上説明したように、本実施形態によれば、画像処理装置203は、撮影画像11aに含まれている台座画像13aの形状から、この形状を台座13の形状に射影するための射影補正パラメータAtpを取得し、撮影画像11aから、原稿画像4aに含まれる直線を取得する。そして、画像処理装置203は、射影補正パラメータAtpによる射影補正画像を生成する代わりに、原稿画像4aの直線情報から、原稿画像4aの傾き角度θpを取得し、取得した傾き角度θpに基づいて原稿画像4aの回転補正パラメータArfを取得するようにした。
従って、原稿画像4aの射影補正、回転補正を高速に行うことができ、補正時間に要する時間を短縮することができる。
また、画像処理装置203は、射影補正、回転補正を行うだけでなく、ズームパラメータの修正処理も行うので、真上から撮影して得られたような正面補正画像を取得することができ、原稿4の載置等において、操作性の良い書画カメラ1を構成することができる。
また、画像処理装置203は、被写体の輪郭等を取得できなくても、一本の縦線又は横線から原稿画像の傾き補正を行うようにしたので、原稿4がカメラ画角からはみ出すような大きなものであっても、容易に原稿画像の傾き補正を行うことができる。また、被写体から一本の直線でさえ取得できない場合であっても、被写体を真上から撮影した画像を作成することができる。
尚、本発明を実施するにあたっては、種々の形態が考えられ、上記実施形態に限られるものではない。
例えば、上記実施形態では、撮影装置は、コンピュータを備えたものであってもよい。そして、コンピュータが、画像処理装置を備え、コンピュータが画像処理等を行うようにしてもよい。このようにすれば、カメラ部11には、汎用のデジタルカメラを用いることもできる。
上記実施形態では、プログラムが、それぞれメモリ等に予め記憶されているものとして説明した。しかし、撮影装置を、装置の全部又は一部として動作させ、あるいは、上述の処理を実行させるためのプログラムを、フレキシブルディスク、CD−ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
1・・・書画カメラ、2・・・プロジェクタ、3・・・スクリーン、4・・・原稿、11・・・カメラ部、13・・・台座、201・・・メモリ、202・・・ビデオ出力装置、203・・・画像処理装置、204・・・操作部、205・・・支柱傾き変化検出部、207・・・CPU