(57)【要約】【課題】  複数のデータ入出力処理を行うことで出力される最終的なデータをより迅速に出力することができるようにする。【解決手段】  第１入出力処理では、Ｎ番目データを入力して一次データ５５０を出力する第１処理と、その一次データ５５０を入力して第１入出力処理結果データ６５０を出力する第２処理とが行われ、第２入出力処理では、第２処理によって出力された第１処理結果データ６５０を入力し別の一次データ７５０を出力する第３処理と、その別の一次データ７５０を入力して第２入出力処理結果データ８５０を出力する第４処理とが行われるようになっている場合に、Ｎ番目データについて一次データが出力された後、そのＮ番目データについての別の一次データが出力される前に、Ｎ−１番目或いはＮ＋１番目データについての一次データを出力する第１又は第３処理を行う。【選択図】        図１４
2005086501.tif 000002
【特許請求の範囲】
【請求項１】
第１と第２のデータ入出力処理により連続するデータを所定単位で処理する入出力手段を備えるデータ処理装置において、
前記入出力手段が、前記第１のデータ入出力処理では、前記所定単位のデータについて第１入出力処理結果データを出力し、前記第２のデータ入出力処理では、前記第１入出力処理結果データについて、第２入出力処理結果データを出力するようになっていて、前記所定単位のデータについての前記第２入出力処理を開始する前に、該データに続く別の所定単位のデータについての前記第１入出力処理を行うことを特徴とする、データ処理装置。
【請求項２】
所定周期のクロック信号を出力するクロック出力部を更に備え、
前記入出力手段が、
前記クロック信号に同期した第１のタイミングで、前記所定単位のデータについての前記第１入出力処理結果データを出力し、
前記第１のタイミングに続く第２のタイミングで、前記第１のタイミングで出力された前記第１入出力処理結果データについて前記第２入出力処理結果データを出力する第２のデータ入出力処理と、前記所定単位のデータに連続する別の所定単位のデータについての前記第１入出力処理結果データを出力する第１のデータ入出力処理とを行うことを特徴とする、
データ処理装置。
【請求項３】
前記第１のデータ入出力処理では、
Ｎ番目の所定単位データについて２つのサブデータを取得する第１処理と、
前記取得された２つのサブデータを用いて前記第１入出力処理結果データを出力する第２処理と
が連続的に行われるようになっており、
前記第２のデータ入出力処理では、
前記Ｎ番目の所定単位データについての前記第１入出力処理結果データについて２つの別のサブデータを取得する第３処理と、
前記取得された２つの別のサブデータを用いて前記第２入出力処理結果データを出力する第４処理と
が連続的に行われるようになっており、
前記入出力手段が、前記Ｎ番目の所定単位データについての前記第１処理と前記第３処理との間に、相互にインターバルを空けることなく連続的に、Ｎ−１番目の所定単位データについての第３処理と、前記Ｎ＋１番目の所定単位データについての第１処理とを行うことを特徴とする、
請求項１記載のデータ処理装置。
【請求項４】
前記第１のデータ入出力処理では、
Ｎ番目の所定単位データを用いて、前記第１入出力処理結果データを求めるための２つの要素データにそれぞれ対応した２つのデータアドレスを取得する第１処理と、
前記取得された２つのデータアドレスから前記２つの要素データをそれぞれ取得する第２処理と、
前記取得された２つの要素データを用いて前記第１入出力処理結果データを求める第３処理と
が連続的に行われるようになっており、
前記第２のデータ入出力処理では、
前記Ｎ番目の所定単位データについての前記第１入出力処理結果データを用いて、前記第２入出力処理結果データを求めるための２つの別の要素データにそれぞれ対応した２つの別のデータアドレスを取得する第４処理と、
前記取得された前記２つの別のデータアドレスからそれぞれ前記２つの別の要素データを取得する第５処理と、
前記取得された２つの別の要素データを用いて前記第２入出力処理結果データを求める第６処理と
が連続的に行われるようになっており、
前記入出力手段が、前記Ｎ番目の所定単位データについての前記第１処理と前記第４処理との間に、相互にインターバルを空けることなく連続的に、Ｎ−１番目の所定単位データについての第４処理と、Ｎ＋１番目の所定単位データについての第１処理とを行い、且つ、前記Ｎ番目の所定単位データについての前記第２処理と前記第５処理との間に、相互にインターバルを空けることなく連続的に、Ｎ−１番目の所定単位データについての第５処理と、Ｎ＋１番目の所定単位データについての第２処理とを行うことを特徴とする、
請求項１記載のデータ処理装置。
【請求項５】
所定周期のクロック信号を出力するクロック出力部を更に備え、
前記入出力手段は、
Ｋ〜Ｋ＋１クロックで、前記Ｎ番目の所定単位データについての前記第１処理を行い、
Ｋ＋２〜Ｋ＋３クロックで、前記Ｎ−１番目の所定単位データについての前記第４処理を行い、
Ｋ＋４〜Ｋ＋５クロックで、前記Ｎ＋１番目の所定単位データについての前記第１処理を行い、
Ｋ＋６〜Ｋ＋７クロックで、前記Ｎ番目の所定単位データについての前記第４処理を行い、且つ、
Ｋ＋１〜Ｋ＋２クロックで、前記Ｎ番目の所定単位データについての前記第２処理を行い、
Ｋ＋３〜Ｋ＋４クロックで、前記Ｎ−１番目の所定単位データについての前記第５処理を行い、
Ｋ＋５〜Ｋ＋６クロックで、前記Ｎ＋１番目の所定単位データについての前記第２処理を行い、
Ｋ＋７〜Ｋ＋８クロックで、前記Ｎ番目の所定単位データについての前記第５処理を行う、
請求項４記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータ入出力処理を行うデータ処理技術に関し、具体的には、例えば、入力画像データを複数のルックアップテーブルに基づいて処理し出力するための技術に関する。
【背景技術】
【０００２】
複数のデータ入出力処理を行うデータ処理技術として、例えば、複数のルックアップテーブルを参照して入力画像データに対し複数の色変換処理を行う技術が知られている（例えば特許文献１）。
【０００３】
【特許文献１】特開平１０−１９８７９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このように、複数のデータ入出力処理を行うことで最終的なデータを出力するデータ処理技術において、より迅速に上記最終的なデータを出力することができれば、データ処理装置全体における処理の高速化が期待される。
【０００５】
従って、本発明の目的は、複数のデータ入出力処理を行うことで出力される最終的なデータをより迅速に出力することができるようにすることにある。
【課題を解決するための手段】
【０００６】
本発明に従うデータ処理装置は、第１と第２のデータ入出力処理により連続するデータ（例えば画像データに含まれる多数の画素データ）を所定単位で処理する入出力手段を備えるデータ処理装置であって、前記入出力手段が、前記第１のデータ入出力処理では、前記所定単位のデータについて第１入出力処理結果データを出力し、前記第２のデータ入出力処理では、前記第１入出力処理結果データについて、第２入出力処理結果データを出力するようになっていて、前記所定単位のデータについての前記第２入出力処理を開始する前に（或いは終了する前に）、該データに続く別の所定単位のデータについての前記第１入出力処理を行うことを特徴とする。
【０００７】
第１の好適な実施形態では、データ処理装置は、所定周期のクロック信号を出力するクロック出力部を更に備え、前記入出力手段が、前記クロック信号に同期した第１のタイミングで、前記所定単位のデータについての前記第１入出力処理結果データを出力し、前記第１のタイミングに続く第２のタイミングで、前記第１のタイミングで出力された前記第１入出力処理結果データについて前記第２入出力処理結果データを出力する第２のデータ入出力処理と、前記所定単位のデータに連続する別の所定単位のデータについての前記第１入出力処理結果データを出力する第１のデータ入出力処理とを行う。
【０００８】
第２の好適な実施形態では、前記第１のデータ入出力処理では、Ｎ番目（Ｎは整数で例えばＮ≧２）の所定単位データについて２つのサブデータを取得する第１処理と、前記取得された２つのサブデータを用いて前記第１入出力処理結果データを出力する第２処理とが連続的に行われるようになっており、前記第２のデータ入出力処理では、前記Ｎ番目の所定単位データについての前記第１入出力処理結果データについて２つの別のサブデータを取得する第３処理と、前記取得された２つの別のサブデータを用いて前記第２入出力処理結果データを出力する第４処理とが連続的に行われるようになっており、前記入出力手段が、前記Ｎ番目の所定単位データについての前記第１処理と前記第３処理との間に、相互にインターバルを空けることなく連続的に、Ｎ−１番目の所定単位データについての第３処理と、前記Ｎ＋１番目の所定単位データについての第１処理とを行う。
【０００９】
第３の好適な実施形態では、前記第１のデータ入出力処理では、Ｎ番目の所定単位データを用いて、前記第１入出力処理結果データを求めるための２つの要素データにそれぞれ対応した２つのデータアドレスを取得する第１処理と、前記取得された２つのデータアドレスから前記２つの要素データをそれぞれ取得する第２処理と、前記取得された２つの要素データを用いて前記第１入出力処理結果データを求める第３処理とが連続的に行われるようになっており、前記第２のデータ入出力処理では、前記Ｎ番目の所定単位データについての前記第１入出力処理結果データを用いて、前記第２入出力処理結果データを求めるための２つの別の要素データにそれぞれ対応した２つの別のデータアドレスを取得する第４処理と、前記取得された前記２つの別のデータアドレスからそれぞれ前記２つの別の要素データを取得する第５処理と、前記取得された２つの別の要素データを用いて前記第２入出力処理結果データを求める第６処理とが連続的に行われるようになっており、前記入出力手段が、前記Ｎ番目の所定単位データについての前記第１処理と前記第４処理との間に、相互にインターバルを空けることなく連続的に、Ｎ−１番目の所定単位データについての第４処理と、Ｎ＋１番目の所定単位データについての第１処理とを行い、且つ、前記Ｎ番目の所定単位データについての前記第２処理と前記第５処理との間に、相互にインターバルを空けることなく連続的に、Ｎ−１番目の所定単位データについての第５処理と、Ｎ＋１番目の所定単位データについての第２処理とを行う。
【００１０】
第４の好適な実施形態では、第３の好適な実施形態において、データ処理装置が、所定周期のクロック信号を出力するクロック出力部を更に備え、前記入出力手段は、Ｋ〜Ｋ＋１クロックで、前記Ｎ番目の所定単位データについての前記第１処理を行い、Ｋ＋２〜Ｋ＋３クロックで、前記Ｎ−１番目の所定単位データについての前記第４処理を行い、Ｋ＋４〜Ｋ＋５クロックで、前記Ｎ＋１番目の所定単位データについての前記第１処理を行い、Ｋ＋６〜Ｋ＋７クロックで、前記Ｎ番目の所定単位データについての前記第４処理を行い、且つ、Ｋ＋１〜Ｋ＋２クロックで、前記Ｎ番目の所定単位データについての前記第２処理を行い、Ｋ＋３〜Ｋ＋４クロックで、前記Ｎ−１番目の所定単位データについての前記第５処理を行い、Ｋ＋５〜Ｋ＋６クロックで、前記Ｎ＋１番目の所定単位データについての前記第２処理を行い、Ｋ＋７〜Ｋ＋８クロックで、前記Ｎ番目の所定単位データについての前記第５処理を行う（Ｋは整数で例えばＫ≧１）。
【００１１】
ここで、データ処理装置は、例えば、ガンマ補正を行う装置であっても良い。その場合、「所定単位のデータ」は、例えば、画像データを構成する多数の画素データの各々が表す入力値あっても良い。また、「データアドレス」は、例えば、全入力値のうちの少なくともｕ（ｋ）＝ａ＊ｂ−ｋ（ただし、ａ、ｂは定数、ｋ＝０，１，２・・ｍ）で表される入力値：ｕ（ｋ）に対応するデータアドレス（又は、入力画素データの所定部分（例えば上位又は下位Ｘビット）から取得されるデータアドレス）であっても良い。また、そのデータアドレスから取得される「要素データ」は、そのデータアドレスを有する第１のガンマ補正テーブルに格納されている複数の変換値のうちの一つである。また、「第１入出力処理結果データ」は、例えば、２つの変換値（要素データ）と線形補間とを用いて得られるデータであっても良い。また、「別のデータアドレス」は、ｖ（ｋ）＝ｃｋ＋ｄ（ただし、ｃ、ｄは定数、ｋ＝０，１，２・・ｎ）で表される第１入出力処理結果データ：ｖ（ｋ）に対応するデータアドレス（又は、第１入出力処理結果データの所定部分（例えば上位又は下位Ｘビット）から取得されるデータアドレス）であっても良い。また、その別のデータアドレスから取得される「別の要素データ」は、前記第３処理によって得られた第１の入出力処理結果データに応じて設定される変換値が格納された第２のガンマ補正テーブルが有する複数の変換値のうちの一つである。また、「第２入出力処理結果データ」は、例えば、２つの変換値（要素データ）と線形補間とを用いて得られるデータであっても良い。
【００１２】
本発明に従うデータ処理装置において行われる各入出力処理はコンピュータにより実施することができるが、そのためのコンピュータプログラムは、ディスク型ストレージ、半導体メモリ及び通信ネットワークなどの各種媒体を通じてコンピュータにインストール又はロードすることができる。
【００１３】
また、本発明のデータ処理装置は、専用ハードウェア、プログラムされたコンピュータ、又はそれらの組合せのいずれによっても実現することができる。
【発明の効果】
【００１４】
本発明によれば、前記所定単位のデータについての第２入出力処理を開始する前に、該データに続く別の所定単位のデータについての第１入出力処理が開始される。これにより、所定単位のデータについての第１入出力処理と、別のデータについての第1入出力処理との間の時間が有効に活用され、その結果、データ処理の速度が全体として高速になる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の一実施例を、下記のようなガンマ補正装置に適用した場合の実施例について説明する。
【００１６】
まず、そのガンマ補正装置について説明し、その後、そのガンマ補正装置におけるデータ処理を高速化するための仕組みについて説明する。
【００１７】
図１は、本実施例におけるガンマ補正装置を備えた画像読取りシステムを示すブロック図である。
【００１８】
本実施例による画像読み取りシステムは、イメージスキャナ（以下、単に「スキャナ」と言う）１等の画像入力装置と、パーソナルコンピュータ（以下、「ＰＣ」と略記）３６等の情報処理端末とを備えている。スキャナ１とＰＣ３６とは、互いにＵＳＢ（Universal Serial Bus）等のインタフェース３４を介して接続されている。
【００１９】
ＰＣ３６には、ＣＰＵ４０、ＲＯＭ３８及びＲＡＭ４２等のメモリ、ハードディスク装置４４、操作部４８及び表示部４６が備えられている。
【００２０】
ＣＰＵ４０は、ＲＯＭ３８及びハードディスク装置４４に格納されたプログラムを実行し、ＰＣ３６の各部を制御する他、ハードディスク装置４４に格納されたＴＷＡＩＮドライバ（図示せず）を実行してスキャナ１０を制御する。ＴＷＡＩＮドライバは、ＰＣ３６に対して処理の処理、例えば、ＰＣ３６にインストールされているアプリケーションソフトウェアからスキャナ１に直接アクセスし、スキャナ１によって読み込まれたイメージをアプリケーションに取り込む処理を実行させる。
【００２１】
ＲＯＭ３８は、ＣＰＵ４０が動作するために最低限必要なプログラムやデータを予め格納しているメモリである。ＲＡＭ４２は、各種プログラムや各種データを一時的に格納するメモリである。
【００２２】
ハードディスク装置４４には、オペレーティングシステム、ＴＷＡＩＮドライバ等の各種のプログラムやデータが予め記憶されている。
【００２３】
操作部４８は、マウス等のポインティングデバイスやキーボード等の入力装置を備え、ユーザが画像の読み取りを指示するためのものである。
【００２４】
表示部４６は、ドットマトリクス表示のディスプレイ、制御回路、ＶＲＡＭ（Video RAM）などで構成され、スキャナ１０からインターフェース３４を介して入力された画像を表示する。
【００２５】
スキャナ１０には、光源１２、縮小光学系１４、イメージセンサ１６、ＡＦＥ（Analog Front End）部１８、制御部３２、及びディジタル画像処理部２０が備えられている。
【００２６】
光源１２は、蛍光管ランプ等の管照明装置から構成され、原稿を照射する。
【００２７】
光学系１４は、ミラー及びレンズで構成されている。光学系１４は、光源１２に照射された原稿の反射光像をイメージセンサ１６に縮小して結像させる。
【００２８】
イメージセンサ１６は、光学系１４により結像される走査線上の光学像を走査し、その光学像の濃淡に相関する電気信号を出力する。イメージセンサ１６は、可視光、赤外光、紫外光等、所定の波長領域の光を光電変換して得られる電荷をフォトダイオード等の受光素子に一定時間蓄積し、受光素子ごとの受光量に応じた電気信号をＣＣＤ（Charge Coupled Device）、ＭＯＳトランジスタスイッチ等を用いて出力する。
【００２９】
ＡＦＥ部１８は、アナログ信号処理部、Ａ／Ｄ変換器等から構成される。アナログ信号処理部は、イメージセンサ１６から出力された電気信号に対して増幅、雑音低減処理等のアナログ信号処理を施して出力する。Ａ／Ｄ変換器は、アナログ信号処理部から出力された電気信号を所定値ビット、例えば１６ビットのディジタル表現の信号に量子化して出力する。
【００３０】
制御部３２は、ＲＯＭ３０、ＣＰＵ２８、ＲＡＭ２６等を備え、スキャナ１０の各部を制御する。ＲＯＭ３０は、ＣＰＵ２８で実行されるファームウェアやデータを予め格納しているメモリである。ファームウェアは制御部３２を設定手段及び変換手段の一部として機能させる。後述する第一テーブル５４はＲＯＭ３０に予め格納されている。ＲＡＭ２６は、各種プログラムや各種データを一時的に格納するメモリである。
【００３１】
ディジタル画像処理部２０は、ガンマ補正装置としてのガンマ補正部２２、シェーディング補正部２４等を備えるＡＳＩＣである。ディジタル画像処理部２０は、ＡＦＥ部１８から出力される信号に対し、ガンマ補正、画素補間法による欠陥画素の補間、シェーディング補正、画像信号の鮮鋭化等の処理を行って画像データを作成する。尚、ディジタル画像処理部２０で施す上記各種の処理は、制御部３２で実行するコンピュータプログラムによる処理に置き換えてもよい。
【００３２】
図２は、ガンマ補正部２２を示すブロック図である。図３は、ガンマ補正部２２の処理内容を説明するための図である。
【００３３】
第一変換部５０は、ＡＦＥ部１８から出力される１６ビット階調のデータ：ｘを、スキャナ１０内のＳＲＡＭ５２（図１では図示せず）に格納された第一テーブル５４と線形補間とを用いて所定の特性で変換し、１６ビット階調の第一変換データ：Ｆ（ｘ）を生成する。
【００３４】
ここで、第一テーブル５４は、制御部３２のＲＯＭ３０に格納されているデータがスキャナ１０の起動時にＳＲＡＭ５２の所定のアドレス空間に格納されたものである。また、カラー入力の場合、ＲＧＢ各色毎に異なる第一テーブル５４が必要になる。また、ＳＲＡＭ５２は、ガンマ補正部２２を構成するＡＳＩＣと同一基板上に形成されていてもよいし、そのＡＳＩＣに外付けされていてもよい。
【００３５】
第一テーブル５４には、２s・ｂ-k（ただし、ｓは入力値のビット数とし、ｋ＝０，１，２…ｍとし、ｍ＋１は第一テーブルの語数とする。）で表される入力値：ｘに対応する１２８個のアドレスに１６ビット階調の変換値が格納されている。尚、変換値の階調及び個数はこれらの数に限られるものではなく、ＡＦＥ部１８の出力階調、要求される補正精度等に応じて適宜設定できるものであり、例えば変換値の個数は６４個、２０８個、２５６個などに設定でき、変換値の階調は８ビット、１２ビットなどに設定できる。第一テーブル５４の変換値の個数を１２８とし、変換値の階調を１６ビットとすると、１２８個の変換値には、２０４８ビット（１２８×１６＝２11）のＳＲＡＭ５２の容量が割り当てられる。第一テーブル５４には、前述の入力値：ｘに対応する１２８個のアドレスに、入力値：ｘとの間に以下の（数１）
【００３６】
【数１】
2005086501.tif 000003
の相関を有する１６ビット階調の変換値ｆ（ｘ）が格納されている。γは、図１１に示すように入力値が小さい範囲において入力値に対する変換値の変化の割合が大きく、入力値が大きい範囲において入力値に対する変換値の変化の割合が小さい変換特性になるものが望ましく、具体的には例えばγ≒１．８であることが望ましい。図３（Ａ）には、入力値Ａ〜Ｆに対応するアドレスにｆ（Ａ）〜ｆ（Ｆ）の変換値が格納されていることが示されている。
【００３７】
第一変換部５０は、次式（数２）で表すＦ（ｘ）を次のように求める。
【００３８】
【数２】
2005086501.tif 000004
ただし、ｓは入力値のビット数とし、ｂは２s・ｂ-t＝１を満たす定数とし、ｔ＋１は第一テーブルの変換値の個数とする。
【００３９】
第一変換部５０は、はじめに、ＡＦＥ部１８から出力される１６ビット階調のデータに基づいて、第一テーブル５４の連続する２つのアドレスを求める。すなわち、第一変換部５０は、ＡＦＥ部１８から出力されるデータ（つまり第１変換部５０への入力値）をｘとすると、次式（Ｗ）、
２sｂ-k ≧ｘ＞２sｂ-(k+1)・・・（Ｗ）
を満たすｋに予め対応付けられたアドレスと、その次のアドレスを求める。
【００４０】
ここでｋに対応付けられているアドレスは、第一テーブル５４のアドレスに予め対応付けられている入力値のうち実際の入力値ｘを越える最も小さな入力値（図３（Ａ）ではＦに相当）に対応付けられているものである。また、ｋ＋１に対応付けられているアドレスは、第一テーブル５４のアドレスに予め対応付けられている入力値のうち実際の入力値ｘを越えない最も大きな入力値（図３（Ａ）ではＥに相当）に対応付けられているものである（図４に、第一変換部５０の入力値と第一テーブル５４のアドレスとの対応付けを表す表を示す）。
【００４１】
第一変換部５０は、次に、先に求めた２つのアドレスを指定して第一テーブル５４から２つの変換値ｆ（２sｂ-k ）（図３（Ａ）ではｆ（Ｆ）に相当）及びｆ（２sｂ-(k+1) ）（図３（Ａ）ではｆ（Ｅ）に相当）を演算用のレジスタに格納し、上記（数２）を満たすＦ（ｘ）を求めることによって、第一テーブル５４を線形補間する。これにより、入力値ｘに対応する１６ビット階調の第一変換データ：Ｆ（ｘ）が第一変換部５０から出力される。次式（数３）は、上記（数２）に図３（Ａ）に示した各値を代入した式である。
【００４２】
【数３】
2005086501.tif 000005
第二変換部５８は、第一変換部から出力される１６ビット階調のデータを、ＳＲＡＭ５２に格納された第二テーブル５６と線形補間とを用いて所定の特性で変換し、１６ビット階調の第二変換データを生成する。
【００４３】
第二テーブル５６は、スキャナ１０を制御するＰＣ３６で実行されるドライバプログラムによって求められる８ビット階調の最適化テーブルに基づいて、スキャナ１０の制御部３２がファームウェアを実行して生成しＳＲＡＭ５２に格納するものである。
【００４４】
ここで、最適化テーブルは、ＴＷＡＩＮに準拠したドライバプログラムが低解像度の画像データに基づいて生成し、ＰＣ３６からスキャナ１０にダウンロードされるテーブルに相当する。また、カラー入力の場合、ＲＧＢ各色毎に異なる最適化テーブルが必要になる。最適化テーブルには、Ｆ（ｘ）＝ｋ（ただし、ｋ＝０，１，２，・・・，２５５）に対応するアドレスに８ビット階調の変換値が格納されている。尚、最適化テーブルの変換値の個数及び階調はこれらに限定されるものではない。制御部３２は、ファームウェアを実行し、ＲＡＭ２６にロードされた８ビット変換値を１６ビットに変換し、１６ビット階調の変換値ｇ（ｘ）が格納された第二テーブル５６を生成する。この変換は、例えば最適化テーブルの変換値を２５７倍することによって行う。尚、第二テーブル５６の変換値の階調は１６ビットに限らず、スキャナ１０の基本解像度等に応じて適宜設定すればよい。第二テーブル５６の変換値の階調を１６ビットとし、変換値の個数を２５６個とすると、第二テーブル５６の変換値には、４０９６ビット（２５６×１６＝２12）のＳＲＡＭ５２の容量が割り当てられる。
【００４５】
第二変換部５８は、次式（数４）で表すＧ（ｘ）を次のように求める。
【００４６】
【数４】
2005086501.tif 000006
ただし、Ｆ（ｘ）は入力値（第一変換部の出力値）とし、ｕは入力値のビット数とし、２n は第二テーブルの変換値の個数とする。
【００４７】
図３（Ｂ）及び図５は、第二変換部５８の処理内容を説明するための図である。
【００４８】
第二変換部５８は、はじめに、第一変換部５０の出力結果Ｆ（ｘ）が格納されるレジスタ６２の上位ｎビット（図３（Ｂ）及び図５ではｎ＝８）に基づいて第二テーブル５６の連続する２つのアドレスを求める。すなわち、第二変換部５８は、次式（Ｔ）
２u-n （ｋ＋１）≧Ｆ（ｘ）＞２u-n ｋ・・・（Ｔ）
を満たすｋに予め対応付けられたアドレスと、その次のアドレスを求める（図３（Ｂ）及び図５ではｕ＝１６）。
【００４９】
次に、第二変換部５８は、先に求めた２つのアドレスを指定して第二テーブル５６から２つの変換値ｇ（２u-n ｋ）（図３（Ｂ）ではｇ（Ｅ）に相当）、ｇ（２u-n
（ｋ＋１））（図３（Ｂ）ではｇ（Ｆ）に相当）を演算用のレジスタに格納し、上記（数４）を満たすＧ（ｘ）を求めることによって第二テーブル５６を線形補間する。これにより、第二変換部５８への入力値ｘに対応する１６ビット階調の第二変換データ：Ｇ（ｘ）が第二変換部５８から出力される。次式（数５）は、上記（数４）に図３（Ｂ）に示した各値を代入した式である。
【００５０】
【数５】
2005086501.tif 000007
さて、図２に示すセレクタ６０は、第一変換部５０から出力される第一変換データ、又は、第二変換部５８から出力される第二変換データ（図５参照）のいずれか一方をガンマ補正部２２の出力として選択する。具体的には、例えば、セレクタ６０は、低解像度で画像を入力するプレスキャン時には、第一変換データをガンマ補正部２２の出力として選択し、プレスキャンに続いて高解像度で画像を入力する時には、第二変換データをガンマ補正部２２の出力として選択する。
【００５１】
図６は、本実施例による画像読み取りシステムで画像を入力する処理の流れを示すシーケンスチャートである。
【００５２】
ＰＣ３６から所定のパラメータがスキャナ１０に送出され、原稿の読み取りが指示されると、スキャナ１０の制御部３２は、光源１２、イメージセンサ１６、ＡＦＥ部１８等を制御し、ディジタル画像処理部２０に低解像度の画像データを入力する（Ｓ１００）。
【００５３】
次に、スキャナ１０の制御部３２は、ディジタル画像処理部２０を制御し、低解像度の画像データ及び第一テーブル５４に基づいて生成した第一変換データ：Ｆ（ｘ）を第一変換部５０から出力させ、セレクタ６０に第一変換データ：Ｆ（ｘ）を選択させる。この結果、低解像度の画像データを変換して生成された第一変換データがガンマ補正部２２から出力される（Ｓ１０５）。
【００５４】
次に、スキャナ１０の制御部３２は、ディジタル画像処理部２０を制御し、第一変換データに対してシェーディング補正等を行わせ、その結果得られた低解像度画像データをインタフェース３４を通じてＰＣ３６に送出させる（Ｓ１１０）。
【００５５】
ＰＣ３６は、インタフェース３４を通じて入力された低解像度画像データをＲＡＭ４２に格納し、ＴＷＡＩＮに準拠したドライバプログラムの実行により、低解像度画像データに応じた最適化テーブル、すなわち、原稿に応じた最適化テーブルを生成する（Ｓ１１５）。ＴＷＡＩＮに準拠したドライバプログラムの場合、最適化テーブルには、２５６語のアドレス空間に８ビットの変換値が格納される。最終的にＰＣ３６に入力しようとする解像度より低い解像度の画像データに基づいて最適化テーブルを生成することにより、最適化テーブルを生成するために必要なデータ処理量を低減することができる。
【００５６】
次に、ＰＣ３６からインタフェースを通じて最適化テーブルがスキャナ１０に送出される（Ｓ１２０）。
【００５７】
スキャナ１０は、インタフェース３４を通じて入力された最適化テーブルを制御部３２のＲＡＭ２６に格納し、ファームウェアの実行により最適化テーブルの変換値を１６ビットに変換し、変換の結果得られる第二テーブルをディジタル画像処理部２０のＳＲＡＭ５２に格納する（Ｓ１２５）。
【００５８】
次に、スキャナ１０の制御部３２は、光源１２、イメージセンサ１６、ＡＦＥ部１８等を制御し、ディジタル画像処理部２０に高解像度の画像データを入力させる（Ｓ１３０）。
【００５９】
次に、スキャナ１０の制御部３２は、ディジタル画像処理部２０を制御し、高解像度の画像データ及び第一テーブル５４に基づいて第一変換データ：Ｆ（ｘ）を第一変換部５０から出力させ、さらに、第一変換データ及び第二テーブル５６に基づいて第二変換データ：Ｇ（ｘ）を第二変換部５８から出力させ、セレクタ６０に第二変換データ：Ｇ（ｘ）を選択させる。この結果、高解像度の画像データを変換して生成された第二変換データがガンマ補正部２２から出力される（Ｓ１３５）。
【００６０】
次に、スキャナ１０の制御部３２は、ディジタル画像処理部２０を制御し、第二変換データに対してシェーディング補正等を行わせ、その結果得られた高解像度画像データをインタフェース３４を通じてＰＣ３６に送出させる（Ｓ１４０）。
【００６１】
以下、上述の実施例について、ガンマ補正における理論補正値と実際の補正値との誤差を比較検証した結果について説明する。
【００６２】
図７は、比較例として１６ビット階調の変換値を４０９６個格納したテーブルと線形補間とを用いて１６ビット階調の入力値を１６ビット階調の変換値にガンマ補正したときの補正値と理論補正値との誤差を示すグラフである。図８は、図７の一部を拡大表示したグラフである。図９は、１６ビット階調の変換値を１２８個有する第一テーブル５４と、１６ビット階調の変換値を２５６個有する第二テーブル５６とを用いた本発明の一実施例により、１６ビット階調の入力値を１６ビット階調の変換値にガンマ補正したときの補正値と理論補正値との誤差を示すグラフである。図１０は、図９の一部を拡大表示したグラフである。
【００６３】
図７〜図１０に示すように、本実施例における理論補正値と実際の補正値との誤差は、比較例と比べた場合、入力値が相対的に小さい範囲では誤差がかなり小さく、入力値が相対的に大きい範囲では誤差がやや大きく、全体としての誤差の増分はマイナスか或いは実質的に無視できる程度のプラスである。
【００６４】
一方、比較例と本実施例について、ガンマ補正に用いるテーブルのメモリ容量を比較すると、比較例では、６５５３６（＝１６×４０９６）ビットのメモリ容量を必要とするのに対し、本実施例では、６１４４（＝（１２８＋２５６）×１６）ビットのメモリ容量しか必要としない。すなわち、本実施例によると、比較例に比べてガンマ補正の精度を実質的に同程度に維持しつつ、ガンマ補正に用いるテーブルのメモリ容量を１０分の１程度にまで低減することができる。
【００６５】
また、本実施例によると、第一テーブルと第二テーブルとを合成して新たなテーブルを作成しないため、その分だけガンマ補正に関するデータ処理量を低減することができる。
【００６６】
また、本実施例によると、第一テーブルを用いて変換した後に第二テーブルを用いた変換を実施するため、全体としての変換特性は第一テーブルの変換特性に縛られることなく、任意に設定することができる。
【００６７】
なお、上記実施例において、第一テーブル５４では、入力値と出力値との関係が対数関数で表されており、第二テーブル５６では、入力値と出力値との関係がリニアな関数で表されているが、必ずしもそうである必要は無い。例えば、第一テーブル５４及び第二テーブル５６の両方とも、リニアな関数が書かれたルックアップテーブルであっても良いし、或いは、対数関数が書かれたルックアップテーブルであっても良い。
【００６８】
また、上記実施例において、第一変換部５０は、第二変換部５８と同様に、入力データの上位ｍビットを使用して第一変換データを求め出力するようにしても良い（ｍの値は可変でも固定でも良い）。この場合、例えば、第一変換部５０は、入力データの値ｘと、ｍとの関係を表すルックアップテーブル（スキャナ１０内の所定の記憶装置に格納されているデータ）を取得し、入力データの値ｘに対応する値ｍをそのテーブルから取得し、その値ｍに基づいて第一変換を行っても良い。なお、そのルックアップテーブルでは、例えば、入力値ｘが比較的大きい場合には、ｍは小さい値（例えば５）に設定されていて、入力値ｘが比較的小さい場合には、ｍは大きい値（例えば１２）に設定されていても良い。
【００６９】
さて、次に、図１２以降を参照して、上述したガンマ補正部２２におけるデータ処理を高速化するための仕組みについて説明する。
【００７０】
まず、その仕組みをより理解し易くするために、上記ガンマ補正部２２の機能から考えられる第１のデータ処理の流れを説明する。
【００７１】
図１２（Ａ）は、上述した第１のデータ処理の流れを説明するための図である。具体的には、図１に示したディジタル画像処理部２０（ＡＳＩＣ）に入力されるクロック信号に基づいて、図２に示した第一変換部５０及び第二変換部５８がどのような流れで動作するのかを説明するための図である。
【００７２】
図１２において、「CLK」は、ディジタル画像処理部２０（ＡＳＩＣ）に入力される所定周期のクロック信号を示す。
【００７３】
「CS_A」及び「CS_B」は、ディジタル画像処理部２０のガンマ補正部２２に入力される信号を示す。信号「CS_A」は、ＳＲＡＭ５２上に構築された２つのテーブル５４及び５６のうち第１テーブル５４が選択状態にあるか否かを示し、具体的には、Ｌレベルにあるときが選択状態であることを示し、Ｈレベルにあるときが選択されていない状態であることを示す。一方、「CS_B」は、ＳＲＡＭ５２上に構築された２つのテーブル５４及び５６のうち第２テーブル５６が選択状態にあるか否かを示し、具体的には、Ｌレベルにあるときが選択状態であることを示し、Ｈレベルにあるときが選択されていない状態であることを示す。
【００７４】
「ADDRESS」は、ＳＲＡＭ５２のアドレス、別の言い方をすれば、第一テーブル５４又は第二テーブル５６のアドレスを示す。具体的には、A0[P]（ただしP=N、N+1、…）は、第一テーブル５４の連続する２つのアドレスのうち前のアドレスを示し、A1[P]は、その２つのアドレスのうち後のアドレスを示す（以下、第一テーブル５４のアドレスを「Ａアドレス」と言う）。また、B0[P]は、第二テーブル５６の連続する２つのアドレスのうち前のアドレスを示し、B1[P]は、その２つのアドレスのうち後のアドレスを示す（以下、第二テーブル５６のアドレスを「Ｂアドレス」と言う）。
【００７５】
「DATA」は、第一テーブル５４又は第二テーブル５６からそれぞれ取得された２つのデータを表す。具体的には、D(A0[P])は、第一テーブル５４の連続する２つのＡアドレスのうち前のＡアドレスを用いて取得されたデータを示し、D(A1[P])は、その２つのＡアドレスのうち後のＡアドレスを用いて取得されたデータを示す（以下、Ａアドレスから取得されたデータを「Ａデータ」と言う）。また、D(B0[P])は、第二テーブル５６の連続する２つのＢアドレスのうち前のＢアドレスを用いて取得されたデータを示し、D(B1[P])は、その２つのＢアドレスのうち後のＢアドレスを用いて取得されたデータを示す（以下、Ｂアドレスから取得されたデータを「Ｂデータ」と言う）。
【００７６】
「CALC」は、第一テーブル５４から得られた２つのＡデータを用いて計算されたデータFA(P)、又は、第二テーブル５６から得られた２つのＢデータを用いて計算されたデータFB(P)を示す。
【００７７】
この図１２（Ａ）によれば、或るクロック（これを「第一クロック」と言う）で、ＡＦＥ部１８から第一変換部５０に入力された１６ビット階調データ（以下、「元入力データ」と言う）の処理が始まると、信号「CS_A」が立ち下がり、ＳＲＡＭ５２の第一テーブル５４が選択状態となる。そのため、第一変換部５０が、上述した（Ｗ）式を用いて、元入力データの値ｘに基づき、第一テーブル５４の連続する２つのＡアドレスを求める。それら２つのＡアドレスのうち、前のＡアドレスA0[N]は第一クロックで求められ、後のＡアドレスA1[N]は第二クロックで求められる。後のＡアドレスA1[N]が取得された直後の第三クロックが立ち上がると、信号「CS_A」が立ち上がり、第一テーブル５４の選択状態が解除される。
【００７８】
前のＡアドレスA0[N]が第一クロックで求められ、後のＡアドレスA1[N]が第二クロックで求められると、それぞれ続く第二及び第三クロックで、各ＡアドレスA0[N]、A1[N]に対応した各ＡデータD(A0[N])、D(A1[N])が第一テーブルから取得されて、上記演算用のレジスタに格納される。すると、第一変換部５０が、それら２つのＡデータを用いて、上記（数２）を満たすＦ（ｘ）を求めることによって第一テーブル５４を線形補間し、それにより、第四クロックで、元入力データに対応する１６ビット階調の第一変換データFA(N)（図２ではＦ（ｘ）と図示）が第一変換部５０から出力される。
【００７９】
次に、続く第五クロックで、信号「CS_B」が立ち下がり、ＳＲＡＭ５２の第二テーブル５６が選択状態となる。そのため、第二変換部５８が、上述した（Ｔ）式を用いて、第一変換データFA(N)が格納されたレジスタ６２の上位ｎビットに基づき第二テーブル５６の連続する２つのＢアドレスB0[N]、B1[N]を求める（図５参照）。前のＢアドレスB0[N]は第５クロックで求められ、後のＢアドレスB1[N]は第六クロックで求められ、それが終了し第七クロックが立ち上がると、信号「CS_B」が立ち上がり、第二テーブル５６の選択状態が解除される。
【００８０】
前のＢアドレスB0[N]が第五クロックで求められ、後のＢアドレスB1[N]が第六クロックで求められると、それぞれ続く第六及び第七クロックで、各ＢアドレスB0[N]、B1[N]に対応したＢデータD(B0[N])、D(B1[N])が第二テーブル５６から取得されて、上記演算用のレジスタに格納される。すると、第二変換部５０が、それら２つのＢデータと、第二変換部５８への入力データＦ（ｘ）の下位ｕ−ｎビット（図５に示した例では下位８ビット）部分とを用いて、上記（数４）を満たすＧ（ｘ）を求めることによって第二テーブル５６を線形補間し、それにより、次のＢデータD(B1[N])が出力された後の第八クロックで、第二変換部５８への入力データＦ（ｘ）に対応する第二変換データFB(N)（図２ではＧ（ｘ）と図示）が出力される。
【００８１】
その後、第二変換データが出力された直後の第九クロックで、第一変換部５０に入力された次の元入力データの処理が開始され、以後、ガンマ補正部２２において上記と同様の流れでデータ処理が行われる。このデータ処理において、図１２に示すように、連続する２つのＡアドレスを求めて第一変換データの出力する一連の処理（以下、「第一変換データ出力処理」と言う）を済ますためには４クロックが必要とされ、同様に、連続する２つのＢアドレスを求めて第二変換データを出力する一連の処理（以下、「第二変換データ出力処理」と言う）を済ますためにも４クロックが必要とされる。
【００８２】
以上、この図１２（Ａ）によれば、各元入力データについての第二変換データ出力処理２００Ｂは、その元入力データについての第一変換データ出力処理２００Ａの結果として出力される第一変換データが必要である。そのため、各元入力データのデータ処理では、その元入力データについての第一変換データが出力された後でないと、その元入力データについての第二変換データ出力処理を開始することができない。それ故、各元入力データについて、第一変換データ出力処理２００Ａにおいて連続する２つのＡアドレスを取得し終えてから、第二変換データ出力処理２００Ｂが開始されるまでには、少なくとも、連続する２つのＡアドレスを取得し終えてから第一変換データが出力されるまでの時間と同じ長さの空き時間２５０が生じてしまう。
【００８３】
そこで、その空き時間２５０を有効に活用すべく、本実施例では、ガンマ補正部２２は以下のような第２のデータ処理を行う。
【００８４】
図１２（Ｂ）を参照して、ガンマ補正部２２の第２のデータ処理の流れについて説明する（なお、図１２（Ａ）を参照して説明した内容と重複する部分については説明を省略或いは簡略化する）。
【００８５】
第２のデータ処理では、過去に求められたＢアドレスのうち、少なくとも直前回に求められた連続する２つのＢアドレスと、直前回に第二変換部５８に入力された第一変換データとが、スキャナ１０内部の所定の記憶装置（例えばＲＡＭ等のメモリ、以下、これを「過去アドレス／データ記憶部」と呼ぶ）に格納される。
【００８６】
第一クロックで、第１の元入力データの処理が始まると、既に説明したように、信号「CS_A」が立ち下がり、それにより、連続する２つのＡアドレスのうち、前のＡアドレスA0[N]が求められ、続く第二クロックで、後のＡアドレスA1[N]が求められる。そして、その後に第三クロックが立ち上がると、信号「CS_A」が立ち上がり、第一テーブル５４の選択状態が解除され、且つ、第四クロックで、第１の元入力データの第一変換データFA(N)が求められる。この第一変換データFA(N)は、後の第二変換データ出力処理３００Ｂで使用するために、第一変換部５０によって上記過去アドレス／データ記憶部に格納される。
【００８７】
この第２のデータ処理では、後のＡアドレスA1[N]の取得が完了した直後に、図１２に示したような空き時間２５０を生じさせる代わりに、上記第三クロックで、信号「CS_B」が立ち下がって、第二変換データ出力処理が開始される。具体的には、第二変換部５８が、上述した過去アドレス／データ記憶部から、直前回に使用された連続する２つのＢアドレスB0[N-1]、B1[N-1]を取得する。それら連続する２つのＢアドレスのうち、第二テーブル５６が選択状態になった第三クロックで、前のＢアドレスB0[n-1]が取得され、続く第四クロックで、後のＢアドレスB1[N-1]が取得される。また、その処理に伴い、前のＢアドレスB0[N-1]が取得された第三クロックの後の第四クロックで、そのＢアドレスB0[N-1]に対応したデータD(B0[N-1])が第二テーブル５６から取得され、続く第五クロックで、後のＢアドレスB1[N-1]に対応したデータD(B1[N-1])が第二テーブル５６から取得される。そして、第二変換部５８は、上述した過去アドレス／データ記憶部から、直前回に第二変換部５８に入力された第一変換データを取得し、その第一変換データと、上述した２つのＢデータD(B0[N-1])、D(B1[N-1])とを用いて、上記（数４）を満たすＧ（ｘ）を求め、それにより、第六クロックで、上記直前回の第一変換データに対応する直前回の第二変換データFB(N-1)が出力される（なお、過去アドレス／データ記憶部には、直前回の第一変換データに代えて又は加えて、その直前回の第二変換データFB(N-1)それ自体が格納されていて、第六クロックでは、その格納されている第二変換データが出力されても良い）。
【００８８】
さて、この第２のデータ処理において、直前回に使用された連続する２つのＢアドレスのうち後のＢアドレスB1[N-1]が取得された直後の第五クロックで、第２の元入力データの処理が始まる。すると、その第五クロックで、信号「CS_A」が立ち下がり、それにより、連続する２つのＡアドレスが求められる処理が開始され、その結果、第五クロックから４クロック目の第八クロックで、上記第２の元入力データに対応した第一変換データFA(N+1)が第一変換部５０から出力される。
【００８９】
第五クロックで、第２の元入力データの処理が始まると、図１２（Ｂ）が示す通り、連続する２つのＡアドレスのうちの後のＡアドレスの取得が第六クロックで完了する。そして、その直後の第七クロックで、信号「CS_B」が立ち下がり、第四クロックで出力された、第１の元入力データの第一変換データFA(N)を用いた第二変換データ出力処理３００Ｂが開始される。このため、第七クロックから４クロック目の第十クロックで、第１の元入力データに対応した第二変換データFB(N)が第二変換部５８から出力される。また、この第七〜第十クロックにおける第二変換データ出力処理３００Ｂでは、この処理において求められた連続する２つのＢアドレスB0[N]、B1[N]は、第二変換部５８によって上記過去アドレス／データ記憶部に格納される。
【００９０】
以後、同様の流れで処理が進んでいく。
【００９１】
以上、図１２（Ｂ）及び上記説明によれば、各元入力データの処理において第一変換データ（又は第二変換データ）及び２つのＢアドレスが求められる都度に、その第一変換データ（又は第二変換データ）及び２つのＢアドレスが過去アドレス／データ記憶部に保存される。それにより、図１３に示すように、初めての第一変換データ出力処理が開始されて、第一〜第二クロックにかけて２つのＡアドレスを取得した直後は、図１２に示したような無駄な空き時間２５０を生じさせる代わりに、直前回に使用された２つのＢアドレスを取得し、その２つのＢアドレスと、直前回の第一変換データ（又は第二変換データ）とを使用した直前回の第二変換データ出力処理が行われる。
【００９２】
すなわち、第２のデータ処理では、例えばアドレスの取得処理に着目して説明すれば、第Ｎの元入力データについて２つのＡアドレスを取得した直後に（Ｎは任意の整数）、一つ前の第Ｎ−１の元入力データの第一変換データを用いた２つのＢアドレスの取得処理が行われ、次に、その処理の完了直後に、それより２つの後の第Ｎ＋１の元入力データについて２つのＡアドレスが取得される処理が行われる。このため、第Ｎの元入力データについての第一変換データ出力処理と、それについての第二変換データ出力処理との間に、第Ｎ−１の元入力データについての第二変換データ出力処理と、第Ｎ＋１の元入力データについての第一変換データ出力処理が行われることになる。結果として、図１２（Ａ）に示した第１のデータ処理では、第二変換データが出力される周期は８クロックであるが、この図１２（Ｂ）に示した第２のデータ処理では、第二変換データが出力される周期は４クロックとなる。従って、全体として、ガンマ補正部２２のデータ処理がより高速になる。
【００９３】
なお、上述した説明において、第１のデータ処理の変形例として、図１３（Ａ）に示すように、第Ｎの元入力データについての第二変換データ出力処理２００Ｂの直後に、第Ｎ＋１の元入力データについての第一変換データ出力処理２００Ａを開始することが可能である。換言すれば、第Ｎの元入力データについての２つのＢアドレスの取得が完了した直後に、第Ｎ＋１の元入力データについての２つのＡアドレスの取得を開始することが可能である。この場合、第二変換データが出力される周期は６クロック分に短縮される。
【００９４】
また、上述した説明において、第２のデータ処理の変形例として、図１３（Ｂ）に示すように、初めての第一変換データ出力処理３００Ａａの直後に、次の第一変換データ出力処理３００Ａｂを開始することが可能である。換言すれば、初めての２つのＡアドレスの取得処理の直後に、次の２つのＡアドレスの取得処理を開始することが可能である。この場合、初めての第一変換データ出力処理が開始されてから初めて第二変換データが取得されるまでに必要なクロックが２クロック分短縮されるものの、以後、第二変換データが出力される周期は４クロック分のままである。しかし、それでも、依然として、上述した第１のデータ処理の変形例よりは、第二変換データが出力される周期は短く、それ故、全体として、ガンマ補正部２２のデータ処理がより高速になる。
【００９５】
なお、過去アドレス／データ記憶部には、例えば、第一変換データのみが格納されても良い。第一変換データから、連続する２つのＢアドレスが求まり、且つ、それら２つのＢアドレスとその第一変換データから第二変換データが求まるからである。
【００９６】
ところで、上述した実施例に係る第一のデータ処理と第二のデータ処理、及び各々のデータ処理の変形例を抽象的に考えると、例えば以下のようになる。
【００９７】
まず、第一のデータ処理の抽象例について説明する。
【００９８】
図１４（Ａ）に示すように、第一のデータ処理では、入出力処理Ａと、別の入出力処理Ｂとが行われるようになっている。
【００９９】
入出力処理Ａでは、オリジナルデータを入力して第１の一次データ５００を出力するサブデータ処理ａと、その第１の一次データ５００を入力して第１の入出力処理結果データ６００を出力するサブデータ処理ｂが行われる。
【０１００】
別の入出力処理Ｂでは、第２のサブデータ処理ｂによって出力された第１の出力データ６００を入力し第２の一次データ７００を出力する第３のサブデータ処理ｃと、その第２の一次データ７００を入力して第２の入出力処理結果データ８００を出力する第４のサブデータ処理ｄとが行われる。
【０１０１】
また、この第一のデータ処理の抽象例では、第２の入出力結果データ８００（又は第２の一次データ７００）の出力直後に、別のオリジナルデータを入力して別の第１の一次データ５０１を出力するサブデータ処理ａが行われ、それにより、その処理の直後に、その第１の一次データ５０１を入力して別の第１の入出力処理結果データ６０１を出力するサブデータ処理ｂが行われる。以後、各オリジナルデータ毎に、このような処理が繰返される。
【０１０２】
上述の説明によれば、この第一のデータ処理の抽象例では、第１の一次データ５００の出力と、第２の一次データ７００の出力との間に、一次データが出力されない一定の空き時間（例えば、所定数のクロック分の空き時間）９００が生じる。
【０１０３】
次に、第二のデータ処理の抽象例について説明する。
【０１０４】
図１４（Ｂ）に示すように、第二のデータ処理では、第１の入出力処理と、第２の入出力処理とが行われるようになっている。
【０１０５】
第１の入出力処理では、オリジナルデータを入力して第１の一次データ５５０を出力する第１のサブデータ処理と、その第１の一次データ５５０を入力して第１の入出力処理結果データ６５０を出力する第２のサブデータ処理が行われる。別の言い方をすれば、第１の一次データ５５０が出力されると、連鎖的に第２のサブデータ処理が行われて第１の入出力処理結果データ６５０が出力される。
【０１０６】
第２の入出力処理では、第２のサブデータ処理によって出力された第１の出力データ６５０を入力し第２の一次データ７５０を出力する第３のサブデータ処理と、その第２の一次データ７５０を入力して第２の入出力処理結果データ８５０を出力する第４のサブデータ処理とが行われる。別の言い方をすれば、第２の一次データ７５０が出力されると、連鎖的に第４のサブデータ処理が行われて第２の入出力処理結果データ８５０が出力される。
【０１０７】
この第二のデータ処理の抽象例では、第一のデータ処理では生じてしまう空き時間９００が生じないように工夫されている。
【０１０８】
すなわち、この第二のデータ処理の抽象例では、オリジナルデータについて第１の一次データ（例えば初めての第１の一次データ５５０）が出力された後、そのオリジナルデータについての第２の一次データが出力される前に、未処理の別のオリジナルデータについての別の第１の一次データが出力される処理が行われる。これにより、一次データが出力されない空き時間が無くなって、それ故、第２の入出力処理結果データが出力される周期が、図１４（Ａ）に例示したような第一のデータ処理の抽象例に比べて短くなり、結果として、データ処理全体の処理速度が速くなる。
【０１０９】
以上、本発明の好適な実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、上述の実施例では、スキャナとＰＣを組み合わせた画像読み取りシステムに本発明を適用した例を説明したが、本発明は、複写機などの他の画像処理システムにも適用することができる。また、本発明は、上述のように２種類のルックアップテーブルに基づいて２種類のデータ入出力処理を行う場合に限らず、複数のデータ入出力処理を行う他のデータ処理装置にも適用し得る。また、上述した説明では、Ａアドレスの出力とＢアドレスの出力（別の言い方をすれば、第１の入出力処理と第２の入出力処理）が交互に行われているが、必ずしもそうである必要は無く、例えば、全ての元入力データについてＡアドレスを出力し、それにより全てのターゲットデータについて第一変換データが出力された後に、全ての第一変換データについて順次Ｂアドレスの出力が開始されても良い。
【図面の簡単な説明】
【０１１０】
【図１】本発明の一実施例による画像読み取りシステムを示すブロック図である。
【図２】本発明の一実施例に係るガンマ補正部を示すブロック図である。
【図３】本発明の一実施例に係るガンマ補正部の処理内容を示す説明図である。
【図４】本発明の一実施例に係る第一変換テーブルのアドレスと入力値との対応付けを示す表である。
【図５】本発明の一実施例に係る第二変換部の処理内容を示す説明図である。
【図６】本発明の一実施例による画像読み取りシステムで画像を入力する処理の流れを示すシーケンスチャートである。
【図７】１６ビット階調の変換値を４０９６個格納したテーブルと線形補間とを用いて１６ビット階調の入力値を１６ビット階調の変換値にガンマ補正したときの補正値と理論補正値との誤差を示すグラフである。
【図８】図７の一部を拡大表示したグラフである。
【図９】１６ビット階調の変換値を１２８個有する第一テーブルと、１６ビット階調の変換値を２５６個有する第二テーブルとを用いた本発明の一実施例により、１６ビット階調の入力値を１６ビット階調の変換値にガンマ補正したときの補正値と理論補正値との誤差を示すグラフである。
【図１０】図９の一部を拡大表示したグラフである。
【図１１】（Ａ）はガンマ補正の変換特性の一例を示すグラフであり、（Ｂ）はその部分拡大図である。
【図１２】（Ａ）は、ガンマ補正部における第一のデータ処理の流れを説明するための図であり、（Ｂ）は、ガンマ補正部における第二のデータ処理の流れを説明するための図。
【図１３】（Ａ）は、ガンマ補正部における第一のデータ処理流れの変形例を説明するための図であり、（Ｂ）は、ガンマ補正部における第二のデータ処理流れの変形例を説明するための図。
【図１４】（Ａ）は第一のデータ処理の抽象例を説明するための図であり、（Ｂ）は第二のデータ処理の抽象例を説明するための図である。
【符号の説明】
【０１１１】
１０  スキャナ
１２  光源
１４  光学系
１６  イメージセンサ
１８  ＡＦＥ部
２０  ディジタル画像処理部
２２  ガンマ補正部
３２  制御部
３６  ＰＣ
５０  第一変換部
５２  ＳＲＡＭ
５４  第一テーブル
５６  第二テーブル
５８  第二変換部
６０  セレクタ
６２  レジスタ
【図１】
2005086501.tif 000008
【図２】
2005086501.tif 000009
【図３】
2005086501.tif 000010
【図４】
2005086501.tif 000011
【図５】
2005086501.tif 000012
【図６】
2005086501.tif 000013
【図７】
2005086501.tif 000014
【図８】
2005086501.tif 000015
【図９】
2005086501.tif 000016
【図１０】
2005086501.tif 000017
【図１１】
2005086501.tif 000018
【図１２】
2005086501.tif 000019
【図１３】
2005086501.tif 000020
【図１４】
2005086501.tif 000021