本発明の実施形態に係る撮影画像投影装置を以下図面を参照して説明する。
図1は、本発明の実施形態に係る撮影画像投影装置の構成を示す図である。撮影画像投影装置は、図1に示すように、書画カメラ1と、プロジェクタ2と、コンピュータ5と、から構成されている。
書画カメラ1は、図1(a)に示すように投影対象の原稿4を撮影する機能と、図1(b)に示すように撮影対象物としてスクリーン3等の文字、図、写真等を撮影する機能と、を有しており、カメラ部11と、支柱12と、台座13と、操作台14と、から構成されている。
カメラ部11は、原稿4を撮影するためのものであり、デジタルカメラによって構成されている。支柱12は、カメラ部11を取り付けるためのものであり、カメラ部11及び台座13と回転自在に接続されている。台座13は、この支柱12を支えるためのものである。
図2は、図1に示す書画カメラ1の構成を示すブロック図である。書画カメラ1は、図2に示すように、画像データ生成部21と、データ処理部22と、から構成されている。この画像データ生成部21とデータ処理部22とは、図1に示すカメラ部11に設けられてもよいし、画像データ生成部21とデータ処理部22とは、それぞれカメラ部11と操作台14とに設けられてもよい。
画像データ生成部21は、撮影対象物(原稿4やスクリーン3)を撮影して撮影対象物の画像データを取り込むためのものであり、光学レンズ装置101と、イメージセンサ102と、から構成されている。
光学レンズ装置101は、光を集光するレンズやこのレンズを駆動する駆動装置等によって構成されており、イメージセンサ102上に撮影対象物の文字、図、写真等からの光を集光させて像を結像させる。
イメージセンサ102は、光学レンズ装置101が光を集光することにより結像した画像を、デジタル化した画像データとして取り込むためのものであり、CCD(Charge Coupled Device)等によって構成されている。
データ処理部22は、画像データ生成部21から取り込んだ原稿4やスクリーン3の画像データを取得して画像処理を行い、画像処理を施した画像データをプロジェクタ2に出力するものであり、メモリ201と、ビデオ出力装置202と、画像処理装置203と、操作部204と、プログラムコード記憶装置205と、CPU(Central Processing Unit)206と、インタフェイス装置208と、から構成されている。
メモリ201は、イメージセンサ102からの画像、ビデオ出力装置202に送り出すための画像データ等を一時記憶するためのものである。また、メモリ201は、CPU206の作業メモリとしても用いられる。ビデオ出力装置202は、コンピュータ5に送り出す画像データを図示しない表示装置に出力することによって、原稿4やスクリーン3の画像を表示装置に表示するものである。
画像処理装置203は、メモリ201に一時記憶された画像データに対して、画像データの圧縮、画像の歪み補正や画像効果などの画像処理を行うためのものである。
例えば、カメラ部11が原稿4の文字等を撮影面に対して斜めの状態あるいは回転した状態で撮影した場合、画像処理装置203は、図3(a)に示すような斜めの状態あるいは回転した状態の原稿4の画像に対して歪み補正(台形補正)を施すことによって、図3(b)に示すような正面から撮影した原稿4の画像を生成する。
また、カメラ部11がスクリーン3の文字等を向かって左方向から撮影した場合、画像処理装置203は、図4(a)に示すような左方向から撮影されたスクリーン3の画像に対して歪み補正を施すことによって、図4(b)に示すような正面から撮影したスクリーン3の画像を生成する。
画像処理装置203は、歪み補正するため、歪んだ画像から四角形を切り取り、切り取った四角形に撮影画像を射影変換する。より詳細には、画像処理装置203は、CPU206に制御されて、主に、(1)撮影画像からアフィンパラメータを抽出するアフィンパラメータ抽出処理、(2)抽出したアフィンパラメータを用いて画像を射影変換して歪み補正する画像変換処理、(3)輝度あるいは色差等を補正して画像を鮮明化する画像鮮明化処理等を実行する。なお、これらの処理内容については、後述する。
操作部204は、書画投影の機能を制御するためのキーやボタンを備えるものであり、ユーザがこれらのスイッチやボタンを操作したときの操作情報をCPU206に出力する。
本実施形態において、操作部204は、撮影キーとキャリブレーション要求キーとコントロールキーとシャッターボタンとを備えている。撮影キーは、原稿4の画像を撮影する書画撮影モードとスクリーン3の画像を撮影するボード撮影モードのうちから所望の撮影モードを選択するためのキーである。
キャリブレーション要求キーは、台座13の輪郭の形状の登録を指示するためのキーである。コントロールキーは、操作を確定するためのYESキーと操作をキャンセルするためのNOキーとを含んでいる。シャッタボタンは、撮影対象物を撮影するときに押下するものである。ズームボタンは、小さい原稿4を撮影する場合や原稿4の一部分を拡大して撮影する場合等に、カメラ部11のズーム制御を行うために、押下されるものである。
プログラムコード記憶装置205は、CPU206が実行するプログラムを記憶するためのものであり、ROM(Read Only Memory)等によって構成される。
CPU206は、プログラムコード記憶装置205に格納されているプログラムに従って、各部を制御するものである。具体的には、操作部204から送信される操作情報に基づいて、イメージセンサ102,メモリ201,ビデオ出力装置202及び画像処理装置203等を制御する。
例えば、ユーザにより撮影キーが押下されると、CPU206は、操作部204から送信される操作情報に応答して、書画撮影モード或いはボード撮影モードに各部を設定すると共に、シャッタボタンが押下されるまで、イメージセンサ102を動画中モードに設定する。そして、シャッタボタンが押下されると、CPU206は、操作部204からの操作情報に応答して、高い解像度で画像の読込を行う静止中モードに設定する。
また、CPU206は、光学レンズ装置101の焦点、露出、ホワイトバランス等のカメラ設定パラメータを動作中モードに初期化する機能を有する。これにより、カメラ部11が捉えているシーンは、光学レンズ装置101を経由してイメージセンサ102に集光され、イメージセンサ102は、集光された画像から動画撮影用の解像度の低いデジタルの画像データを作成し、メモリ201に、例えば、1秒あたり30枚程度で送り出す。
さらに、CPU206は、後述するフローチャートに従って、撮影対象物である原稿4の画像に動きがあるか否かを判定し、判定結果に従って、動作中モードと静止中モードとを切り替える。
動作中モードは、ユーザが台座13に投影したい原稿4等を載置しようとする場合に設定されるモードであって、カメラ部11で映し出している画像をそのままプロジェクタ2に投影するモードである。
動作中モードでは、CPU206は、例えば、画像解像度がVGA(Video Graphics Array:640×480ドット)程度の画像を30fps(フレーム/秒)の速さで動画投影を行なうように、各部を制御するものとする。このように、動作中モードは、解像度は低いものの、リアルタイム性を重視したモードである。
静止中モードは、ユーザが原稿4を置いた後に設定されるモードであって、カメラ部11で高解像度の画像撮影を行い、高解像度の静止画像の投影を行うモードである。カメラ部11が撮影解像度300万画素のカメラである場合、切り出した投影画像はXGA(Extended Graphics Array:1024×768ドット)の静止画像になる。
インタフェイス装置208は、圧縮した画像データをコンピュータ5に送信するためのものである。
図1に示すプロジェクタ2は、スクリーン3に投影光を照射して原稿4の画像を結像させるものである。コンピュータ5は、書画カメラ1とUSB等のケーブル15を介して接続されると共に、プロジェクタ2とRGB等のケーブル16を介して接続されている。コンピュータ5は、書画カメラ1からケーブル15を介して送出された原稿4の画像データを受信し、この受信した画像データをケーブル16を介してプロジェクタ2に出力するものである。
次に、本実施形態に係る撮影画像投影装置の動作を説明する。ユーザが撮影画像投影装置の電源をONすると、書画カメラ1のCPU206は、プログラムコード記憶装置205からプログラムコードを読み出してカメラ基本処理を実行する。
図5は、書画カメラ基本処理のフローチャートである。このカメラ基本処理において、CPU206は、まず、図5に示すように、書画カメラ1のカメラ部11の焦点、露出、ホワイトバランスなどのカメラ設定パラメータの初期化を行う(ステップS1)。これにより、カメラが捉えているシーンが、光学レンズ装置101を経由してイメージセンサ102に集光され、イメージセンサは集光された画像からデジタル画像の作成が可能なる。
次に、CPU206は、モードスイッチをチェックする等して、撮影モードが書画撮影モードかボード撮影モードかを判別する(ステップS2)。撮影モードが書画撮影モードであると判別した場合には(ステップS2;Yes)、書画撮影処理を実行する(ステップS3)。一方、撮影モードがボード撮影モードであると判別した場合には(ステップS2;No)、ボード撮影処理を実行する(ステップS4)。
このステップS3及びS4の撮影処理で得られた画像データは、メモリ201の所定領域に格納される。そして、ステップS3又はS4の撮影処理が終了すると、CPU206は、ステップS2に戻り、再度、モードスイッチを検出して、ステップS3又はS4の撮影処理を実行する。
CPU206は、ステップS3又はS4の撮影処理で得られた画像データをメモリ201から読み出し、ビデオ出力装置105を介してRGB出力として外部に出力すると共に、この画像データを画像処理装置203にて圧縮した後、インタフェイス装置108を介してコンピュータ5に転送する。
続いて、コンピュータ5は、HDD等にインストールされた書画処理用のソフトウェアが起動してPC書画基本処理を実行する。図6は、PC書画基本処理を示すフローチャートである。このPC書画基本処理において、コンピュータ5は、まず、図6に示すように、書画カメラから転送された画像データを受信したか否かを判別し(ステップS11)、画像データを受信したと判別した場合には(ステップS11;Yes)、受信した画像データに対してデコード処理を施す(ステップS12)。一方、画像データを受信していないと判別した場合には(ステップS11;No)、画像データを受信するまでループして待つ。
そして、コンピュータ5は、撮影モードが書画撮影モードかボード撮影モードかを判別し(ステップS13)、撮影モードが書画撮影モードであると判別した場合には(ステップS13;Yes)、受信した画像を描画し(ステップS14)、描画した画像のデータをプロジェクタ2に出力することによって、この画像をスクリーン3に投影する。一方、撮影モードがボード撮影モードであると判別した場合には(ステップS13;No)、受信した画像データをファイル等に保存する(ステップS15)。
続いて、ステップS3の書画撮影処理について詳細に説明する。図7及び図8は、書画撮影処理の詳細を示すフローチャートである。この書画撮影処理において、CPU206は、まず、図7に示すように、インタフェイス装置208、画像処理装置203やメモリ201内の作業メモリの初期化を行う(ステップS101)。次に、CPU206は、初期状態での台座13の輪郭の形状を登録するため、キャリブレーション要求フラグをセットする(ステップS102)。
続いて、CPU206は、ユーザによりキャリブレーション要求キーが押下されたか否かを判別する(ステップS103)。キャリブレーション要求キーが押下されていないと判別した場合には(ステップS103;No)、ズーム処理を実行する(ステップS104)。このズーム処理において、CPU206は、ユーザによりズームボタン等が押下されたか否かを判別し、押下されていると判別した場合には、カメラ部11のズーム制御を行う。さらに、ズーム処理にてカメラ部11のズームが変更された場合、CPU206は、台座登録変更処理を実行する。この台座登録変更処理において、CPU206は、ズーム処理前とズーム処理後とのズーム比に応じて、メモリ201に格納されている台座13の輪郭の形状を示す直線パラメータを調整する。
そして、CPU206は、カメラ部11による撮影を行い、画像データを取得する(ステップS105)。初期状態において、台座13上には原稿4が載置されておらず、カメラ部11は、台座13のみを撮影して台座13の画像データを取得する。その後、CPU206は、撮影によって得られた画像データをイメージセンサ102からメモリ201に転送する。
続いて、CPU206は、メモリ201から画像データを読み出し、この画像データと前回の撮影により得られた画像データとを比較して、画像に動きがあるか否かを判別する(ステップS106)。具体的には、画像データの差分が所定の閾値以上であるか否かを判別することによって、画像の動きを検出する。
画像に動きがあると判別された場合には(ステップS106;Yes)、動作中モードにセットして(ステップS107)、撮影した画像をそのまま表示装置に表示する。一方、画像に動きがないと判別された場合には(ステップS106;No)、動作中モードがセットされているか静止画モードがセットされているかをチェックして、前回まで画像に動きがあったか否かを判別する(ステップS108)。CPU206は、前回まで画像に動きがあったと判別した場合(ステップS108;Yes)、静止中モードにセットする(ステップS109)。
続いて、CPU206は、キャリブレーション要求フラグをチェックして、キャリブレーション要求がされている否かを判別し(ステップS110)、キャリブレーション要求がされていると判別した場合には(ステップS110;Yes)、台座登録処理を実行する(ステップS111)。この台座登録処理において、CPU206は、撮影した画像から台座13の輪郭の形状を取得して登録する。このように一度台座13の輪郭の形状の登録が行われると、カメラ部11の台座13に対するあおり角が変動する等、カメラ部11と台座13との位置関係が変動してユーザによりキャリブレーション要求キーが押下されるまで、再度台座13の輪郭の形状の登録が行われることはない。
その後、CPU206は、キャリブレーション要求フラグをクリアして、ステップS103に戻り、再度キャリブレーション要求キーが押下されたかを判別する。ここで、ユーザによりキャリブレーション要求キーが押下されたものと判別した場合には(ステップS103;Yes)、カメラ部11と台座13との位置関係が変動したもの判別し、変動後の台座13の輪郭の形状を登録すべく、ステップS102に戻り、キャリブレーション要求フラグをセットする。そして、CPU206は、ステップS111の台座登録処理を再度実行して、変動後の台座の形状を登録する。
台座13の輪郭の形状の登録がなされた後、ユーザは、原稿4を台座13上に載置して、原稿4の書画投影を行おうとする。ユーザが原稿4をセットするまでの間、CPU206は、撮影により得られた画像データをメモリ201の所定領域にコピーすると共に、この画像データを画像処理装置203にて画像データを圧縮し、インタフェイス装置208を介して、例えば、30フレーム程度の速度でコンピュータ5に送信する。そして、コンピュータ5は、書画カメラ1から転送された画像データにデコード処理等を施して非圧縮データを取得し、撮影された画像をディスプレイ等に表示する。
その後、ユーザが原稿4のセットを終えると、CPU206は、ステップS106にて画像に動きがないと判別し(ステップS106;No)、メモリ201から撮影された画像を読み出し、画像処理装置203にて四角形輪郭抽出処理を実行する(ステップS112)。この四角形輪郭抽出処理において、CPU206は、撮影した撮影対象物の画像から、この撮影対象物の画像の四隅の座標点(四角形輪郭)を抽出する。
続いて、CPU206は、画像変換処理を実行する(ステップS113)。この画像変換処理において、CPU206は、撮影対象の切抜きと正面画像への射影変換とを行う。そして、CPU206は、画像鮮明化処理を実行する(ステップS114)。これらステップS101〜S114の処理により、書画カメラ1は、図3(a)に示すような斜めの状態あるいは回転した状態で撮影された原稿4の画像から、図3(b)に示すような正面から撮影した原稿4の画像を取得する。
その後、CPU206は、画像処理装置203にて画像データを圧縮し、インタフェイス装置208を介してコンピュータ5に送信する(ステップS115)。そして、ユーザによりモードスイッチが書画撮影モードからボード撮影モードに切り替えられると(ステップS116;No)、CPU206は、書画撮影処理を終了する。
続いて、ステップS4のボード撮影処理について詳細に説明する。図9は、ボード撮影処理の詳細を示すフローチャートである。このボード撮影処理において、CPU206は、まず、図9に示すように、インタフェイス装置208、画像処理装置203やメモリ201内の作業メモリの初期化を行う(ステップS121)。CPU206は、ユーザによりシャッタが押されるのを待ち(ステップS122)、シャッタが押されると(ステップS122;Yes)、カメラ部11によりスクリーン3を撮影し、画像データを取得する(ステップS123)。その後、CPU206は、撮影によって得られた画像データをイメージセンサ102からメモリ201に転送する。
続いて、CPU206は、メモリ201から撮影された画像を読み出し、書画撮影処理を行う場合と同様、画像処理装置203にて四角形輪郭抽出処理(ステップS124)と画像変更処理(ステップS125)と画像鮮明化処理(ステップS126)とを順次実行する。その後、CPU206は、画像処理装置203にて画像データを圧縮し、インタフェイス装置208を介してコンピュータ5に送信する(ステップS127)。そして、ユーザによりモードスイッチがボード撮影モードから書画撮影モードに切り替えられると(ステップS128;No)、CPU206は、ボード撮影処理を終了する。
次に、画像処理装置203にて実行される画像処理について説明する。まず、画像処理装置203での画像処理に用いられるアフィン変換についての基本的な考え方(実現方法)を説明する。
画像の空間変換にアフィン変換が幅広く応用されている。本実施形態では、3次元のカメラパラメータを用いずに2次元アフィン変換を用いて射影変換を行う。これは、変換前の座標(u,v)の点が、移動、拡大縮小、回転などの変換によって、変換後の座標(x,y)が次の数1によって関係付けられることになる。射影変換もこのアフィン変換により行われることができる。
最終的な座標(x,y)は、次の数2によって算出される。
数2は、射影変換するための式であり、座標(x,y)は、z'の値に従い、0に向かって縮退する。即ち、z'に含まれるパラメータが射影に影響を及ぼすことになる。このパラメータはa13,a23,a33である。また、他のパラメータは、パラメータa33で正規化されることができるので、a33を1としてもよい。
図10(a)は、図3(a)に示す四角形の撮影対象物(原稿4又はスクリーン3)の各頂点の座標を示した図である。図11は、カメラ部11で撮影された四角形と実際の撮影対象物の画像との関係について説明するための図である。
図11において、U−V−W座標系は、カメラ部11で撮影して得られた画像の3次元座標系である。A(Au,Av,Aw)ベクトルとB(Bu,Bv,Bw)ベクトルとは、3次元座標系U−V−Wにおいて、撮影対象物をベクトルで表したものである。また、S(Su,Sv,Sw)ベクトルは、3次元座標系U−V−Wの原点と撮影対象物との距離を示す。
図11に示す投影スクリーンは、撮影対象物の画像の射影を行うためのものである。投影スクリーン上の座標系を(x,y)とすると、この投影スクリーン上に投影される画像がカメラ部11に撮影される画像と考えればよい。投影スクリーンは、W軸上から距離fだけ離れて垂直に位置するものとする。撮影対象物上の任意の点P(u,v,w)と原点とを直線で結び、その直線と投影スクリーンと交差する点があるものとして、その交点のX−Y座標をp(x,y)とする。このとき、座標pは、射影変換より次の数3によって表される。
数3より、図11に示すように点P0,P1,P2,P3と投影スクリーンへの投影点p0,p1,p2,p3との関係から、次の数4に示す関係が求められる。
このとき、射影係数α、βは次の数5によって表される。
次に、射影変換について説明する。撮影対象物上の任意の点Pは、S,A,Bベクトルを用いて、次の数6によって表される。
この数6に、数4の関係式を代入すると、座標xとyとは、次の数7によって表される。
この関係を、アフィン変換の式に当てはめると、座標(x',y',z')は、次の数8によって表される。
この数8にm,nを代入することにより、撮影画像の対応点(x,y)が求められる。対応点(x,y)は、整数値とは限らないので、画像補間法などを用いて画素の値を求めればよい。
上記m,nは、予め補正画像p(u,v)を出力する画像サイズ(0≦u<umax, 0≦v<vmax)を与えて、その画像サイズに合わせて画像を調整する方法が考えられる。この方法によれば、m,nは次の数9によって表される。
しかし、作成される補正画像の縦横比と撮影対象物の縦横比とは一致しない。ここで、補正画像p(u,v)とm、nの値との関係は、数4から、次の数10によって表される。
カメラパラメータであるレンズの焦点距離fが既知であれば、数10に従って、縦横比kを求めることができる。従って、補正画像p(u,v)の画像サイズを(0≦u<umax, 0≦v<vmax)であるとすると、次の数11に従ってm、nを求めることにより、撮影対象物と同じ縦横比kを得ることができる。
なお、カメラが固定焦点である場合、レンズの焦点距離fの値を、予め得ることができる。ズームレンズ等が存在する場合には、レンズの焦点距離fの値は、レンズのズーム倍率によって変化するので、そのズーム倍率とレンズの焦点距離fとの関係をを示すテーブルを予め作成して記憶し、ズーム倍率に基づいて焦点距離fを読み出し、数10,数11に従って、射影変換を行うことができる。
CPU206は、このようなアフィン変換を行うため、まず、ステップS112及びS124の四角形輪郭抽出処理を実行する。図12は、この四角形輪郭抽出処理の詳細を示すフローチャートである。
この四角形輪郭抽出処理において、CPU206は、まず、図12に示すように、画像処理装置203を制御して、画像処理の演算数を減らすべく、入力画像から縮小輝度画像を生成する(ステップS201)。次に、CPU206は、生成した縮小輝度画像から直線のみの画像を生成し、これを撮影対象物のエッジ画像とする(ステップS202)。続いて、CPU206は、生成したエッジ画像の歪曲収差を補正する(ステップS203)。
続いて、CPU206は、ステップS203にて補正されたエッジ画像をハフ変換してピーク値を抽出することにより、撮影対象物のエッジ画像からこのエッジ画像に含まれている直線パラメータを検出する(ステップS204)。そして、CPU206は、検出した直線パラメータから撮影対象物の輪郭を形成する候補となる四角形を作成する(ステップS205)。
その後、CPU206は、このように候補となる四角形を生成し、生成した各四角形に優先順位を付す(ステップS206)。そして、CPU206は、優先順位に従って四角形を選択し、選択した四角形を抽出できたか否かを判定し(ステップS207)、四角形を抽出できなかったと判定した場合には(ステップS207;No)、四角形輪郭抽出処理を終了する。
一方、四角形を抽出できたと判定した場合には(ステップS207;Yes)、画像処理装置203から抽出した四角形を取得してビデオ出力装置202に送信し、表示装置に四角形のプレビュー画像を表示させる(ステップS208)。
続いて、CPU206は、操作部204から送信された操作情報に基づいて、YESキーとNOキーとのうちいずれのスイッチが押下されたを判別する(ステップS209)。ステップS209にてNOキーが押下されたと判別した場合には(ステップS209;No)、画像処理装置203にて次の候補の四角形を指定する(ステップS210)。
一方、YESキーが押下されたと判別した場合には(ステップS209;Yes)、抽出した四角形の頂点からアフィンパラメータを算出する(ステップS211)。
次に、四角形輪郭抽出処理をさらに具体的に説明する。CPU206が画像処理装置203を用いて生成した縮小輝度画像の一例を図13(a)に示す。画像処理装置203は、このような縮小輝度画像から、Robertsフィルタと呼ばれるエッジ検出用のフィルタを用いて図13(b)に示すようなエッジ画像を生成する(ステップS202)。このRobertsフィルタとは、2つの4近傍画素の重み付けを行って2つのフィルタΔ1,Δ2を取得して平均化することによって、画像のエッジを検出するフィルタである。
図14(a)は、フィルタΔ1の係数を示し、図14(b)は、フィルタΔ2の係数を示す。この2つのフィルタΔ1,Δ2の係数を、ある着目した座標(x,y)の画素値f(x,y)に適用すると、変換後の画素値g(x,y)は、次の数12によって表される。
ステップS202にて生成したエッジ画像において、歪曲収差により直線が抽出できない場合がある。そこで、CPU206は、エッジ画像に対して歪曲収差補正を行う(ステップS203)。元画像ではなくエッジ画像に対して歪曲補正を行うのは、処理の高速化のためである。歪曲補正計算は、調査対象の画素が歪曲補正後には元画像中のどの画素になるかを画素ごとに計算するものである。その際、エッジ画像であれば、調査対象は一定間隔でスキップした座標のみとなり、画素が少ない分、高速に処理を行うことができる。
図13(b)に示すエッジ画像には、直線パラメータが含まれている。画像処理装置203は、このエッジ画像から、ハフ変換を行って直線パラメータを検出する(ステップS204)。
ハフ変換は、X−Y平面上の直線を構成する点を次の数13によって定義されるρ−θ平面に投票する変換である。
各点の座標(x、y)においてθを0から360°まで変化させた場合、同一直線はρ−θ平面上では一点で表される。このため、投票数の多いρ−θ座標を直線と判定することができる。その際、投票数は直線上のピクセル数であり、直線の長さに相当する。したがって、投票数の極端に少ないρ−θ、即ち短い直線は、直線の候補から除外することができる。
このようにハフ変換を用いる手法では、調査対象の点や角度が多ければ多いほど処理速度が低下してしまう。この処理速度の低下を回避するため、エッジ検出時に調査対象の座標をX、Y軸方向双方に一定の間隔でとばして処理することによって、エッジ画像を縮小する。これにより、調査対象を減らすことができる。
さらに、別の方法で調査角度を減らすことができる。即ち、調査対象であるエッジ画像において画像中心を原点とした座標系で考えると、ρはマイナスの値も取ることになるため、角度0≦θ<180°を測定すればよく、残りの180°≦θ<360°はρがマイナスの値を取ることで表現できる。
しかし実際に撮影される四角形は、その四角形が画像の中心にあった場合、各辺が上下左右に存在することになる。したがって、0°≦θ<180°の範囲で調査するより、図15に示すように、上下の辺、左右の辺はそれぞれ次の数14で表される範囲で測定した方が、より効果的である。
また、数14から明らかなように、45°≦θ<135°のcosθと135°≦θ<225°のsinθ、45°≦θ<135°のsinθと135°≦θ<225°のcosθにマイナスをかけたもの、がそれぞれ対応しているため、sinテーブルとcosテーブルとを共用することが可能である。
また、図16(a)に45°≦θ<135°で検出される直線を太線で、図16(b)に135°≦θ<225°で検出された直線を太線で示すように、ρが+の値か−の値かによって、辺の上下、または辺の左右を特定することが可能である。したがって、より効率的に、中心の四角形を構成する辺を選択することができる。
このような考え方に基づいて、CPU206は、直線を検出し、四角形を特定する。なお、この四角形検出処理は、書画撮影のように撮影対象物を真上から撮影するときと、ボード撮影のように撮影対象物に対して書画カメラ1を傾けて撮影するときと、で異なるものとなる。
また、書画撮影処理においてキャリブレーションキーが押下された場合に、この四角形輪郭抽出処理に先立って実行されるステップS111の台座登録処理も上述の考え方に基づいている。まず、この台座登録処理について図17に示すフローチャートを参照して説明する。
この台座登録処理において、CPU206は、まず、図17に示すように、入力画像から縮小輝度画像を生成し、続いて、生成した縮小輝度画像から台座13のエッジ画像を生成する(ステップS221)。次に、CPU206は、エッジ画像をハフ変換して、X−Y平面からρ−θ平面への投票を行う(ステップS222)。なお、書画カメラ1には、ρ−θ平面での台座13の輪郭の形状を示す4本の直線パラメータが予め登録されている。CPU206は、この直線パラメータの設計値を台座13の輪郭の形状を示すものとしてメモリ201に登録する(ステップS223)。
続いて、CPU206は、エッジ画像をハフ変換することにより得られたデータから、ピーク値を抽出することによって、実際に撮影された台座13のエッジ画像に含まれている直線パラメータを検出する(ステップS224)。
そして、CPU206は、ステップS224にて直線パラメータが検出されたか否かを判別し(ステップS225)、直線パラメータが検出された場合には(ステップS225;Yes)、メモリ201に登録されている直線パラメータを、設計値から、この検出した直線パラメータ(実測値)に書き換える(ステップS226)。これにより、メモリ201には、直線パラメータの実測値が台座13の輪郭の形状を示すものとして登録される。
一方、直線パラメータが検出されなかった場合には(ステップS225;No)、ステップS226をスキップし、そのまま台座登録処理を終了する。このため、メモリ201には、直線パラメータの設計値が台座13の輪郭の形状を示すものとして登録されたままとなる。
なお、小さい原稿4を投影する場合や原稿4の一部分を拡大して撮影する場合、CPU206は、ステップS104のズーム処理にてカメラ部11のズームをアップする。これに伴ってカメラ部11によって撮影される台座13の画像が拡大するため、CPU206は、上述の台座登録変更処理にて、メモリ201に登録されている直線パラメータを調整する必要がある。図18は、この台座登録変更処理の詳細を示すフローチャートである。
この台座登録変更処理において、CPU206は、図18に示すように、まず、ステップS104のズーム処理にてカメラ部11のズームが変更されたか否かを判別する(ステップS231)。ステップS231にてカメラ部11のズームが変更されたと判別した場合には(ステップS231;Yes)、ズーム処理前とズーム処理前とでのカメラ部11のズーム比を求め、求めたズーム比に応じて、メモリ201に登録されている直線パラメータを調整する(ステップS232)。具体的には、ズーム処理前とズーム処理後とでのカメラ部11のズーム比が「2」である場合、CPU206は、メモリ201に登録されている直線パラメータの各値をそれぞれ2倍する。
一方、ステップS231にてカメラ部11のズームが変更されていないと判別した場合(ステップS231;No)、CPU206は、ステップS232をスキップして、台座登録変更処理を終了する。
このように、ズーム処理にてカメラ部11のズームが変更された場合、ズーム処理前とズーム処理前とでのカメラ部11のズーム比に応じて、直線パラメータを調整することにより、CPU206は、図17に示す台座登録処理にて登録した台座13の輪郭の形状を変更することができる。なお、調整後の直線パラメータが画像の画角を超える場合には、画角を超える直線パラメータを候補から外してもよい。また、画角を超える直線パラメータをそのままメモリ201に書き込んでもよい。このようにしても、CPU206がこの画角を超える直線パラメータをステップS224にて検出することはないため、処理上問題は生じない。
次に、書画撮影する場合の四角形検出処理(書画撮影時四角形検出処理)について、図19に示すフローチャートを参照して説明する。この書画撮影時四角形検出処理において、CPU206は、まず、図19に示すように、入力画像から縮小輝度画像を生成し、続いて、生成した縮小輝度画像から原稿4のエッジ画像を生成する(ステップS301)。次に、CPU206は、エッジ画像をハフ変換して、X−Y平面からρ−θ平面への投票を行う(ステップS302)。
そして、CPU206は、45°≦θ<135°における投票が多い座標を、上下の辺を形成する直線パラメータの候補として複数取得する(ステップS303)。同様に、CPU206は、135°≦θ<225°における投票が多い座標を、左右の辺を形成する直線パラメータの候補として複数取得する(ステップS304)。
続いて、CPU206は、ステップS303及びS304にて取得した候補のうちから、メモリ201に登録されている台座13の輪郭を形成する直線パラメータに近い直線パラメータを検出し、検出した直線パラメータを候補から外す(ステップS305)。具体的には、台座13の輪郭を形成する直線パラメータとの差が、ρにおいて0〜2,3画素程度、θにおいて0〜2°程度の直線パラメータを候補から外す。
そして、CPU206は、ステップS305にて残ったX軸方向の候補とY軸方向の候補とのうちから、ρの値の+−が異なり、θが所定範囲内にあるものを選択する(ステップS306)。具体的には、ρの値の+−が異なり、且つθの差が±10°程度の2本の直線パラメータを検出し、さらに、これら検出した直線パラメータとのθの差が90°±10°程度で、且つρの値の+−が異なる2本の直線パラメータを検出する。そして、CPU206は、図20(a)に示すように、これら検出された4本の直線パラメータによって形成される四角形を、撮影した原稿4の四角形として取得する。このようにして、CPU206は、エッジ画像から四角形を検出することができる。
CPU206は、ステップS306にて四角形が検出されたか否かを判別し(ステップS307)、四角形が検出されたと判別した場合(ステップS307;Yes)には、ステップS310に進む。
一方、ステップS307にて四角形が検出されなかったと判別した場合(ステップS307;No)、CPU206は、ステップS305にて外した直線パラメータを含めて、再度、X軸方向の候補とY軸方向の候補とのうちから、ρの値の+−が異なり、θが所定範囲内にあるものを選択して、エッジ画像から四角形を検出する(ステップS308)。
CPU206は、さらに、ステップS308にて四角形が検出されたか否かを判別する(ステップS309)。ステップS307又はS309にて四角形が検出されたと判別された場合(ステップS307;Yes,ステップS309;Yes)、CPU206は、検出した原稿4の四角形の各頂点の座標を求める(ステップS310)。
一方、ステップS309にて四角形が検出されなかったと判別された場合(ステップS309;No)、CPU206は、メモリ201に登録されている台座13の四角形の各頂点の座標を求める(ステップS311)。
次に、ボード撮影を実行する場合における四角形検出処理(ボード撮影時四角形検出処理)について、図21に示すフローチャートを参照して説明する。なお、図21に示すボード撮影時四角形検出処理におけるステップS311〜S314までの処理は、図19に示す書画撮影時四角形検出処理におけるステップS301〜S304までの処理と同様であるため、ここではその説明を省略する。
CPU206は、ステップS314にて取得したX軸方向の候補とY軸方向の候補とのうちから、ρの絶対値|ρ|が等しいもの同士を特定し、その絶対値が大きいものから順に優先度を設定する(ステップS315)。これは、スクリーン3を斜めから撮影する場合に、相対する辺が平行とは限らないためである。上下左右の辺を|ρ|の絶対値の大きなもの同士に特定することで、図20(b)において太線で示すような、面積が最大である領域を特定するための直線の優先順位を得ることができる。
CPU206は、前述した最大領域を構成する四角形を、撮影したスクリーン3の四角形として特定する(ステップS316)。
次に、ステップS106にて実行される画像の動きの判別処理について説明する。CPU206は、撮影モードの切り替えを行うため、原稿4の画像に動きがあるか否かを判定する。CPU206は、このような判定を行うため、前回撮影した画像との画像変化量MDを求める。画像変化量MDは撮影している画像が前回の画像と比較してどれぐらい変化したかを表す量である。この量を計算する方法はいくつか考えられるが、この撮影画像投影装置では、前回撮影した画像のデータから、各画素の差分の絶対値の総和を画像変化量MDとして求めている。
即ち、前回の画素データをPn-1(x,y)、今回の画素データをPn(x,y)(1≦x≦640,1≦y≦480)とすると、画像変化量MDは、次の数15によって表される。
また、この画像変化量MDと比較して動きの有無を判定するための閾値として、数16に示す閾値MDTHが予め設定される。撮影画像投影装置は、画像変化量MDが閾値MDTH未満であれば動きがないと判別し、閾値MDTH以上であれば動きがあると判別する。
次に、この検出された原稿4又はメモリ201に登録されている台座13の四角形から、アフィンパラメータを求める方法について説明する。検出された原稿4又は登録されている台座13の四角形の4点の頂点の座標(x0,y0),(x1,y1),(x2,y2),(x3,y3)を用いて、数5,数8に従って、数8に示す行列内の各要素であるアフィンパラメータを求めることができる。
この際、m,nのスケールは0≦m≦1,0≦n≦1の範囲であるので、座標単位の修正を行う。画像の中心を変えずに、U軸側、V軸側の画像サイズを、それぞれUsc,Vscでスケーリングするものとする。このとき画像の中心をuc,vcとすると、画像のスケール変換は次の数17によって表される。
この数17をu,vスケールに書き直すと、変換後の四角形の座標(x',y',z')は次の数18によって表される。
ここで、Afは、アフィン変換行列であり、アフィン変換行列Afは次の数19によって表される。
出力可能な最大画像(画面)サイズが(umax,vmax)で与えられている場合、uc,vcは、次の数20によって表される。
また、vmax/umax>kのとき、vmax/umax≦kのときは、それぞれ、次の数21,数22に従って画像のスケーリングを行うと、所望の縦横比kの画像が得られる。
このような考え方に基づいて、CPU206は、四角形の頂点からアフィンパラメータを算出する。図22は、このアフィンパラメータ抽出処理の詳細を示すフローチャートである。
CPU206は、四角形の4点の頂点座標(x0,y0),(x1,y1),(x2,y2),(x3,y3)から、数5に従って、射影係数α、βを算出する(ステップS321)と共に、原稿4の縦横比kを算出する(ステップS322)。
次に、CPU206は、数20に従って、画像の中心点(uc,vc)を指定し(ステップS323)、最大画像サイズvmax/umaxと数12で表される縦横比kとを比較する(ステップS324)。
vmax/umax>kの場合(ステップS324;Yes)、縦横比kを変えないものとして、CPU206は、V軸側(縦)の最大画像サイズvmaxの方が撮影対象物の画像サイズよりも大きいと判定する。そして、CPU206は、U軸側の最大画像サイズと撮影対象物の画像サイズとが一致するように、数21に従ってusc,vscを求め、V軸側の撮影対象物の画像のスケールを決定する(ステップS325)。
vmax/umax≦kの場合(ステップS324;No)、縦横比kを変えないものとして、CPU206は、U軸側(横)の最大画像サイズumaxの方が撮影対象物の画像サイズよりも大きいと判定する。そして、CPU206は、V軸側の最大画像サイズと撮影対象物の画像サイズとが一致するように、数22に従って、usc,vscを求め、U軸側の撮影対象物の画像のスケールを決定する(ステップS326)。
続いて、CPU206は、算出したusc,vsc,uc,vcと四角形の4点の頂点座標(x0,y0),(x1,y1),(x2,y2),(x3,y3)から、数19に従って、アフィン変換行列Afを求め(ステップS327)、このアフィン変換行列Afの各要素をアフィンパラメータAとして、このアフィンパラメータAを取得する(ステップS328)。
次に、得られたアフィンパラメータを用いて補正画像を作成する画像処理方法について説明する。まず、アフィンパラメータを用いて射影変換や他のアフィン変換を行なう場合、図23に示すように、元の画像の点p(x,y)が、変換行列Apによる射影変換等によって変換(後)画像の点P(u,v)に対応するものとする。この場合、元の画像の点pに対応する変換画像の点Pを求めるよりは、変換画像の点P(u,v)に対応する元の画像の点p(x,y)を求めたほうが好ましい。
なお、変換画像の点Pの座標を求める際、バイリニア法による補間方法を用いるものとする。バイリニア法による補間方法は、一方の画像(元の画像)の座標点と対応する他方の画像(変換画像)の座標点を探し出して、一方の画像の座標点の周辺4点の(画素)値から変換画像の点P(u,v)の(画素)値を求める方法である。この方法によれば、変換画像の点Pの画素値Pは、次の数23に従って算出される。
変換画像の点P(u,v)に対応する元の画像の点p(x,y)を求めるため、CPU206は、画像変換処理を実行する。図24は、この画像変換処理の詳細を説明するためのフローチャートである。
CPU206は、変換画像の画素位置uを0に初期化すると共に(ステップS241)、変換画像の画素位置vを0に初期化する(ステップS242)。
次に、CPU206は、数19で得られたアフィンパラメータAを用いて、変換画像の画素位置(u,v)を代入し、数2に従って、元の画像の画素位置(x,y)を求める(ステップS243)。続いて、CPU206は、求めた画素位置(x,y)から、数23に従って、バイリニア法により画素値P(u,v)を求める(ステップS244)。
そして、CPU206は、補正後画像の座標vを1つだけインクリメントする(ステップS245)。
続いて、CPU206は、補正後画像の座標vと座標vの最大値vmaxとを比較して、補正後画像の座標vが最大値vmax以上になったか否かを判定し(ステップS246)、座標vが最大値vmax未満であると判定した場合(ステップS246;No)、ステップS243に戻る。
その後、CPU206は、ステップS243〜S245の処理を繰り返し、座標vが最大値vmaxに達したと判定した場合(ステップS246;Yes)、補正後画像の座標uを1つだけインクリメントする(ステップS247)。
続いて、CPU206は、座標uと座標uの最大値umaxとを比較し、座標uが最大値umax以上になったか否かを判定し(ステップS248)、座標uが最大値umax未満であると判定した場合(ステップS248;No)、ステップS242に戻る。
その後、CPU206は、ステップS242〜S247の処理を繰り返し、座標uが最大値umaxに達したと判定した場合(ステップS248;Yes)、この画像変換処理を終了させる。
次に、このように得られた画像から、画像鮮明化パラメータを抽出する処理と、このパラメータを用いて行う画像鮮明化処理と、について説明する。画像鮮明化処理は、より鮮明な画像を得るための処理である。
画像鮮明化パラメータは、輝度ヒストグラムの最大値、最小値、ピーク値、色差ヒストグラムのピーク値、平均値といった画像鮮明化処理に必要な変数である。
画像鮮明化パラメータを抽出するには、さらに、全体の画像から輪郭を除く実原稿部の画像を切り出し、輝度、色差のヒストグラムを生成する必要がある。まず、画像鮮明化パラメータの抽出に必要な処理について説明する。
図25に示すように、撮影対象物の画像には、写真、図形、文字等の実体的な画像だけでなく、台座13や、撮影対象物の紙面の影等のように、撮影対象物の内容に無関係の画像も写っている場合がある。この全体画像に内枠と外枠とを設定し、撮影対象物の実体的な画像がある内枠内を実原稿部、台座13や、撮影対象物の紙面の影等が写っている内枠と外枠との間を周辺部とする。周辺部に写っている撮影対象物の輪郭は、概して黒であることが多い。画像データに、このような周辺部のデータがあった方が好ましい場合もある。
しかし、撮影対象物の周辺部の画像も含めてヒストグラムを生成すると、ヒストグラムの引き伸ばしなどが有効に機能しない場合がある。
このため、画像鮮明化パラメータを取り出すときにのみ、実原稿部の画像を切り出して輝度、色差のヒストグラムを生成し、このヒストグラムから取り出した画像鮮明化パラメータを用いて画像全域に対して画像鮮明化処理を行なうものとする。この方が、より効果的なパラメータを取得することができる。
具体的には、周辺部を含めた画像データがM行N列であって、X、Y方向とも外枠と内枠との間のドット数がKドットであるとすると、X軸側では、実原稿部の画素データであるKからM−K行までの画素データを取得し、Y軸側では、実原稿部の画素データであるKからN−K列までの画素データを取得する。実原稿部の画素データは、(M-2*K)行、(N-2*K)列のデータになる。
このように切り出した実原稿部の画像について、輝度ヒストグラム、色差ヒストグラムを生成する。
輝度ヒストグラムは、実原稿部に存在する輝度値(Y)の分布を示すものであり、輝度値毎に実原稿部の画素の数を計数することにより生成される。図26(a)に輝度ヒストグラムの一例を示す。図26(a)において、横軸は、輝度値(Y)を示し、縦軸は、画素数を示す。画像を鮮明化するには、画像鮮明化パラメータとして、最大値(Ymax)、最小値(Ymin)、ピーク値(Ypeak)を求める必要がある。
最大値は、輝度値毎に画素の数を計数し、予め設定された所定数以上の計数値を有する輝度値のうちの最大輝度を示す値であり、最小値は、設定された所定数以上の計数値を有する輝度値のうちの最小輝度を示す値である。ピーク値は、計数値が最大となる輝度値である。ピーク値は、撮影対象である原稿4やスクリーン3の背景色の輝度値を示すものと考えられる。
また、色差ヒストグラムは、実原稿部に存在する色差(U,V)の分布を示すものであり、色差毎に実原稿部の画素の数を計数することにより生成される。図26(b)に、色差ヒストグラムの一例を示す。図26(b)において、横軸は、色差を示し、縦軸は、画素数を示す。色差ヒストグラムの場合も、画素の計数値が最大となる色差のピーク値(Upeak,Vpeak)が現れる。このピーク値も撮影対象物の背景色の色差を示すものと考えられる。画像を鮮明化するには、画像鮮明化パラメータとして色差ヒストグラムのピーク値と平均値(Umean,Vmean)とを求める必要がある。なお、平均値は、平均計数値を有する色差の値である。
なお、画像を鮮明化して視認性に優れた画像を得るには、撮影対象物の背景色によって補正効果が異なってくるため、画像効果の補正方法を撮影対象物の背景色によって変える必要がある。このため、撮影対象物の背景色の判別が必要になってくる。撮影対象物の背景色は、輝度ヒストグラム、色差ヒストグラムの各ピーク値から判別される。
ここで、撮影対象物の背景色を、3つに分類するものとする。第1は、ホワイトボード、ノート等のように背景色が白の場合である。第2は、黒板等のように背景色が黒の場合である。第3は、雑誌、パンフレットのように背景色が白又は黒以外の場合である。具体的に、原稿4の背景色は、以下の判別式に従って判別される。
白判定条件は、次の数24によって表され、数24に示す条件を満足したときに、撮影対象物の背景色は白(W)と判定される。
黒判定条件は、次の数25によって表され、数25に示す条件を満足したときに、撮影対象物の背景色は黒(B)と判定される。
また、数24,数25に示す条件を満足しなかった場合、撮影対象物の背景色はカラー(C)と判定される。なお、カラー閾値は、例えば、50及び128に、白判定閾値は、例えば、128に、黒判定閾値は、例えば、50に設定される。
このような考え方に基づいて、CPU206は、画像鮮明化パラメータ抽出処理を実行する。図27は、この画像鮮明化パラメータ抽出処理の詳細を示すフローチャートである。
CPU206は、実原稿部の中で、各輝度(Y)値を有する画素の数を計数して、図26(a)に示すような輝度ヒストグラムを生成し(ステップS331)、生成した輝度ヒストグラムから、輝度の最大値(Ymax)、最小値(Ymin)、ピーク値(Ypeak)を取得する(ステップS332)。
次に、CPU206は、図26(b)に示すような色差(U,V)のヒストグラムを作成する(ステップS333)。続いて、CPU206は、画像鮮明化パラメータとして、色差(U,V)のピーク値(Upeak,Vpeak)を求めると共に(ステップS334)、色差の平均値(Umean,Vmean)を求める(ステップS335)。
そして、CPU206は、画像ヒストグラムのこれらのピーク値(Ypeak,Upeak,Vpeak)から、数24,数25に示す判定条件式に従って撮影対象物の背景色を判別し(ステップS336)、画像鮮明化パラメータと撮影対象物の背景色のデータとをメモリ201に記憶する(ステップS337)。
次に、CPU206は、このように抽出した画像鮮明化パラメータを用いて画像鮮明化処理を行う。前述のように、画像鮮明化処理を効果的に行うには、背景色によって処理内容を替える必要がある。
ホワイトボード、ノート等のように、背景色が白である場合、図28(a)に示すような輝度変換を行う。黒板等のように、背景色が黒である場合、図28(b)に示すような輝度変換を行う。雑誌、パンフレット等のように、背景色が白または黒以外である場合、図28(c)に示すような変換を行う。なお、図28(a),(b),(c)において、横軸は、画素値の入力値を示し、縦軸は、画素値の出力値を示す。
背景色が白である場合、図28(a)に示すように、ピーク値を境にして、輝度変換線の傾斜角度を変える。所定輝度値を、例えば、230として、入力された輝度のピーク値を輝度値230まで引き上げる。そして、最大値を、最大輝度まで持ち上げる。従って、輝度変換線は、図28(a)に示すように、2つの線分によって表される。
背景色が黒である場合、図28(b)に示すように、ピーク値をある一定の輝度値(20)になるように輝度変換を行なう。この場合も、図28(b)に示すように、輝度変換線は2つの線分によって表される。
背景色が白または黒以外の色である場合、図28(c)に示すように、通常の引き伸ばし処理と同様に、最小値以下と最大値以上をカットし、1つの線分として表されるように輝度変換線を設定する。
なお、このように背景の輝度(Y)と出力(Y’)との変換テーブルを予め設定してメモリ201に記憶してもよい。作成した変換テーブルに従って、入力された各画素の値から、それぞれの出力値を求め、画像鮮明化処理を施す。このように変換された画像は、明るい画素はより明るく、暗い画素はより暗くなるので、輝度分布が広がり、視認性がすぐれた画像になる。
また、撮影された画像によっては、デジタルカメラのホワイトバランスの調整が適正に行われず、例えば、全体が黄色等に色が変わってしまう場合がある。この色の変化は、輝度ヒストグラムの画像鮮明化処理を行うだけでは、修正することができない。
この場合、好ましい画像を得るためには、カラー調整を行う。図29は、カラー調整を行うための輝度変換グラフの一例を示す図である。図29において、横軸は、色差の入力値を示し、縦軸は、色差の出力値を示す。カラー調整は、図28(b)に示す色差(U,V)のそれぞれの平均値(Umean,Vmean)がグレーになるように、図29に示す輝度変換グラフに従って輝度変換が行なわれる。
色差UとVの値がともに0である場合、色は無彩色となるため、ピーク値(Upeak,Vpeak)が0になるようにカラー調整を行う。即ち、カラーの変換線は2つの線分によって表される。入力値Uに対する出力値U’は次の数26で与えられる。
色差Vについても同様である。
次に、画像鮮明化処理として、前述の輝度引き延ばしだけでは、十分に背景が白色化しない場合、背景の白色化を行い、画像内の背景と思われる部分の色を白(Y:255,U:0,V:0)または、それに近い色にする。
図30(a)は、ある画素の輝度値を基準(0)にして、この画素の輝度値に対する輝度値の引き上げ率を示す図である。横軸は、輝度値を示し、縦軸は輝度値の引き上げ率を示す。また、図30(b)は、色差と色差の変化率を示す図である。横軸は、色差を示し、縦軸は、色差の変化率を示す。
図中、C0は、輝度と色差とを100%引き上げる0からの範囲を示し、C1は、輝度値に従って引き上げ率を可変する範囲を示す。図30(a),(b)に示すように、輝度(Y)値が一定値以上(Yw)で、色差(U,V)が一定範囲内(C0)の画素の色を白色化範囲として、輝度値を引き上げ、色差を0にする。このような背景の白色化を行えば、輝度引き延ばしだけでは、十分に背景が白色化しない場合に、画像鮮明化処理が非常に有効なものとなる。
このような考え方に基づいて、CPU206は、画像鮮明化処理を実行する。図31は、この画像鮮明化処理の詳細を示すフローチャートである。
CPU206は、保存した画像鮮明化パラメータをメモリ201から読み出す(ステップS251)。
次に、CPU206は、輝度ヒストグラムの調整を行う(ステップS252)。具体的には、CPU206は、背景が白か否かを判定し、背景が白と判定した場合、背景をより白くして、視認性が良くなるように、図28(a)に示すような輝度変換を行って、輝度ヒストグラムの調整を行う。一方、背景が白ではないと判定した場合、CPU206は、背景が黒か否かを判定し、背景が黒であると判定した場合、図28(b)に示すような輝度変換を行って、輝度ヒストグラムを調整する。一方、背景が黒ではないと判定した場合、CPU206は、図28(c)に示すような輝度変換を行って、撮影対象物の背景色に応じたヒストグラム調整を行う。
続いて、CPU206は、このように調整した画像に対して、図25に示すような変換を行ってカラー調整を行い、(ステップS253)、続いて、背景の白色化処理を実行する(ステップS254)。
図32は、CPU206が行う背景の白色化処理の詳細を示すフローチャートである。なお、図中のimax,jmaxは入力画像のx,y軸のサイズである。
この背景白色化処理において、CPU206は、まず、カウント値jを0に初期化すると共に(ステップS341)、カウント値iを0に初期化する(ステップS342)。次に、CPU206は、入力画像の画素(i,j)の輝度(Y)が一定値以上(Yw)であるか否かを判定する(ステップS343)。
輝度(Y)が一定値以上(Yw)であると判定した場合(ステップS343;Yes)、CPU206は、色差U、Vの絶対値が所定値C0未満であるか否かを判定する(ステップS344)。一方、輝度(Y)が一定値未満(Yw)であると判定した場合(ステップS343;No)、CPU206は、ステップS348に進む。
色差U、Vの絶対値が所定値C0未満ではないと判定した場合(ステップS344;No)、CPU206は、入力画像の画素(i,j)の色差U、Vの絶対値が所定値C1未満であるか否かを判定する(ステップS345)。
ステップS344及びS345にて色差U、Vの絶対値が所定値C0未満であると判定した場合(ステップS344;Yes)、CPU206は、輝度値(Y)を255に設定し、色差(u,v)を0にして、画素(i,j)の値を書き換え(ステップS346)、ステップS348に進む。
ステップS344及びS345にて色差U、Vの絶対値が所定値C0以上であり、且つ所定値C1未満であると判定した場合(ステップS344;No,ステップS345;Yes)、CPU206は、輝度値Y=Y+a*(255−Y)として、画素(i,j)の値を書き換え(ステップS347)、ステップS348に進む。
ステップS344及びS345にて色差U、Vの絶対値が所定値C1以上であると判定した場合(ステップS344;No,ステップS345;No)、CPU206は、輝度値を変更せずに、ステップS348に進む。
そして、CPU206は、カウント値iをインクリメントする(ステップS348)。続いて、CPU206は、カウント値iを最大値imaxと比較して、カウント値iが最大値imaxに達したか否かを判定する(ステップS349)。
カウント値iが最大値imaxに達していないと判定した場合(ステップS349;No)、CPU206は、ステップS343に戻る。
その後、ステップS343〜S348の処理を繰り返し実行し、カウント値iが最大値imaxに達したと判定した場合(ステップS349;Yes)、CPU206は、カウント値jをインクリメントする(ステップS350)。
続いて、CPU206は、カウント値jを最大値jmaxと比較して、カウント値jが最大値jmaxに達したか否かを判定する(ステップS351)。
カウント値jが最大値jmaxに達していないと判定した場合(ステップS351;No)、CPU206は、ステップS342に戻る。
その後、ステップS342〜S350の処理を繰り返し実行し、カウント値jが最大値jmaxに達したと判定した場合(ステップS351;Yes)、CPU206は、この背景の白色化処理を終了させる。
以上説明したように、本実施形態によれば、CPU206は、台座13上の原稿4を撮影することにより得られた画像からエッジ画像を生成し、この生成したエッジ画像から原稿4の輪郭を形成する四角形を検出する。次に、CPU206は、エッジ画像から原稿4の四角形を検出できたか否かを判別し、検出できたと判別された場合には、この検出した原稿4の四角形の各頂点の座標を求める。一方、検出できなかったと判別された場合には、メモリ201に登録されている台座13の輪郭を形成する四角形の各頂点の座標を求める。
そして、CPU206は、求めた四角形の各頂点の座標からアフィンパラメータを取得し、この取得したアフィンパラメータを用いて、撮影画像の各画素の座標をアフィン変換して、撮影画像の傾きを補正する。
例えば図3(a)に示すように原稿4が画角(撮影範囲)に収まっている場合、CPU206は、エッジ画像から原稿4の四角形を検出することができるので、この検出した四角形(原稿4の輪郭)に沿って画像の切出を行う。そして、CPU206は、切り出した画像に対して傾きの補正や画像鮮明化処理を施した後、出力する。この結果、スクリーン3上には、図3(b)に示すような画像が投影される。
一方、図33(a)に示すように原稿4が画角からはみ出している場合、CPU206は、原稿4の四角形を検出することができないので、メモリ201に登録されている四角形(台座13の輪郭)に沿って画像の切出を行う。そして、CPU206は、切り出した画像に対して傾きの補正や画像鮮明化処理を施した後、出力する。この結果、スクリーン3上には、図33(b)に示すような画像が投影される。
このように、原稿4が画角に収まっている場合、この原稿4の輪郭に沿って画像の切出が行われ、画角からはみ出している場合、台座13の輪郭に沿って画像の切出が行われる。このため、CPU206は、撮影した原稿4の画像が画角からはみ出しているときでも、カメラ部11のズーム倍率を小さくする必要がないので、撮影画像全体に占める原稿4の割合を大きくすることができ、切り出されてスクリーン3上に投影される画像も大きくなる。この結果、本実施形態の撮影画像投影装置は、視認性に優れた画像をスクリーン3上に投影することができる。
また、撮影画像が歪んでいる場合であっても、上述のように撮影画像全体に占める原稿4の割合を大きくすることができるので、本実施形態に係る撮影画像投影装置は、この撮影画像の輝度及び色差を適正に補正することができ、この結果、スクリーン3上に投影される画像の視認性をさらに高めることができる。
また、カメラ部11は、図34(a)に示すように、台座13上に載置された原稿4を真上から撮影するが、ライトの映込等がある場合には、図34(b)に示すように、少し斜めの位置から撮影を行って、ライトの映込を軽減する。
図35(a)は、原稿4を真上から撮影した場合に得られる画像例を示すものであり、図35(b)は、原稿4を少し斜めの位置から撮影した場合に得られる画像例を示すものである。
CPU206は、図35(a)及び(b)に示すいずれの撮影画像からも、上記手法で原稿4の輪郭を抽出して原稿4の画像を切り出すことにより、図3(b)に示すような画像を取得することができる。この結果、本実施形態に係る撮影画像投影装置は、ライトの映込による影響を受けにくいものとなる。さらに、本実施形態に係る撮影画像投影装置は、原稿4が画角からはみ出している場合でも、台座13の輪郭を抽出して画像の切出を行うことにより、同様の効果を得ることができる。
さらに、カメラ部11の台座13に対するあおり角が変動する等してカメラ部11と台座13との位置関係が変動した場合に、ユーザがキャリブレーション要求キーを押下すると、CPU206は、台座13を撮影することによって得られた画像から、台座13の輪郭を形成する直線パラメータの組を検出してメモリ201に登録する。これにより、カメラ部11と台座13との位置関係が変動した場合、CPU206は、これに併せて、メモリ201に登録している直線パラメータの組を順次更新していくことができる。このように順次更新される直線パラメータの組を用いて、撮影画像からの原稿4の画像の切出と傾き補正とを行うことにより、本実施形態に係る撮影画像投影装置は、カメラ部11と台座13との位置関係が変動した場合であっても、撮影画像から原稿4の正面画像を適切に取得することができる。
なお、本発明は、上記実施形態に限定されず、種々の変形、応用が可能である。以下、本発明に適用可能な上記実施形態の変形態様について、説明する。
上記実施形態において、支柱12は、カメラ部11及び台座13と回転自在に接続されていた。しかしながら、本発明は、これに限定されず、支柱12がカメラ部11及び台座13と固定して接続されていてもよく、また、ノッチ機構などによって予め決められた位置にロックされるように接続されていてもよい。このように、カメラ部11と台座13との位置関係が予め定まっている場合には、ステップS111の台座登録処理を省略して、それぞれ位置関係に対応した直線パラメータの組をメモリ201に登録し、位置関係が変動する毎に使用する直線パラメータの組を順次切り替えていけばよい。
また、上記実施形態において、CPU206は、ステップS111の台座登録処理にてメモリ201に格納されている台座13の輪郭を形成する直線パラメータに近い直線パラメータを、ステップS303及びS304にて取得した候補から、外していた。しかしながら、本発明は、これに限定されず、CPU206は、ステップS301にて得られたエッジ画像から、台座13の輪郭を形成する直線パラメータを予め外しておき、ステップS303及びS304にて候補として検出されないようにしてもよい。また、CPU206は、図36に示すように、台座13の輪郭よりも少し内側の画像を切り出し、その切り出した画像から、四角形を検出してもよい。
さらに、上記実施形態において、原稿4の輪郭の形状は、四角形であった。しかしながら、本発明は、これに限定されず、原稿の形状は、任意であり、例えば五角形であってもよい。この場合、撮影画像投影装置は、原稿4の輪郭から五角形を取得し、五角形の各頂点座標から射影パラメータを抽出すればよい。
また、上記実施形態において、画像処理処理は、撮影画像投影装置に適用されていたが、本発明は、これに限定されるものではなく、デジタルカメラ等、他の撮影装置に適用してもよい。
さらに、上記実施形態において、CPU236等が実行するプログラムは、予めROM等に記憶されていた。しかしながら、本発明は、これに限定されず、コンピュータを、装置の全部又は一部として動作させ、あるいは、上述の処理を実行させるためのプログラムを、フレキシブルディスク、CD−ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
また、プログラムを記憶する記憶媒体は、上述のものに限定されず、例えば、Blue−Ray−Disc(R)やAOD(Advanced Optical Disc)などの青色レーザを用いた次世代光ディスク記憶媒体、赤色レーザを用いるHD−DVD9、青紫色レーザを用いるBlue−Laser−DVD等、今後開発される種々の大容量記憶媒体を用いて本発明を実施することが可能であることはいうまでもない。
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。