〔実施の形態1〕
本発明の画像処理装置に関する実施の一形態について図1〜図5に基づいて説明すれば以下のとおりである。
図1のブロック図に、本発明の実施の一形態に係る画像処理装置3を備えたデジタル複写機(画像形成装置)1の構成を示す。図1に示されるように、デジタル複写機1は、画像入力装置(画像読出手段)2、画像処理装置3、および画像出力装置4を構成している。
画像入力装置2は、図示しない原稿載置台上の原稿の画像を読み取るためのものであり、原稿面上に露光するランプリフレクターアセンブリ(図示しない)と、原稿からの反射光像を光電変換素子であるCCD21に導くための反射ミラーを搭載する第1の走査ユニット(図示しない)と、第1の反射ミラーからの反射光像をCCD21に導くための反射ミラー(図示しない)と、原稿からの反射光像を上述した各反射ミラーを介してCCD21上に結像させるための光学レンズ(図示しない)と、4チャンネルのCCD21と、CCD21の駆動を制御するCCD制御部(図示しない)とから構成される。
第1の走査ユニットは、原稿載置台に沿って左から右へと一定速度Vで走行される。これにより、原稿載置台上に載置された原稿画像の反射光は、1ライン毎に順次CCD21へと導かれる。
CCD21は、原稿の1ライン毎の反射光を受光する1ライン分の複数の画素を備えている。各画素には、原稿からの反射光を受光し、光量を読み取り、読み取った光量に応じた電気信号(画像データ、以下単にデータと呼ぶ)を発生する受光素子が備えられている。CCD21は、生成したデータを画像処理装置3へと出力する。なお、本実施形態では、1ライン分の画素数は7400であるとしたが、これに限られるものではない。
また、1ラインの各画素を、画素0001,画素0002,…,画素7400としており、この順をライン正順とする。また、該ラインの正順に対して逆の順序をライン逆順とする。
CCD21は、1ラインの画素の両端(すなわち、画素0001および画素7400)から奇数番目の画素と偶数番目の画素とに分けて原稿からの反射光の光量を読み取り、読み取った光量に応じてデータを順次生成する4つのチャンネルch1〜4を備えている。CCD21は、生成したデータを画像処理装置3に順次出力する。
ここで、1ライン分の画像データがCCD21から画像処理装置3に対して出力開始される時点は、CCD制御部により制御される水平同期信号HSYNC(horizontal synchronization signal)であるCCD HSYNCに基づいている。また、CCD21が各画素に対応するデータを出力する周期は、CCD制御部によるCCD駆動クロック信号に基づいている。
ch1は、最初の画素0001から奇数番目の画素である、画素0001,画素0003,…,画素3699に対応する各データを正順に画像処理装置3へ出力する。ch2は、最初の画素0001から偶数番目の画素である、画素0002,画素0004,…,画素3700における各データを正順に画像処理装置3へ出力する。ch3は、最後の画素7400から奇数番目の画素である、画素7399,画素7397,…,画素3701における各データを逆順に画像処理装置3へ出力する。ch4は、最後の画素7400から偶数番目の画素である、画素7400,画素7398,…,画素3702における各データを逆順に画像処理装置3へ出力する。
すなわち、ch1およびch2は、画素0001〜画素3700に対応する前半データ列(第1のデータ列)を出力し、ch3およびch4は、画素7400〜画素3701に対応する後半データ列(第2のデータ列)を出力する。
また、CCD制御部は、上記CCD HSYNCおよびCCD駆動クロック信号を画像処理装置3に出力する。
画像処理装置3は、2つの増幅器31,32と、2つのA/D変換器33,34と、整列部35と、遅延部36と、画像処理部61とを備えている。
増幅器31,32は、CCD21から出力されるデータレベルをA/D変換に適したレベルにまで増幅するためのものである。増幅器31にはch1およびch2から出力されるデータが入力され、増幅器31は、該データレベルを増幅して、後段に出力する。また、増幅器32にはch3およびch4から出力されるデータが入力され、増幅器32は、該データレベルを増幅して、後段に出力する。
また、増幅器31,32は、奇数番目および偶数番目の画素からのデータを統合する機能も備えている。これにより、増幅器31,32から出力されるデータは、ラインの両端の画素に対応するデータからラインの中央の画素に対応するデータへと順に並ぶこととなる。
つまり、増幅器31は、画素0001,画素0002,…,画素3700に対応する前半データ列をライン正順に出力する。また、増幅器32は、画素7400,画素7399,…,画素3701に対応する後半データ列をライン逆順に出力する。
A/D変換器33,34は、上記増幅器31,32により増幅されたデータをデジタル形式に変換するためのものである。A/D変換器33は、増幅器31から出力されたデータをデジタル形式に変換し、後段の整列部35へ送る。つまり、A/D変換器33は、増幅器31から出力される画素0001,画素0002,…,画素3700のライン正順に各画素に対応するデータを受け取り、デジタル形式の該前半データ列を同順で整列部35へ出力する。
また、A/D変換器34は、増幅器32から出力されたデータをデジタル形式に変換し、後段の整列部35へ送る。つまり、A/D変換器34は、増幅器32から出力される画素7400,画素7399,…,画素3701のライン逆順に各画素に対応する後半データ列を受け取り、デジタル形式の該後半データ列を同順で整列部35へ出力する。
上記、増幅器31,32およびA/D変換器33,34における処理に要する時間は、非常に短時間である。そのため、画像入力装置2から画像処理装置3にデータが入力されるとほぼ同時に、該データは、整列部35に到達している。
整列部35は、A/D変換器33,34から出力されるデジタル形式のデータをライン正順に整列して、後段に出力するためのものである。整列部35は、バッファL(第1のバッファ)44およびバッファR(第2のバッファ)45の2つのバッファメモリを備えている。A/D変換器33,34から出力される画像データは、一旦バッファL44およびバッファR45に格納され、その後、バッファL44およびバッファR45から読み出されて、遅延部36へ送られる。整列部35の詳細な構成については後述する。
なお、整列部35において、特許文献1で示されているようなシェーディング補正を行うようにしてもよい。
遅延部36は、整列部35から出力される画素に正順に整列された画像データを取得し、所定のタイミングで、後段の画像処理部61へ送るためのものである。遅延部36には、(1/2+α)ライン分の画像データを格納することのできる(1/2+α)ラインバッファ(第3のバッファ)36aが備えられている。
(1/2+α)ラインバッファ36aが備えられていることにより、整列部35から出力されるデータを、一旦(1/2+α)ラインバッファ36aに格納させ、所定の時間経過後に、後段に出力することができる。これにより、後段に出力するタイミングを遅らせることができる。
後述するように、整列部35が1ライン分の画像データを遅延部36に入力開始する時点において、整列部35には、すでにCCD21から1/2ライン分以上のデータが入力されている。
そこで、遅延部36は、自身に入力されるデータを(1/2+α)ラインバッファ36aに一旦格納する。その後、CCD HSYNCに合わせて、(1/2+α)ラインバッファ36aから古い画像データを順次読み出し、後段の画像処理部61に出力する。これにより、遅延部36は、CCD HSYNCと同時に、1ライン分の画像データを後段の画像処理部61に出力することができる。よって、画像処理部61における処理の開始を示す画像処理同期信号を、CCD HSYNCと同一にすることができる。
画像処理部61は、遅延部36から出力される画像データに対して、所定の画像処理を施すためのものである。所定の画像処理とは、例えば、高精細な画像再現を目的とした階調処理や、拡大・縮小を目的とした倍率変換処理などである。
画像形成装置4は、画像処理装置3から出力された画像データを記録媒体(例えば紙等)上に出力するものであり、例えば、電子写真方式やインクジェット方式を用いたカラー画像出力装置当を挙げることができるが、特に限定されるものではない。
次に、上記整列部35の詳細について説明する。図2のブロック図は、整列部35の詳細な内部構成を示している。図2で示されるように、整列部35は、バッファL側処理部42と、バッファR側処理部43と、タイミング制御部(制御手段)48と、セレクタ47とから構成される。
まず、バッファL側処理部42について説明する。バッファL側処理部42は、バッファL44と、バッファL書き込み部(第1の書き込み手段)49と、バッファL読み出し部(第1の読み出し手段)50と、L書き込みアドレスカウンタ37と、L読み出しアドレスカウンタ39と、L初期アドレスレジスタ38,40とからなる。
バッファL44は、増幅器31およびA/D変換器33を介して、デジタル形式に変換されたch1およびch2からの画像データを一旦記憶するためのものである。なお、本実施の形態では、バッファL44は、1/2ライン分のデータを格納できる容量を有するものとする。
バッファL44は、最大で1/2ライン分の画像データを記憶することができるデュアルポートRAMである。このため、2つのポートをそれぞれデータの書き込み用と読み出し用に使用することができる。これにより、バッファL44に対して、データの書き込みと読み出しとを切換える必要がない。
また、バッファL44は、異なる画素に対応するデータをそれぞれ異なる場所に記憶するために、複数の記憶場所を有している。記憶場所の数は、ch1およびch2に対応する画素数(ここでは、3700個)と同じだけある。また、各記憶場所を特定するため、各記憶場所にはアドレスが付与されている。バッファL44が有する記憶場所のアドレスは、Lアドレス0〜Lアドレス3699である。
図2で示されるように、バッファL44には、バッファL書き込み部49と、バッファL読み出し部50と、L書き込みアドレスカウンタ37と、L読み出しアドレスカウンタ39とが接続されている。
バッファL44は、L書き込みアドレスカウンタ37によりデータを書き込む場所(書き込みアドレス)が順に指定される。そして、指定された書き込みアドレスに、バッファL書き込み部49によりデータが書き込まれる。
また、バッファL44は、L読み出しアドレスカウンタ39によりデータが読み出される場所(読み出しアドレス)が順に指定される。そして、指定された読み出しアドレスから、バッファL読み出し部50によりデータが読み出される。
バッファL書き込み部49は、L書き込みアドレスカウンタ37により指定されたバッファL44の書き込みアドレスに、データを書き込むためのものである。
図2で示されるように、バッファL書き込み部49には、バッファL44が接続されている。また、図2には示されていないが、バッファL書き込み部49には、A/D変換器33が接続されている。
バッファL書き込み部49には、前半データ列が正順にA/D変換器33より入力される。バッファL書き込み部49は、データが入力されると同時に、入力されたデータをバッファL44に書き込む。各画素に対応したデータが入力されるタイミングは、上記CCD駆動クロック信号の半分の周期に応じたタイミングである。
L書き込みアドレスカウンタ37は、バッファL44に対して、データの書き込みアドレスを指定するためのものである。L書き込みアドレスカウンタ37により、バッファL44への書き込むときのアドレス順序が決定される。
図2で示されるように、L書き込みアドレスカウンタ37は、初期アドレス読み出し部37aと、アドレス指定部37bとを備えている。また、L書き込みアドレスカウンタ37には、タイミング制御部48と、L初期アドレスレジスタ38と、バッファL44とが接続されている。
初期アドレス読み出し部37aは、タイミング制御部48から出力される初期アドレス読み出し信号により、L初期アドレスレジスタ38からL書き込み初期アドレスを読み出す。L書き込み初期アドレスとは、バッファL書き込み部49がデータをバッファL44に書き込むときに、最初のデータの書き込みアドレスである。初期アドレス読み出し部37aは、L初期アドレスレジスタ38から読み出したL書き込み初期アドレスをアドレス指定部37bへ送る。
L初期アドレスレジスタ38には、L書き込み初期アドレスが記録されている。なお、本実施形態において、L書き込み初期アドレスは、Lアドレス0である。
アドレス指定部37bは、初期アドレス読み出し部37aからL書き込み初期アドレスであるLアドレス0を取得し、タイミング制御部48からCCD駆動クロック信号をアドレス数(本実施の形態では3700)の周期分だけ取得する。アドレス指定部37bは、CCD駆動クロック信号の半分の周期に応じたタイミングで、Lアドレス0から昇順にアドレスを生成する。そして、アドレスが最大アドレスに達すると、アドレス指定部37bは、アドレスの生成を停止する。
また、アドレス指定部37bは、アドレスを生成するごとに、該アドレスを書き込みアドレスとして、バッファL44に対して指定する。つまり、アドレス指定部37bは、Lアドレス0,Lアドレス1,…,Lアドレス3699を、このアドレス順序に、書き込みアドレスとして指定する。
バッファL読み出し部50は、L読み出しアドレスカウンタ39により指定された読み出しアドレスから画像データを読み出すためのものである。図2で示されるように、バッファL読み出し部50には、セレクタ47と、バッファL44と、タイミング制御部48とが接続されている。
バッファL読み出し部50には、タイミング制御部48から、後述する読み出し水平同期信号(HSYNC)を基に、周期が上記CCD駆動クロック信号の4分の1である4倍駆動クロック信号が出力される。なお、出力される4倍駆動クロック信号は、バッファLのアドレス数3700の周期分だけである。
該4倍駆動クロック信号を受けると、バッファL読み出し部50は、該4倍駆動クロック信号に応じたタイミングで、バッファL44から前半データ列を順に読み出す。よって、バッファL読み出し部50は、バッファL書き込み部49がバッファL44にデータを書き込む速度の倍速で、バッファL44からデータを読み出すことができる。さらに、バッファL読み出し部50は、バッファL44から読み出したデータを、読み出した順にセレクタ47へ送る。
L読み出しアドレスカウンタ39は、バッファL44に対して、画像データを読み出す場所(読み出しアドレス)を指定するためのものである。L読み出しアドレスカウンタ39により、バッファR45からの読み出し時のアドレス順序が決定される。なお、該読み出し時のアドレス順序は、L書き込みアドレスカウンタ37により決定された書き込み時のアドレス順序と同じになるように設定されている。
図2で示されるように、L読み出しアドレスカウンタ39は、初期アドレス読み出し部39aと、アドレス指定部39bとを備えている。また、L読み出しアドレスカウンタ39には、タイミング制御部48と、L初期アドレスレジスタ40と、バッファL44とが接続されている。
初期アドレス読み出し部39aは、タイミング制御部48から出力される初期アドレス読み出し信号により、L初期アドレスレジスタ40からL読み出し初期アドレスを読み出す。L読み出し初期アドレスとは、バッファL読み出し部50がバッファL44からデータを読み出すときに、最初に読み出すバッファL44の場所を示すアドレスである。初期アドレス読み出し部39aは、L初期アドレスレジスタ40から読み出したL読み出し初期アドレスをアドレス指定部39bへ送る。
L初期アドレスレジスタ40には、上記L読み出し初期アドレスが記録されている。なお、本実施形態において、L読み出し初期アドレスは、Lアドレス0であり、上記したL書き込み初期アドレスと同じである。
アドレス指定部39bは、初期アドレス読み出し部39aからL読み出し初期アドレスであるLアドレス0を取得し、タイミング制御部48から上記4倍駆動クロック信号をバッファLのアドレス数(本実施の形態では3700)の周期分だけ取得する。アドレス指定部39bは、4倍駆動クロック信号に応じたタイミングで、Lアドレス0から昇順にアドレスを生成する。そして、アドレスが最大アドレスに達すると、アドレス指定部39bは、アドレスの生成を停止する。
また、アドレス指定部39bは、アドレスを生成するごとに、該生成したアドレスを読み出しアドレスとして指定する。つまり、アドレス指定部39bは、Lアドレス0,Lアドレス1,…,Lアドレス3699を、このアドレス順序に、読み出しアドレスとして指定する。
このように、バッファL44において、前半データ列が書き込まれるアドレス順序と、前半データ列が読み出されるアドレス順序とは、同一であり、Lアドレス0,Lアドレス1,…,Lアドレス3699の順(つまり、昇順)である。
次に、バッファR側処理部43について説明する。図2で示されるように、バッファR側処理部43は、バッファR45と、バッファR書き込み部(第2の書き込み手段)51と、バッファR読み出し部(第2の読み出し手段)52と、R書き込みアドレスカウンタ(アドレス反転手段)53と、R読み出しアドレスカウンタ54と、セレクタ57,58と、R最小初期アドレスレジスタ55a,56aと、R最大初期アドレスレジスタ55b,56bとからなる。
バッファR45は、増幅器32およびA/D変換器34を介して、デジタル形式に変換されたch3およびch4からの後半データ列を一旦記憶するためのものである。バッファR45は、バッファL44と同様に、1/2ライン分の画像データを記憶することができるデュアルポートRAMである。これにより、2つのポートをそれぞれデータの書き込み用と読み出し用に使用することができるので、バッファR45に対して、データの書き込みと読み出しとを切換える必要がない。
バッファR45は、異なる画像データをそれぞれ異なる場所に記憶するために、複数の記憶場所を有している。記憶場所の数は、ch3およびch4に対応する画素数(ここでは、3700個)と同じだけある。また、各記憶場所を特定するため、各記憶場所にはアドレスが付与されている。バッファR45が有する記憶場所のアドレスは、Rアドレス0〜Rアドレス3699である。
図2で示されるように、バッファR45には、バッファR書き込み部51と、バッファR読み出し部52と、R書き込みアドレスカウンタ53と、R読み出しアドレスカウンタ54とが接続されている。
バッファR45は、R書き込みアドレスカウンタ53によりデータを書き込む場所(書き込みアドレス)が指定される。そして、指定された書き込みアドレスにバッファR書き込み部51によりデータが書き込まれる。
また、バッファR45は、R読み出しアドレスカウンタ54によりデータが読み出される場所(読み出しアドレス)が指定される。そして、指定された読み出しアドレスからバッファL読み出し部52によりデータが読み出される。
バッファR書き込み部51は、R書き込みアドレスカウンタ53により指定された書き込みアドレスに、データを書き込むためのものである。
図2で示されるように、バッファR書き込み部51には、バッファR45が接続されている。また、図2には示されていないが、バッファR書き込み部51には、A/D変換器34が接続されている。
バッファR書き込み部51には、後半データ列が逆順にA/D変換器34より入力される。バッファR書き込み部51は、データが入力されると同時に、入力されたデータをバッファR45に書き込む。各画素に対応したデータが入力されるタイミングは、上記CCD駆動クロック信号に応じたタイミングである。
R書き込みアドレスカウンタ53は、バッファR45に対して、データの書き込みアドレスを指定するためのものである。R書き込みアドレスカウンタ53は、CCD HSYNCの周期ごとに(つまり、ライン毎に)、書き込みアドレスのアドレス順序をアドレス昇順とアドレス降順とに反転させる。
図2に示されるように、R書き込みアドレスカウンタ53は、初期アドレス読み出し部53aと、アドレス指定部53bと、昇降順切換部53cとを備えている。また、R書き込みアドレスカウンタ53には、タイミング制御部48が接続されている。さらに、セレクタ57を介して、R最小初期アドレスレジスタ55aおよびR最大初期アドレスレジスタ55bが接続されている。
初期アドレス読み出し部53aは、タイミング制御部48から出力される初期アドレス読み出し信号により、セレクタ57を介して、R最小初期アドレスレジスタ55aまたはR最大初期アドレスレジスタ55bからR書き込み初期アドレスを読み出す。R書き込み初期アドレスとは、新規のラインの後半データ列をバッファR45に書き込むときに、最初に書き込まれる場所を示す書き込みアドレスである。初期アドレス読み出し部53aは、読み出したR書き込み初期アドレスをアドレス指定部53bへ送る。
R最小初期アドレスレジスタ55aには、R書き込み初期アドレスとして最小アドレスであるRアドレス0が記録されており、R最大初期アドレスレジスタ55bには、R書き込み初期アドレスとして最大アドレスであるRアドレス3699が記録されている。
セレクタ57は、初期アドレス読み出し部53aと接続するレジスタとして、R最小初期アドレスレジスタ55aまたはR最大初期アドレスレジスタ55bを選択するためのものである。
図2で示されるように、セレクタ57には、タイミング制御部48が接続されている。セレクタ57は、所定のタイミングで、タイミング制御部48から最小選択信号、または、最大選択信号を受ける。
最小選択信号を受けた場合、セレクタ57は、初期アドレス読み出し部53aとR最小初期アドレスレジスタ55aとを接続する。これにより、初期アドレス読み出し部53aは、R書き込み初期アドレスとして最小アドレスであるRアドレス0を取得することができる。
一方、最大選択信号を受けた場合、セレクタ57は、初期アドレス読み出し部53aとR最大初期アドレスレジスタ55bとを接続する。これにより、初期アドレス読み出し部53aは、R書き込み初期アドレスとして最大アドレスであるRアドレス3699を取得することができる。
昇降順切換部53cは、アドレス指定部53bがアドレスを生成する順をアドレス番号が増える昇順とするのか、アドレス番号が減る降順とするのかを切換えるためのものである。
昇降順切換部53cは、タイミング制御部48から昇順切換信号または降順切換信号を受ける。昇順切換信号を受けた場合、昇降順切換部53cは、昇順に切換える。一方、降順切換信号を受けた場合、昇降順切換部53cは、降順に切換える。なお、後述するように、タイミング制御部48は、セレクタ57に最小選択信号を送ると同時に、昇降順切換部53cに昇順切換信号を送り、セレクタ57に最大選択信号を送ると同時に、昇降順切換部53cに降順切換信号を送る。
アドレス指定部53bは、初期アドレス読み出し部37aからR書き込み初期アドレスを取得する。また同時に、タイミング制御部48からCCD駆動クロック信号を1/2ライン分の画素数(本実施の形態では3700)の周期分だけ取得する。R書き込み初期アドレスおよびCCD駆動クロック信号を取得すると、アドレス指定部53bは、取得したCCD駆動クロック信号の半分の周期に応じたタイミングで、取得したR書き込み初期アドレスから昇順に、または、降順にアドレスを生成する。そして、アドレスが最大アドレスまたは最小アドレスに達すると、アドレス指定部53bは、アドレスの生成を停止する。
また、アドレス指定部53bは、アドレスを生成するごとに、該アドレスに該当する場所を書き込みアドレスとして、バッファR45に対して指定する。
ここで、昇順に、または、降順にアドレスを生成するかは、上述したように、昇降順切換部53cにより切換えられる。つまり、昇降順切換部53cが昇順に切換えられた場合、アドレス指定部53bは、Rアドレス0,Rアドレス1,…,Rアドレス3699を、この順序に、書き込みアドレスとして指定する。一方、昇降順切換部53cが降順に切換えられた場合、アドレス指定部53bは、Rアドレス3699,Rアドレス3698,…,Rアドレス0を、このアドレス順序に、書き込みアドレスとして指定する。
図3および図4は、バッファR45に後半データ列が書き込まれたときの、具体的な記憶例を示している。
セレクタ57がRアドレス0をR書き込み初期アドレスとして選択した場合、図3で示されるように、バッファR45のRアドレス0〜Rアドレス3699には、それぞれ画素7400〜画素3701に対応するデータが格納される。
一方、セレクタ57がRアドレス3699をR書き込み初期アドレスとして選択した場合、図4で示されるように、バッファR45のRアドレス3699〜Rアドレス0には、それぞれ画素7400〜画素3701に対応するデータが格納される。
バッファR読み出し部52は、R読み出しアドレスカウンタ54により指定された読み出しアドレスからデータを読み出すためのものである。図2で示されるように、バッファR読み出し部52には、セレクタ47と、R読み出しアドレスカウンタ54と、バッファR45と、タイミング制御部48とが接続されている。
バッファR読み出し部52には、タイミング制御部48から、後述する読み出しHSYNCに応じて、上記4倍駆動クロック信号が3700周期分だけ出力される。
4倍駆動クロック信号を受けると、バッファR読み出し部52は、該4倍駆動クロック信号に応じたタイミングで、バッファR45から後半データ列を順に読み出す。よって、バッファR読み出し部52は、バッファR書き込み部51がバッファR45にデータを書き込む速度の倍速で、バッファR45からデータを読み出すことができる。さらに、バッファR読み出し部52は、バッファR45から読み出した画像データを、読み出した順にセレクタ47へ送る。
R読み出しアドレスカウンタ54は、バッファR45に対して、データの読み出しアドレスを指定するためのものである。R読み出しアドレスカウンタ54は、書き込みアドレス順序と逆の順になるように、読み出しアドレス順序をアドレス昇順とアドレス降順とに切換える。
図2で示されるように、R読み出しアドレスカウンタ54は、初期アドレス読み出し部54aと、アドレス指定部54bと、昇降順切換部54cとを備えている。また、R読み出しアドレスカウンタ54には、タイミング制御部48と、バッファR読み出し部52とが接続されている。さらに、セレクタ58を介して、R最小初期アドレスレジスタ56aおよびR最大初期アドレスレジスタ56bが接続されている
初期アドレス読み出し部54aは、タイミング制御部48から出力される初期アドレス読み出し信号により、セレクタ58を介して、R最小初期アドレスレジスタ56aまたはR最大初期アドレスレジスタ56bからR読み出し初期アドレスを読み出す。R読み出し初期アドレスとは、新規のラインの画像データをバッファR45から読み出すときに、最初の読み出す場所を示す読み出しアドレスである。初期アドレス読み出し部54aは、バッファR初期アドレス記録部56から読み出したR読み出し初期アドレスをアドレス指定部54bへ送る。
R最小初期アドレスレジスタ56aには、R書き込み初期アドレスとして最小アドレスであるRアドレス0が記録されており、R最大初期アドレスレジスタ56bには、R書き込み初期アドレスとして最大アドレスであるRアドレス3699が記録されている。
セレクタ58は、初期アドレス読み出し部54aと接続するレジスタとして、R最小初期アドレスレジスタ56aまたはR最大初期アドレスレジスタ56bを選択するためのものである。
図2で示されるように、セレクタ58には、タイミング制御部48が接続されている。セレクタ58は、所定のタイミングで、タイミング制御部48から最小選択信号、または、最大選択信号を受ける。最小選択信号を受けた場合、セレクタ58は、初期アドレス読み出し部54aとR最小初期アドレスレジスタ56aとを接続する。これにより、初期アドレス読み出し部54aは、R書き込み初期アドレスとして最小アドレスであるRアドレス0を取得することができる。一方、最大選択信号を受けた場合、セレクタ58は、初期アドレス読み出し部54aとR最大初期アドレスレジスタ56bとを接続する。これにより、初期アドレス読み出し部54aは、R書き込み初期アドレスとして最大アドレスであるRアドレス3699を取得することができる。
昇降順切換部54cは、アドレス指定部54bがアドレスを生成する順をアドレス番号が増える昇順とするのか、アドレス番号が減る降順とするのかを切換えるためのものである。
昇降順切換部54cは、タイミング制御部48から昇順切換信号または降順切換信号を受ける。昇順切換信号を受けた場合、昇降順切換部54cは、昇順に切換える。一方、降順切換信号を受けた場合、昇降順切換部54cは、降順に切換える。なお、後述するように、タイミング制御部48は、セレクタ58に最小選択信号を送ると同時に昇降順切換部54cに昇順切換信号を送り、セレクタ58に最大選択信号を送ると同時に昇降順切換部54cに降順切換信号を送る。
アドレス指定部54bは、初期アドレス読み出し部54aからR読み出し初期アドレスを取得する。また同時に、タイミング制御部48から4倍駆動クロック信号を後半データ列の画素数(本実施の形態では3700)の周期分だけ取得する。
R読み出し初期アドレスおよび4倍駆動クロック信号を取得すると、アドレス指定部54bは、取得した4倍駆動クロック信号に応じたタイミングで、取得したR読み出し初期アドレスから昇順に、または、降順にアドレスを生成する。そして、アドレスが最大アドレスまたは最小アドレスに達したとき、アドレス指定部53bは、アドレスの生成を停止する。
また、アドレス指定部54bは、アドレスを生成するごとに、該アドレスを読み出しアドレスとして、バッファR45に対して指定する。
ここで、昇順に、または、降順にアドレスを生成するかは、上述したように、昇降順切換部54cにより切換えられる。つまり、昇降順切換部54cが昇順に切換えられた場合、アドレス指定部54bは、Rアドレス0,Rアドレス1,…,Rアドレス3699を、この順序に、読み出しアドレスとして指定する。一方、昇降順切換部54cが降順に切換えられた場合、アドレス指定部54bは、Rアドレス3699,Rアドレス3698,…,Rアドレス0を、このアドレス順序に、読み出しアドレスとして指定する。
図3に示されるように、バッファR45においてRアドレス0に画素7400に対応するデータが記憶されている場合、タイミング制御部48によって、セレクタ58に対してRアドレス3699をR読み出し初期アドレスとして選択する信号が送られ、昇降順切換部54cに対して降順に切換える信号が送られる。
また、図4で示されるように、バッファR45においてRアドレス0に画素3701に対応する画像データが記憶されている場合、タイミング制御部48によって、セレクタ58に対してRアドレス0をR読み出し初期アドレスとして選択する最小選択信号が送られ、昇降順切換部54cに対して昇順に切換える昇順切換信号が送られる。
以上により、バッファR読み出し部52は、後半データ列をライン正順に読み出すことができる。
セレクタ47は、バッファL読み出し部50がバッファL44から読み出した前半データ列と、バッファR読み出し部52がバッファR45から読み出した後半データ列とを連続して受信し、受信した順に後段の遅延部36へ出力するためのものである。セレクタ47は、タイミング制御部48と接続されており、タイミング制御部48からL選択信号またはR選択信号を受ける。
タイミング制御部48からL選択信号を受けた場合、セレクタ47は、遅延部36とバッファL読み出し部50とを接続する。これにより、バッファL読み出し部50により読み出されたデータは、セレクタ47を介して遅延部36へ送られる。一方、タイミング制御部48からR選択信号を受けた場合、セレクタ47は、遅延部36とバッファR読み出し部52とを接続する。これにより、バッファR読み出し部52により読み出されたデータは、セレクタ47を介して遅延部36へ送られる。
タイミング制御部48は、画像入力装置2より、増幅器およびA/D変換器を介して、または直接に、CCD HSYNCとCCD駆動クロック信号とを取得する。もしくは、A/D変換器33,34から送られるデータのタイミングから、該CCD HSYNCとCCD駆動クロック信号とを検出してもよい。もしくは、タイミング制御部48がCCD HSYNCとCCD駆動クロック信号とを生成し、画像入力装置2及びA/D変換器33,34に供給する事も可能であり、別に設けたタイミング制御部からCCD HSYNCとCCD駆動クロック信号とを生成し画像入力装置2、A/D変換器33,34、およびタイミング制御部48に供給する事も可能である。
タイミング制御部48は、該CCD HSYNCとCCD駆動クロック信号とを基に、CCD HSYNCと同じ周期であり、かつ、CCD HSYNCからCCD駆動クロック信号の周期に1/4ライン分の画素数を乗じた期間だけ遅れた読み出しHSYNCを生成する。
また、タイミング制御部48は、周期がCCD駆動クロック信号の周期の1/2である2倍駆動クロック信号と、周期がCCD駆動クロック信号の周期の1/4である4倍駆動クロック信号を生成する。
タイミング制御部48は、該CCD HSYNCとCCD駆動クロックと読み出しHSYNCとを基に、整列部35の各部材に対して、以下に記す各種の信号を所定のタイミングで出力する。
タイミング制御部48は、バッファL読み出し部50と、バッファR読み出し部52とに接続されており、これらの部材に対して、後述するタイミングで、4倍駆動クロック信号を出力する。
さらに、タイミング制御部48は、アドレスカウンタ37,39,53,54およびセレクタ57,58に接続されている。
タイミング制御部48は、アドレス指定部37a,53aに対して、CCD HSYNCに応じたタイミングで所定数の周期分だけ2倍駆動クロック信号を、アドレス指定部38a,54aに対して、後述するタイミングで所定数の周期分だけ4倍駆動クロック信号を出力する。
また、タイミング制御部48は、初期アドレス読み出し部37b,39b,53b,54bに対して、後述するタイミングで、初期アドレス読み出し信号を出力する。初期アドレス読み出し信号とは、各初期アドレス読み出し部が、各アドレスカウンタに直接、もしくは、セレクタを介して接続されているレジスタから、初期アドレスを読み出すためのものである。
初期アドレス読み出し部53bに対して初期アドレス読み出し信号を出力する場合、タイミング制御部48は、同時にセレクタ57に対してRアドレス0を選択する最小選択信号もしくはRアドレス3699を選択する最大選択信号を出力する。また、セレクタ57に対して最小選択信号を出力すると同時に、タイミング制御部48は、昇降順切換部53cに対して昇順に切換える昇順切換信号を出力する。一方、セレクタ57に対して最大選択信号を出力する同時に、タイミング制御部48は、昇降順切換部53cに対して降順に切換える降順切換信号を出力する。
同様に、初期アドレス読み出し部54bに対して初期アドレス読み出し信号を出力する場合、タイミング制御部48は、同時にセレクタ58に対してRアドレス0を選択する最小選択信号もしくはRアドレス3699を選択する最大選択信号を出力する。また、セレクタ58に対して最小選択信号を出力すると同時に、タイミング制御部48は、昇降順切換部54cに対して昇順に切換える昇順切換信号を出力する。一方、セレクタ58に対して最大選択信号を出力する同時に、タイミング制御部48は、昇降順切換部54cに対して降順に切換える降順切換信号を出力する。
さらに、タイミング制御部48は、セレクタ47に接続されており、後述するタイミングで、セレクタ47に対して、バッファL読み出し部50との接続を選択するL選択信号、または、バッファR45との接続を選択するR選択信号を出力する。
また、タイミング制御部48は、CCD HSYNCを基に、後段の画像処理部61における画像処理の開始を示す画像処理用HSYNCも生成することができる。
次に、バッファL44およびバッファR45に対するデータの書き込みと読み出しのタイミングについて図5を参照しながら説明する。
図5は、バッファL44およびバッファR45に対するデータの書き込みと読み出しを説明するタイミングチャートである。図5において、横軸は時間軸を示している。また、縦軸は各バッファのアドレスを示している。
「書き込み」のハッチングされた三角形の領域は、バッファに書き込まれたデータを示している。三角形の高さは書き込まれたデータ量、幅はデータを書き込んでいる時間、斜辺の傾きはデータを書き込む速度を表している。また、ハッチング領域が三角形の斜辺の下部にある場合には、データは最小アドレスから書き込まれていることを表しており、ハッチング領域が三角形の斜辺の上部にある場合には、データは最大アドレスから書き込まれていることを表している。
「読み出し」の三角形も「書き込み」の三角形と同様である。読み出しは、書き込み速度の倍速で行うため、データ量(三角形の高さ)は同じであるが、読み出しに要する時間(三角形の幅)は半分になっている。なお、データの対応が取りやすいように、ハッチングの種類は、奇数ラインと偶数ライン、バッファL44とバッファR45で区別されている。
また、各バッファのデータの変化も併せて示している。ハッチングされている部分は、データが書き込まれてから読み出されるまでのデータが有効な期間を示している。一方、ハッチングされていない部分は、データが読み出されてから次のデータが書き込まれるまでの期間を示している。
図5において、CCD HSYNCの同期は、時刻T0,T1,T2,…である。また、読み出しHSYNCの同期は、時刻tL0,tL1,tL2,…である。なお、上記したように、時刻tL0,tL1,tL2,…は、時刻T0,T1,T2,…よりも、CCD駆動クロック信号の周期に1/4ライン分の画素数を乗じた時間だけ遅れている。
まず、1番目のラインのデータがCCD21の各画素から画像処理装置3に入力開始される時刻T0において、タイミング制御部48は、初期アドレス読み出し部37b,53bに対して初期アドレス読み出し信号を、アドレス指定部37a,53aに対して1/2ライン分のCCD駆動クロック信号を、セレクタ57に対して最小選択信号を、昇降順切換部53cに対して昇順切換信号を出力する。
これにより、時刻T0において、アドレス指定部37aは、初期アドレスとしてLアドレス0を取得し、該アドレスを書き込みアドレスとして指定する。同時に、バッファL書き込み部49は、A/D変換器33から画素0001に対応する画像データを取得し、Lアドレス0に該データを書き込む。
一方、アドレス指定部53bは、時刻T0において、初期アドレスとしてRアドレス0を取得し、該アドレスを書き込みアドレスとして指定する。同時に、バッファR書き込み部51は、A/D変換器34から画素7400に対応するデータを取得し、Rアドレス0に該データを書き込む。
その後、CCD駆動クロック信号の1/2周期を経ると、アドレス指定部37aは、Lアドレス1を書き込みアドレスとして指定する。同時に、バッファL書き込み部49は、A/D変換器33から画素0002に対応するデータを取得し、Lアドレス1に該データを書き込む。
一方、アドレス指定部53aは、Rアドレス1を書き込みアドレスとして指定する。同時に、バッファR書き込み部51は、A/D変換器34から画素7399に対応するデータを取得し、Rアドレス1に該データを書き込む。
このようにして、CCD駆動クロック信号の1/2周期を経るごとに、CCD21の両端から逐次出力されたデータは、先頭(画素0001に対応する画像データ)から正順にバッファL44へ、末尾(画素7400に対応する画像データ)から逆順にバッファR45へ並行して、図5で示されるように、最小アドレスから昇順に書き込まれていく。
時刻T0から時刻tL0までの時間は、上記したように、CCD駆動クロック信号の周期に1/4ライン分の画素数を乗じた時間である。よって、時刻tL0においては、バッファL44、バッファR45のそれぞれに1/4ライン分のデータが書き込まれており、合わせて1/2ライン分のデータが書き込まれている。このとき、バッファL44には、Lアドレス0〜Lアドレス1850の該当する場所に、それぞれ画素0001〜画素1850に対応するデータが書き込まれている。また、バッファR45には、Rアドレス0〜Rアドレス1850の該当する場所に、それぞれ画素7400〜画素5551に対応するデータが書き込まれている。
次に、時刻tL0において、または、時刻tL0からわずかに遅れた時点において、タイミング制御部48は、初期アドレス読み出し部39bに対して初期アドレス読み出し信号を、バッファL読み出し部50およびアドレス指定部39aに対して1/2ライン分の4倍駆動クロック信号を、セレクタ47に対してL選択信号を出力する。
タイミング制御部48からの制御をうけて、L読み出しアドレスカウンタ39は、Lアドレス0を読み出しアドレスとして指定し、バッファL読み出し部50は、Lアドレス0から画素0001に対応するデータを読み出す。
さらに、バッファL読み出し部50は、読み出したデータを、セレクタ47を介して遅延部36へ送る。つまり、1ライン分の画像データが遅延部36に入力開始される。なお、入力開始される時点は、時刻tL0、または、時刻tL0からわずかに遅れた時点であるから、バッファL44およびバッファR45には、すでに1/2ライン分、もしくはそれ以上のデータが格納されている。
その後、4倍駆動クロック信号の周期にあわせて、L読み出しアドレスカウンタ39は、Lアドレス1,Lアドレス2,…,Lアドレス3699(最大アドレス)を読み出しアドレスとして指定し、バッファL読み出し部50は該アドレスからデータを順に読み出す。
これにより、図5の「読み出し」に示されるように、バッファL読み出し部50は、バッファL44のLアドレス0に格納されているデータ(画素0001に対応する画像データ)からアドレス昇順に読み出していく。この結果、バッファL読み出し部50は、セレクタ47を介して後段に、画素0001,画素0002,…,画素3700の正順に各画素に対応する画像データを出力することができる。
バッファL読み出し部50が読み出す速度は、4倍駆動クロック信号の周期ごとであるため、バッファL44にデータを書き込む速度の倍速となる。すなわち、図5において、「読み出し」の斜辺の傾きは、「バッファL書き込み」の斜辺の傾きの倍である。
また、上述したように、バッファL読み出し部50がバッファLから読み出し始める時点は、バッファLに1/4ライン分のデータが書き込まれた時刻tL0または時刻tL0よりわずかに遅れた時点である。
よって、バッファL読み出し部50が1番目のラインの前半データ列を読み出し終える時点(これを時刻tR0とする)は、バッファL書き込み部49がバッファLに1番目のラインの前半データ列を書き込み終えた時点と同じか、もしくは、書き込み終えた時点よりわずかに後となる。このため、L読み出しアドレスカウンタ39が指定するアドレスが、L書き込みアドレスカウンタ37が指定するアドレスよりも大きくなることはなく、倍速の読み出しが、書き込みを追い越すことはない。これにより、1番目のラインの前半データ列は、必ずバッファL44に一旦記憶された後に、バッファL読み出し部50により読み出される。
また、図5で示されるように、時刻tR0において、バッファR書き込み部51は、バッファR45の全てのアドレスに対して1番目のラインの後半データ列を格納し終えている。すなわち、Rアドレス0〜Rアドレス3699に該当する場所には、画素7400〜画素3701に対応するデータがそれぞれ記憶されている。
次に、時刻tR0において、タイミング制御部48は、初期アドレス読み出し部54bに対して初期アドレス読み出し信号を、バッファR読み出し部52およびアドレス指定部54aに対して4倍駆動クロック信号を、昇降順切換部54cに対して降順切換信号を、セレクタ58に対して最大選択信号を、セレクタ47にR選択信号を出力する。
図5に示されるように、タイミング制御部48からの制御をうけて、時刻tR0において、バッファR読み出し部52は、バッファR45の最大Rアドレス3699に格納されたデータ(画素3701に対応する画像データ)を読み出す。その後、4倍駆動クロック信号の周期ごとに、バッファR読み出し部52は、バッファRからアドレス降順にデータを読み出していく。つまり、バッファR書き込み部51の書き込み順とは逆の順で読み出す。この結果、バッファR読み出し部52は、セレクタ47を介して後段に、画素3701,画素3702,…,画素7400の正順に各画素に対応する画像データを出力することができる。
すなわち、上記したバッファL読み出し部50により読み出されたデータと合わせると、1番目のラインの画素0001〜画素7400に対応するデータが正順に整列されて、後段に出力される。
また、時刻tR0より遅れた時刻T1において、2番目のラインのデータがCCD21よりバッファL44およびバッファR45に送られる。
タイミング制御部48は、時刻tR0が時刻T1よりも前になるように、バッファR読み出し部50の読み出し開始時点を制御している。これにより、バッファL書き込み部49およびバッファR書き込み部51は、次のラインのデータを取得すると同時に、その前半データ列および後半データ列を、バッファL44およびバッファR45に書き込み開始することができる。
時刻T1において、タイミング制御部48は、初期アドレス読み出し部37b、53bに対して初期アドレス読み出し信号を、バッファL書き込み部49およびバッファR書き込み部51およびアドレス指定部37a,53aに対して1/2ライン分の駆動クロック信号を、セレクタ57に対して最大選択信号を、昇降順切換部53cに対して降順切換信号を出力する。
これにより、4チャンネルCCDの両端から逐次出力された次のラインのデータは、先頭(画素0001に対応する画像データ)から正順にバッファL44へ、末尾(画素7400に対応する画像データ)から逆順にバッファR45へ並行して書き込まれていく。
図5で示されるように、バッファL書き込み部49は、時刻T0から時刻T1までの期間と同様に、バッファL44の最小Lアドレス0から昇順にデータを格納していく。
一方、R書き込みアドレスカウンタ53は、最大アドレスであるRアドレス3699から降順にアドレスを指定する。つまり、R書き込みアドレスカウンタ53は、1番目のラインにおいて指定したアドレス順序と反転したアドレス順序であり、時刻tR0からR読み出しアドレスカウンタ54が読み出しアドレスとして指定したアドレス順序と同じアドレス順序を指定する。これにより、バッファR書き込み部51は、バッファR読み出し部52が1番目のラインのデータを最初に読み出したRアドレス3699から降順に2番目のラインのデータを格納していく。このように、バッファR書き込み部51は、バッファR読み出し部52が1番目のラインのデータ全てを読み出し終えるのを待つ必要がなく、バッファR読み出し部52が読み出し終えたアドレスから書き込みを開始していく。
その後、図5で示されるように、時刻tL1において、バッファL44、バッファR45のそれぞれに2番目のラインの1/4ライン分のデータが書き込まれる。すなわち、バッファL44のLアドレス0〜Lアドレス1849に、2番目のラインの画素0001〜画素1850に対応するデータが、バッファR45のRLアドレス3699〜Rアドレス1850に、2番目のラインの画素7400〜画素5551に対応するデータが格納されている。
次に、時刻tL1または時刻tL1よりわずかに遅れた時点において、タイミング制御部48は、初期アドレス読み出し部39bに対して初期アドレス読み出し信号を、バッファL読み出し部50およびアドレス指定部39aに対して1/2ライン分の4倍駆動クロック信号を出力する。
タイミング制御部48からの制御をうけて、バッファL読み出し部50は、バッファL44のLアドレス0に格納されているデータ(画素0001に対応する画像データ)からアドレス昇順に読み出していく。この結果、バッファL読み出し部50は、セレクタ47を介して後段に、画素0001,画素0002,…,画素3700の正順に各画素に対応する画像データを出力することができる。
そして、時刻tR1において、バッファL読み出し部50がバッファL44の最大Lアドレス3699に格納された2番目のラインに対するデータを読み出し終える。また、時刻tR1においては、バッファR書き込み部51が、バッファR45の全てのアドレスに対して2番目のラインの1/2ライン分のデータを格納した後である。すなわち、Rアドレス3699〜Rアドレス0に該当する場所に、画素7400〜画素3701に対応するデータがそれぞれ記憶されている。
次に、時刻tR1において、タイミング制御部48は、初期アドレス読み出し部54bに対して初期アドレス読み出し信号を、バッファR読み出し部52およびアドレス指定部54aに対して1/2ライン分の周期分だけ4倍駆動クロック信号を、昇降順切換部54cに対して昇順切換信号を、セレクタ58に対して最小選択信号を出力する。
図5で示されるように、タイミング制御部48からの制御をうけて、時刻tR1から、バッファR読み出し部52は、バッファR45格納されたデータ(画素3701に対応する画像データ)を最小Rアドレス0からアドレス昇順に読み出していく。つまり、バッファR読み出し部52は、バッファR書き込み部51が2番目のラインのデータを書き込んだアドレス順序とは逆の順で読み出す。この結果、バッファR読み出し部52は、セレクタ47を介して後段に、画素3701,画素3702,…,画素7400の正順に各画素に対応する画像データを出力することができる。
この結果、2番目のラインの画素0001〜画素7400に対応するデータが正順に整列されて、後段に出力される。
続いて、時刻T2において、3番目のラインのデータがCCDよりバッファL44およびバッファR45に送られる。時刻T2から時刻T3におけるタイミング制御部48の制御は、時刻T0から時刻T1における制御と同じである。
さらに、時刻T3において、4番目のラインのデータがCCDよりバッファL44およびバッファR45に送られる。時刻T3から時刻T4におけるタイミング制御部48の制御は、時刻T1から時刻T2における制御と同じである
以上のように、タイミング制御部48は、時刻T0から時刻T4までの制御を繰り返し行う。これにより、整列部35は、全てのラインのデータを後段に出力することができる。
本実施の形態では、L書き込みアドレスカウンタ37およびL読み出しアドレスカウンタ39は、ともにバッファL44の最小アドレスであるLアドレス0から昇順にアドレスを生成し、生成したアドレスを指定するものとした。しかし、これに限られない。
例えば、Lアドレス3699を初期アドレスとして、Lアドレス3699から降順にアドレスを生成し、該アドレスに該当する場所を順に書き込み場所として指定するとしてもよい。この場合、L初期アドレスレジスタ38,40には、最大アドレスであるLアドレス3699が記録されており、アドレス指定部37b,39bは、降順にアドレスを生成する。
また、例えば、特許文献1に記載されているように、前半データ列の先端にあるダミーデータをカットするため、L書き込みアドレスカウンタ37の初期アドレスと、L読み出しアドレスカウンタ39の初期アドレスとに差を設けてもよい。この場合、L初期アドレスレジスタ38,40に記録されている初期アドレスの値を変更すればよい。
さらに、本実施の形態では、L書き込みアドレスカウンタ37およびL読み出しアドレスカウンタ39において、ラインごとに、初期アドレス読み出し部37a,39aが、初期アドレスをL初期アドレスレジスタ38,40から読み出す構成とした。しかし、これに限られない。例えば、アドレス指定部37b,39bがアドレスを昇順に生成したとき、アドレス指定部37b,39bは、アドレスをクリアにしてLアドレス0に戻すようにしてもよい。この場合、L初期アドレスレジスタ38,40、ならびに初期アドレス読み出し部37a,39aは不要となる。
また、本実施の形態において、バッファL読み出し部50およびバッファR読み出し部52は、周期がCCD駆動クロック信号の半分である2倍クロック信号により、書き込み速度の2倍速でバッファL44およびバッファR45からデータを読み出すとしたが、これに限られるものではない。バッファL読み出し部50およびバッファR読み出し部52は、書き込み速度の2倍以上の速度でバッファL44およびバッファR45からデータを読み出すことも可能であり、2倍以下の速度でバッファL44およびバッファR45からデータを読み出すことも可能である。
2倍以上の速度で読み出す場合は、バッファL書き込み部49が前半データ列をバッファL44に書き込むのに要する時間(もしくは、バッファR書き込み部51が後半データ列をバッファR45に書き込むのに要する時間)の半分以下の時間で、バッファL読み出し部50は、前半データ列を読み出し、バッファR読み出し部52は、後半データ列を読み出すことができる。
また、2倍以下の速度で読み出す場合は、後段の画像処理部が低速で動作可能となる。
また、本実施の形態では、前半データ列および後半データ列において、奇数番目の画素と偶数番目の画素とのデータの統合を増幅器31,32で行ったが、これに限られるものではない。例えば、A/D変換器33,34において行ってもよく、または、画像入力装置2側において行われてもよい。
〔実施の形態2〕
本発明の画像処理装置に関する他の実施形態について、図2および図6に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記実施の形態にて説明した図面と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
本実施の形態では、バッファL書き込み部49が、バッファL44に対して、前半データ列を2回に分けて、1/4ライン分ごとに書き込み、バッファL読み出し部50が、バッファL44に対して、前半データ列を2回に分けて、1/4ライン分ごとに読み出すことを特徴としている。
また、上記実施の形態では、バッファLの容量を1/2ライン分のデータ量が格納できるものとした。しかし、本実施の形態の画像処理装置においては、バッファL44の容量を1/4ライン分のデータ量に削減している。つまり、バッファL44は、1850画素に対応する画像データのみを格納することができ、格納する場所は1850個ある。なお、格納場所を示すアドレスは、Lアドレス0〜Lアドレス1849である。
他の構成は図2で示したものと同じである。ただし、タイミング制御部48がバッファL側処理部42に対して出力するタイミングは、上記実施の形態と異なる。そこで、タイミング制御部48がバッファL側処理部42に対して出力するタイミングについて説明する。なお、タイミング制御部48がバッファR側処理部43に対して出力するタイミングは上記実施の形態と同様であるため、バッファR側処理部43についての詳細な説明は省略する。
図6は、本実施の形態におけるバッファL44およびバッファR45に対するデータの書き込みと読み出しを説明するタイミングチャートである。図2と同様に、横軸は時間軸を示している。また、縦軸は各バッファのアドレスを示している。
まず、1番目のラインのデータが画像処理装置3に入力開始される時刻T0において、タイミング制御部48は、初期アドレス読み出し部37b、53bに対して初期アドレス読み出し信号を、アドレス指定部37aに対して1/4ライン分の2倍駆動クロック信号を、アドレス指定部53aに対して1/2ライン分の2倍駆動クロック信号を、セレクタ57に対して最小選択信号を、昇降順切換部53cに対して昇順切換信号を出力する。
これにより、図6で示されるように、バッファL書き込み部49は、Lアドレス0に対して1回目の書き込みを開始し、2倍駆動クロック信号の1周期を経るごとに、画素0001に対応するデータから正順にバッファL44へ書き込む。バッファR書き込み部50は、上記実施の携帯と同様に、末尾(画素7400に対応する画像データ)から逆順にバッファR45へ並行して順次書き込む。
その後、時刻tL0において、バッファL44のすべてのアドレス(Lアドレス0〜Lアドレス1849)に該当する場所に、画素0001〜画素1850に対応する画像データが格納される。これにより、バッファL書き込み部49の1回目の書き込みは終了する。
なお、上記実施の形態と同様に、時刻tL0において、バッファR書き込み部51は、画素7400〜画素5551を書き込み終えているが、引き続いて、画素3701まで書き込む。
時刻tL0、または、時刻tL0の直前において、タイミング制御部48は、初期アドレス読み出し部39bに対して初期アドレス読み出し信号を、バッファL読み出し部50およびアドレス指定部39aに対して1/4ライン分の4倍駆動クロック信号を出力する。
図6に示されるように、タイミング制御部48からの制御をうけて、L読み出しアドレスカウンタ39は、Lアドレス0を読み出し場所として指定し、バッファL読み出し部50は、バッファL44の該読み出し場所から画像データを読み出す。その後、4倍駆動クロック信号の周期にあわせて、L読み出しアドレスカウンタ39は、Lアドレス1,Lアドレス2,…,Lアドレス1849(最大アドレス)を読み出しアドレスとして指定し、バッファL読み出し部50は該アドレスからデータを順に読み出す。なお、読み出す速度は、4倍駆動クロック信号の周期ごとであるため、バッファL44にデータを書き込む速度の倍速となる。
この結果、バッファL読み出し部50は、セレクタ47を介して後段に、画素0001,画素0002,…,画素1850の正順に各画素に対応する画像データを出力することができる。
このようにして、時刻tL0′において、バッファL読み出し部50が、Lアドレス1849に格納された画素1850に対応する画像データを読み出し終える(一回目の読み出しの終了)。
また、バッファL読み出し部50が読み出しを開始する時点、または、読み出し中の時刻tL0において、タイミング制御部48は、初期アドレス読み出し部37bに対して初期アドレス読み出し信号を、アドレス指定部37aに対して1/4ライン分の周期の2倍駆動クロック信号を出力する。
これにより、図6で示されるように、タイミング制御部48からの制御を受けたL書き込みアドレスカウンタ37は、再びLアドレス0を書き込みアドレスとして指定し、バッファL書き込み部49は、2回目の書き込みを開始し、画素1851に対応する画像データををLアドレス0に書き込む。なお、上記したように、Lアドレス0に1回目の書き込みで書き込まれていた画素0001に対応するデータは、時刻tL0、または、時刻tL0の直前にバッファL読み出し部50により読み出されている。
その後、2倍駆動クロック信号の周期ごとに、L書き込みアドレスカウンタ37は、Lアドレス1,Lアドレス2,…,Lアドレス1849を、書き込みアドレスの順序に指定し、バッファL書き込み部49は、該書き込みアドレスの順序に画素1852〜画素3700に対応するデータを順に書き込む。
書き込み速度は読み出し速度の半分なので、画素1〜画素1850に対応する画像データがバッファL44より読み出される前に、バッファL書き込み部49が画素1851〜画素3700に対応するデータを上書きすることはない。
このように、バッファL書き込み部49は、バッファL読み出し部50が倍速でデータを読み出したアドレス順に、残りの1/4ライン分のデータを書き込む。
上記のように、1回目の読み出しは、1回目の書き込みが終わった時点(時刻tL0)かその直前に行う(図6の“X”で示した箇所を参照)。1回目の読み出しが1回目の書き込みよりも遅れると、2回目の書き込みにより、1回目に書き込まれたデータが読み出されずに上書きされてしまうからである。
バッファL書き込み部49が、2回目の書き込みの半分を終えた時点を時刻tL0′とする。すなわち、時刻tL0′において、バッファL44には、バッファL44の半分の容量に相当する1/8ライン分にあたる画素1851〜画素2775のデータが書き込まれている。また、1回目の読み出しは、1回目の書き込みが終わった時点(時刻tL0)かその直前に、書き込みの速度の倍速で行うため、時刻tL0′において、1回目に書き込まれた画素0001〜画素1850に対応するデータは、バッファL読み出し部50により全て読み出されている。
次に、時刻tL0′もしくは時刻tL0′よりもわずかに遅れた時点において、タイミング制御部48は、初期アドレス読み出し部39bに対して初期アドレス読み出し信号を、バッファL読み出し部50およびアドレス指定部39aに対して1/4ライン分の4倍駆動クロック信号を出力する。
これにより、図6で示されるように、バッファL読み出し部50は、2回目の読み出しを開始し、再びバッファL44のLアドレス0から昇順に格納されたデータを読み出す。つまり、Lアドレス0に格納された画素1851から正順に、画素1851〜画素3700に対応するデータを読み出す。なお、読み出す速度は、4倍駆動クロック信号の周期ごとであるため、バッファL44にデータを書き込む速度の倍速となる。
上述したように、バッファL読み出し部50の2回目の読み出し開始時点は、バッファL44にその半分である1/8ライン分のデータが書き込まれた時刻tL0′もしくは時刻tL0′よりもわずかに遅れた時点である。よって、L読み出しアドレスカウンタ39が指定するアドレスが、L書き込みアドレスカウンタ37が指定するアドレスよりも大きくなることはない。つまり、倍速の読み出しが、書き込みを追い越してしまうことがなく、図6の“Y”で示した箇所のように、最大アドレスには、データが書き込まれてから読み出される。よって、各画素に対応するデータは、バッファL44に一旦書き込まれた後に、バッファL44から読み出される。
その後、時刻tR0において、バッファL読み出し部50が、最大Lアドレス1849に格納された画素3701に対応するデータを読み出し終える(2回目の読み出し終了)。
この結果、セレクタ47を介して、後段の遅延部36に、画素1〜画素3700に対応するデータが正順に出力される。
次に、時刻tR0において、タイミング制御部48は、上記実施の形態における時刻tR0と同様の制御を行う。これにより、上記実施の形態と同様に、画素3701〜画素7400に対応する画像データが正順にバッファR45より読み出され、後段の遅延部36へと送られる。
以上により、1番目のラインの画素0001〜画素7400に対応するデータが正順に後段の遅延部へと送られる。
その後、タイミング制御部48は、CCD HSYNCにあわせて、バッファL側処理部42に対して上記の制御を繰り返す。
図6のバッファLのデータ変化に示されるように、図5に比べて、バッファL44が空いている期間(ハッチングされていない面積)に対するバッファL44が有効に活用されている期間(ハッチングされている面積)が大きい。これにより、本実施の形態では、バッファL44の使用効率が向上していることがわかる。
以上のように、バッファL44およびバッファR45の合計3/4ライン分のバッファで、CCD21により両端から並行に取り出された前半データ列および後半データ列を整列して後段に出力することができる。
本実施の形態において、バッファL読み出し部50の1回目の読み出し開始時点が時刻tL0よりも前の場合、バッファL44からの1回目の読み出しと2回目の読み出しとが連続しない。この場合、タイミング制御部48は、バッファL44からの1回目の読み出しと2回目の読み出しとの間に空白の時間がある旨の信号(読み出し中断信号)を、後段の遅延部36や、画像出力装置4へ出力してもよい。
〔実施の形態3〕
本発明の画像処理装置に関する他の実施形態について、図5および図7に基づいて説明すれば、以下のとおりである。
上記実施の形態では、バッファL44およびバッファR45として、デュアルポートRAMを使用した構成であるとした。しかし、これに限られるものではない。バッファL44およびバッファR45として、通常のRAMを使用してもよい。
本実施の形態では、バッファL44およびバッファR45として、1ポートのRAMを用いている。本実施の形態の整列部35の構成について説明する。なお、構成が複雑であるバッファR処理部43のみについて説明する。また、説明の便宜上、上記実施の形態にて説明した図面と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。
図7のブロック図は、バッファR45として通常のRAMを使用した場合のバッファR側処理部43の構成と、タイミング制御部48と、セレクタ47とを示している。
バッファR側処理部43は、バッファR45と、バッファR書き込み部51と、バッファR読み出し部52と、データ入出力切換部(第2の入出力切換手段)60、R書き込みアドレスカウンタ53と、R読み出しアドレスカウンタ54と、L最小初期アドレスレジスタ55aと、L最大初期アドレスレジスタ55bと、R最小初期アドレスレジスタ56aと、R最大初期アドレスレジスタ56bと、セレクタ57,58,59とを備えている。
データ入出力切換部60は、バッファR45に対するデータの入力(すなわち、書き込み)と出力(すなわち、読み出し)とを切換えるためのものである。データ入力切換部60には、タイミング制御部48と、バッファR45と、バッファR書き込み部51と、バッファR読み出し部52とが接続されている。
データ入出力切換部60は、タイミング制御部48から書き込み切換信号もしくは読み出し切換信号を受ける。書き込み切換信号を受けた場合、データ入力切換部60は、バッファR45とバッファR書き込み部51とを接続する。これにより、バッファR書き込み部51はバッファR45にデータを書き込むことができる。一方、読み出し選択信号を受けた場合、データ入力切換部60は、バッファR45とバッファR読み出し部52とを接続する。これにより、バッファR読み出し部52はバッファR45からデータを読み出すことができる。
このように、バッファR45に対しては、書き込みまたは読み出しのいずれか一方のみしかできない。読み出し速度を書き込み速度の倍速として、書き込み読み出しを並行して行う場合、バッファR書き込み部51がバッファR45の1つのアドレスに対して書き込みを行った後、バッファR読み出し部52がバッファR45の2つのアドレスからデータを読み出す。つまり、書き込み1回と読み出し2回をセットにして、このセットを繰り返し行う。このセットを繰り返し行うように、データ入出力切換部60は、タイミング制御部48から書き込み切換信号および読み出し切換信号を繰り返し受けることとなる。
そのため、バッファR書き込み部51が、A/D変換器34から入力されるデータ幅(例えば、8ビット)と同じデータ幅でバッファR45にデータを書き込むと、データ転送に要する時間が多くなってしまう。
そこで、本実施の形態のバッファR書き込み部51には、書き込み4nビットレジスタ(データ幅拡大手段)61が、バッファR読み出し部52には、読み出し4nビットレジスタ62が備えられている。
書き込み4nビットレジスタ61は、バッファR45に書き込むデータ幅を4倍(例えば、32ビット)にする。また、読み出し4nビットレジスタ62は、バッファR45から読み出したデータのデータ幅(例えば、32ビット)を、1/4倍(例えば、8ビット)にして、データを後段に出力することができる。これにより、転送速度を高速にする必要がなくなる。書き込み4nビットレジスタ61および読み出し4nビットレジスタ62により、タイミング調整にも余裕をもたせることができる。また、バッファR45としてSDRAMを用いる場合には、バースト単位でデータを転送できるようにするだけのレジスタを備えるようにしてもよい。
セレクタ59は、バッファR45のアドレスを指定するために、書き込み用のアドレスと読み出し用のアドレスとを切換えるためのものである。セレクタ59は、タイミング制御部48と、R書き込みアドレスカウンタ53と、R読み出しアドレスカウンタ54と、バッファR45とに接続されている。セレクタ59は、タイミング制御部48から書き込み選択信号もしくは読み出し選択信号を受ける。
書き込み選択信号を受けた場合、セレクタ59は、R書き込みアドレスカウンタ53とバッファR45とを接続する。これにより、R書き込みアドレスカウンタ53は、バッファR45にデータが書き込まれる書き込み場所を指定する。一方、読み出し選択信号を受けた場合、セレクタ59は、R読み出しアドレスカウンタ54とバッファR45とを接続する。これにより、R読み出しアドレスカウンタ54は、バッファR45からデータが読み出される読み出し場所を指定する。
タイミング制御部48は、上記実施の形態に加えて、データ入出力切換部60およびセレクタ59に対して所定の信号を、所定のタイミングで出力する。
タイミング制御部48は、データ入出力切換部60に対して、書き込み切換信号または読み出し切換信号を出力する。この場合の書き込み切換信号は、データ入出力切換部60がバッファR書き込み部51とバッファR45とを接続するためのものであり、読み出し切換信号は、データ入出力切換部60がバッファR読み出し部52とバッファR45とを接続するためのものである。
また、タイミング制御部48は、セレクタ59に対して、書き込み選択信号または読み出し選択信号を出力する。この場合の書き込み切換信号は、セレクタ59がR書き込みアドレスカウンタ53とバッファR45とを接続するためのものであり、読み出し切換信号は、セレクタ59がR読み出しアドレスカウンタ54とバッファR45とを接続するためのものである。
次に、図5を参照しながら、本実施の形態におけるタイミング制御部48の制御について説明する。
時刻T0から時刻tR0の期間のように、バッファR45に対してデータの書き込みのみを行う場合には、タイミング制御部48は、データ入出力切換部60に対して書き込み切換信号を、セレクタ59に対して書き込み選択信号を出力するとともに、上記実施の形態と同様に、CCD HSYNCにおいて行う制御を行う。これにより、バッファR書き込み部51は、バッファR45に対してデータを書き込むことができる。
また、時刻tR0から時刻T1の期間のように、バッファR45に対してデータの読み出しのみを行う場合には、タイミング制御部48は、データ入出力切換部60に対して読み出し切換信号を、セレクタ59に対して読み出し選択信号を出力するとともに、上記実施の形態と同様に、時刻tR0,tR1,…において行う制御を行う。これにより、バッファR読み出し部52は、バッファR45からデータを読み出すことができる。
さらに、時刻T1からバッファR読み出し部52が読み出しを終える時刻Z(図5参照)までの期間のように、バッファR45に対してデータの書き込みと読み出しを並列して行う場合には、タイミング制御部48は、以下の制御を行う。
まず、タイミング制御部48は、データ入出力切換部60およびセレクタ59に対して、CCD駆動クロック信号にあわせて、書き込み切換信号および書き込み選択信号を出力する。これにより、バッファR書き込み部51は、バッファR45の1つのアドレスに対して、1つの画素に対応するデータを書き込む。
ここで、バッファR書き込み部51が備えている書き込み4nビットレジスタ61によりデータ幅が4倍となっているので、バッファR書き込み部51が該データを書き込むのに要する時間は、上記実施形態のそれの1/4であり、CCD駆動クロック信号の周期の1/4以下の時間となる。よって、該周期の3/4にあたる時間において、バッファR書き込み部51は、バッファR45にデータを書き込まない。該周期の3/4にあたる時間を利用して、データの読み出しを行う。
バッファR書き込み部51がデータを書き込むのに要する時間(CCD駆動クロック信号の周期の1/4以下)の経過後、タイミング制御部48は、データ入出力切換部60およびセレクタ59に対して、読み出し切換信号および読み出し選択信号を出力し、バッファR読み出し部52とアドレス指定部54cに対して4倍駆動クロック信号を2周期分だけ出力する。
これにより、バッファR読み出し部52は、書き込み速度の倍速で、バッファR45の2つのアドレスから2つのデータを読み出すことができる。よって、バッファR読み出し部52は、バッファR45の2つのアドレスからデータを読み出すのに要する時間は、CCD駆動クロック信号の周期の2/4以下であり、該周期の2/4にあたる時間を越えることはない。したがって、バッファR書き込み部51が、次のデータを取得するまでの間に、バッファR読み出し部52は、バッファR45の2つのアドレスからデータを読み出すことができる。
バッファR読み出し部52がバッファR45の2つのアドレスからデータを読み出した後、バッファR書き込み部51が次のデータを取得するまでの間に、タイミング制御部48は、再びデータ入出力切換部60およびセレクタ59に対して、書き込み切換信号および書き込み選択信号を出力する。これにより、バッファR書き込み部51は、次のデータをバッファR45の次のアドレスに書き込むことができる。
バッファR45に対してデータの書き込みと読み出しを並列して行う間、タイミング制御部48は、上記の処理を繰り返し行う。
バッファL側処理部42についても、バッファR側処理部43と同様である。バッファL側処理部42は、1ポートRAMのバッファL44と、書き込み4nビットレジスタを備えたバッファL書き込み部49と、読み出し4nビットレジスタ(データ幅拡大手段)を備えたバッファL読み出し部50と、タイミング制御部48の制御に従いバッファL44をバッファL書き込み部49もしくはバッファL読み出し部50に接続するデータ入力切換部(第1の入出力切換手段)と、L書き込みアドレスカウンタ37と、L読み出しアドレスカウンタ39と、L初期アドレスレジスタ40,41とが備えられている。
また、本実施の形態では、バッファR読み出し部50に読み出し4nビットレジスタ62が、バッファL読み出し部50にも読み出し4nビットレジスタが備えられている構成とした。しかし、後段の接続が許せば、バッファR読み出し部50およびバッファL読み出し部50には、レジスタが備えられていなくてもよい。この場合、整列部35は、データ幅が4倍のままで、後段に出力する。
なお、バッファL44はFIFOメモリ(First In First Out memory,ファイフォ)を用いて構成してもよい。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。