(57)【特許請求の範囲】
【請求項１】
画像を投写表示する際に生じる台形歪みを補正する画像処理装置であって、
前記補正の対象となる補正前の画像を記憶するフレームメモリと、
前記フレームメモリから読み込まれた前記補正前の画像の一部を、Ｎ×Ｍ個の画素からなるブロックデータを単位として保持するブロックデータ記憶メモリと、
前記ブロックデータ記憶メモリに記憶された前記ブロックデータの位置を管理するための管理用メモリと、
前記補正後の画像に対応する前記補正前の画像を前記フレームメモリから読み込むためのパラメータを設定する設定手段と、
前記補正後の画像の各画素の位置に対応する前記補正前の画像における画素位置を、前記設定手段によって設定されたパラメータを用いて求める座標変換手段と、
前記座標変換手段によって求められた前記補正前の画素位置を包含するブロックデータが、前記ブロックデータ記憶メモリに保持されているか否かを判定する判定手段と、
前記判定手段による判定結果に応じて、前記補正前の画素位置を包含するブロックデータを、前記ブロックデータ記憶メモリおよび前記フレームメモリの少なくともいずれか一方から読み込むとともに、前記補正前の画素位置を包含するブロックデータが前記ブロックデータ記憶メモリに保持されていない場合には、前記フレームメモリから読み込んだブロックデータを前記ブロックデータ記憶メモリに書き込む読込制御手段と、
前記読込制御手段によって読み込んだ前記ブロックデータ内の画素の画素値を用いて、前記補正後の画像における各画素の画素値を求め、前記表示される補正後の画像を生成する表示画像生成手段と、を備え、
前記ブロックデータ記憶メモリは、一または複数の前記ブロックデータを格納する一または複数のエントリから構成されており、
前記管理用メモリには、前記エントリ毎に、該エントリの有効性を表す識別子と、該エントリに記憶されているブロックデータの最小Ｘ座標と、該エントリに記憶されているブロックデータの最大Ｘ座標と、前記最小Ｘ座標のブロックデータが記憶されている前記ブロックデータ記憶メモリ内の実アドレスと、が対応付けて記憶されており、
前記読込制御手段は、前記ブロックデータ記憶メモリから前記ブロックデータの読み込みを行う際に、前記管理用メモリを参照して、前記ブロックデータが記憶されている位置を検出し、該位置に基づき、前記ブロックデータ記憶メモリから、前記ブロックデータの読み込みを行う、
画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記読込制御手段は、前記判定手段によって前記補正前の画素位置を包含するブロックデータが前記ブロックデータ記憶メモリに保持されていると判定された場合に、前記ブロックデータ記憶メモリから該ブロックデータを読み込み、前記判定手段によって前記補正前の画素位置を包含するブロックデータが前記ブロックデータ記憶メモリに保持されていないと判定された場合に、前記フレームメモリから該ブロックデータを読み込むとともに該読み込んだブロックデータを前記ブロックデータ記憶メモリに書き込む
画像処理装置。
【請求項３】
請求項１または２に記載の画像処理装置であって、
前記判定手段は、現在の補正前の画素位置のＹ座標に対応する前記ブロックデータ記憶メモリ内のエントリにおいて、前記識別子が有効である旨を表し、かつ、現在の補正前の画素位置のＸ座標が、前記最小Ｘ座標と前記最大Ｘ座標との範囲に含まれる場合に、該補正前の画素位置を包含するブロックデータが、前記ブロックデータ記憶メモリに保持されていると判定する
画像処理装置。
【請求項４】
請求項１から請求項３までのいずれか一項に記載の画像処理装置であって、
前記表示画像生成手段は、前記ブロックデータ内の各画素の画素値と、Ｎ×Ｍの行列からなる所定の補間フィルタとを乗じることで、前記補正後の画像における各画素の画素値を求める
画像処理装置。
【請求項５】
請求項１から請求項４までのいずれか一項に記載の画像処理装置であって、
前記フレームメモリは、Ｍ個のバンクから構成されており、前記補正前の画像を、ライン毎に前記Ｍ個のバンクに割り振って記憶する
画像処理装置。
【請求項６】
請求項１から請求項５までのいずれか一項に記載の画像処理装置を備えたプロジェクタ。
【請求項７】
画像を投写表示する際に生じる台形歪みを、画像処理装置によって補正する画像処理方法であって、
前記画像処理装置は、前記補正の対象となる補正前の画像を記憶するフレームメモリと、前記フレームメモリから読み込まれた前記補正前の画像の一部を、Ｎ×Ｍ個の画素からなるブロックデータを単位として保持するブロックデータ記憶メモリと、前記ブロックデータ記憶メモリに記憶された前記ブロックデータの位置を管理するための管理用メモリとを備え、前記ブロックデータ記憶メモリは、一または複数の前記ブロックデータを格納する一または複数のエントリから構成されており、
前記補正後の画像に対応する前記補正前の画像を前記フレームメモリから読み込むためのパラメータを設定し、
前記補正後の画像の各画素の座標に対応する前記補正前の画像における画素位置を、前記設定されたパラメータを用いて求め、
前記求められた前記補正前の画素位置を包含するブロックデータが、前記ブロックデータ記憶メモリに保持されているか否かを判定し、
前記判定の結果に応じて、前記補正前の画素位置を包含するブロックデータを、前記ブロックデータ記憶メモリおよび前記フレームメモリの少なくともいずれか一方から読み込むとともに、前記補正前の画素位置を包含するブロックデータが前記ブロックデータ記憶メモリに保持されていない場合には、前記フレームメモリから読み込んだブロックデータを前記ブロックデータ記憶メモリに書き込み、
前記読み込んだブロックデータ内の画素の画素値を用いて、前記補正後の画像における各画素の画素値を求め、前記表示される補正後の画像を生成し、
前記管理用メモリには、前記エントリ毎に、該エントリの有効性を表す識別子と、該エントリに記憶されているブロックデータの最小Ｘ座標と、該エントリに記憶されているブロックデータの最大Ｘ座標と、前記最小Ｘ座標のブロックデータが記憶されている前記ブロックデータ記憶メモリ内の実アドレスと、が対応付けて記憶されており、
前記ブロックデータ記憶メモリから前記ブロックデータの読み込みを行う際には、前記管理用メモリを参照して、前記ブロックデータが記憶されている位置を検出し、該位置に基づき、前記ブロックデータ記憶メモリから、前記ブロックデータの読み込みを行う、
画像処理方法。
【請求項８】
コンピュータが、画像を投写表示する際に生じる台形歪みを補正するためのコンピュータプログラムであって、
前記コンピュータは、前記補正の対象となる補正前の画像を記憶するフレームメモリと、前記フレームメモリから読み込まれた前記補正前の画像の一部を、Ｎ×Ｍ個の画素からなるブロックデータを単位として保持するブロックデータ記憶メモリと、前記ブロックデータ記憶メモリに記憶された前記ブロックデータの位置を管理するための管理用メモリとを備え、前記ブロックデータ記憶メモリは、一または複数の前記ブロックデータを格納する一または複数のエントリから構成されており、
前記補正後の画像に対応する前記補正前の画像を前記フレームメモリから読み込むためのパラメータを設定する機能と、
前記補正後の画像の各画素の位置に対応する前記補正前の画像における画素位置を、前記設定されたパラメータを用いて求める機能と、
前記求められた前記補正前の画素位置を包含するブロックデータが、前記ブロックデータ記憶メモリに保持されているか否かを判定する機能と、
前記判定の結果に応じて、前記補正前の画素位置を包含するブロックデータを、前記ブロックデータ記憶メモリおよび前記フレームメモリの少なくともいずれか一方から読み込むとともに、前記補正前の画素位置を包含するブロックデータが前記ブロックデータ記憶メモリに保持されていない場合には、前記フレームメモリから読み込んだブロックデータを前記ブロックデータ記憶メモリに書き込む読込制御機能と、
前記読み込んだブロックデータ内の画素の画素値を用いて、前記補正後の画像における各画素の画素値を求め、前記表示される補正後の画像を生成する機能と
をコンピュータに実現させるためのコンピュータプログラムであり、
前記管理用メモリには、前記エントリ毎に、該エントリの有効性を表す識別子と、該エントリに記憶されているブロックデータの最小Ｘ座標と、該エントリに記憶されているブロックデータの最大Ｘ座標と、前記最小Ｘ座標のブロックデータが記憶されている前記ブロックデータ記憶メモリ内の実アドレスと、が対応付けて記憶されており、
前記読込制御機能は、前記ブロックデータ記憶メモリから前記ブロックデータの読み込みを行う際に、前記管理用メモリを参照して、前記ブロックデータが記憶されている位置を検出し、該位置に基づき、前記ブロックデータ記憶メモリから、前記ブロックデータの読み込みを行う、
コンピュータプログラム。
【請求項９】
請求項８に記載のコンピュータプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置において台形歪み補正を行う技術に関し、詳しくは、水平方向に生じた台形歪みの補正を行う技術に関する。
【背景技術】
【０００２】
近年、画像をスクリーン上に拡大表示する画像処理装置として、プロジェクタが普及している。プロジェクタ等の画像処理装置によって画像をスクリーン上に投写表示を行う際には、その設置位置によっては、スクリーン上に画像が垂直方向あるいは水平方向に台形状に表示される場合がある。このような台形歪みを補正するため、従来、種々の補正方法が提案されている（下記特許文献１，２参照）。なお、台形歪みを補正することを、以下では「キーストーン補正」という。
【０００３】
キーストーン補正の手順は、座標変換処理と補間処理の２つの処理に分けて考えることができる。座標変換処理は、補正前の画像から画素データを台形状に読み込むための処理である。これに対して、補間処理は、座標変換によって補正前後の各画素の位置が一対一に対応しないために、補正後の画像の画素値を、補正前の画像の複数の画素の画素値から求める処理である。
【０００４】
一般的に、垂直方向に生じた台形歪みを補正する場合には、座標変換を行ったとしても、特許文献１の図５に記載されているように、フレームメモリから、Ｘ方向に連続的に画素データを読み出せばよいため、バースト転送などを利用することで、効率的にデータを読み出すことができる。そのため、補間処理も比較的効率的に行うことができる。
【０００５】
しかしながら、水平方向への台形歪み補正を行う場合には、特許文献２の図２４に記載されているように、補正前の画像から斜め方向に画素データを読み込む必要があるため、データを効率的に読み込むことは困難である。また、補間を行うためには、予め複数のラインを斜め方向に読み込んでおくことが必要であり、この点でも、効率化の妨げになっていた。このような問題は、プロジェクタによって台形歪み補正を行う場合に限らず、コンピュータ等によって台形歪み補正を行う場合についても同様に発生する問題であった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−４８３６８号公報
【特許文献２】特開２００４−３２４８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
このような問題を考慮し、本発明が解決しようとする課題は、プロジェクタ等の画像処理装置において水平方向の台形歪み補正を高速に行うことにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明の画像処理装置を次のように構成した。すなわち、
画像を投写表示する際に生じる台形歪みを補正する画像処理装置であって、
前記補正の対象となる補正前の画像を記憶するフレームメモリと、
前記フレームメモリから読み込まれた前記補正前の画像の一部を、Ｎ×Ｍ個の画素からなるブロックデータを単位として保持するブロックデータ記憶メモリと、
前記ブロックデータ記憶メモリに記憶された前記ブロックデータの位置を管理するための管理用メモリと、
前記補正後の画像に対応する前記補正前の画像を前記フレームメモリから読み込むためのパラメータを設定する設定手段と、
前記補正後の画像の各画素の位置に対応する前記補正前の画像における画素位置を、前記設定手段によって設定されたパラメータを用いて求める座標変換手段と、
前記座標変換手段によって求められた前記補正前の画素位置を包含するブロックデータが、前記ブロックデータ記憶メモリに保持されているか否かを判定する判定手段と、
前記判定手段による判定結果に応じて、前記補正前の画素位置を包含するブロックデータを、前記ブロックデータ記憶メモリおよび前記フレームメモリの少なくともいずれか一方から読み込むとともに、前記補正前の画素位置を包含するブロックデータが前記ブロックデータ記憶メモリに保持されていない場合には、前記フレームメモリから読み込んだブロックデータを前記ブロックデータ記憶メモリに書き込む読込制御手段と、
前記読込制御手段によって読み込んだ前記ブロックデータ内の画素の画素値を用いて、前記補正後の画像における各画素の画素値を求め、前記表示される補正後の画像を生成する表示画像生成手段と、を備え、
前記ブロックデータ記憶メモリは、一または複数の前記ブロックデータを格納する一または複数のエントリから構成されており、
前記管理用メモリには、前記エントリ毎に、該エントリの有効性を表す識別子と、該エントリに記憶されているブロックデータの最小Ｘ座標と、該エントリに記憶されているブロックデータの最大Ｘ座標と、前記最小Ｘ座標のブロックデータが記憶されている前記ブロックデータ記憶メモリ内の実アドレスと、が対応付けて記憶されており、
前記読込制御手段は、前記ブロックデータ記憶メモリから前記ブロックデータの読み込みを行う際に、前記管理用メモリを参照して、前記ブロックデータが記憶されている位置を検出し、該位置に基づき、前記ブロックデータ記憶メモリから、前記ブロックデータの読み込みを行うことを要旨とする。
また、本発明の画像処理装置は、次のように構成することもできる。すなわち、
画像を投写表示する際に生じる水平方向の台形歪みを補正して補正後の画像を表示する画像処理装置であって、
前記補正の対象となる補正前の画像を記憶するフレームメモリと、
前記フレームメモリから読み込まれた前記補正前の画像の一部を、Ｎ×Ｍ個の画素からなるブロックデータを単位として保持するブロックデータ記憶メモリと、
前記補正後の画像の水平方向の各ラインに対応する前記補正前の画像のラインを前記補正前の画像から読み込むための読込角度を、前記補正の程度および前記水平方向の各ラインの位置に応じて設定する角度設定手段と、
前記補正後の画像の各画素の位置に対応する前記補正前の画像における画素位置を、前記角度設定手段によって設定された読込角度を用いて前記ラインに沿って求める座標変換手段と、
前記座標変換手段によって求められた前記補正前の画素位置を包含するブロックデータが、前記ブロックデータ記憶メモリに保持されているか否かを判定する判定手段と、
前記判定手段による判定結果に応じて、前記補正前の画素位置を包含するブロックデータを、前記ブロックデータ記憶メモリおよび前記フレームメモリの少なくともいずれか一方から読み込むとともに、前記補正前の画素位置を包含するブロックデータが前記ブロックデータ記憶メモリに保持されていない場合には、前記フレームメモリから読み込んだブロックデータを前記ブロックデータ記憶メモリに書き込む読込制御手段と、
前記読込制御手段によって読み込んだ前記ブロックデータ内の画素の画素値を用いて、前記補正後の画像における各画素の画素値を前記ライン毎に求め、前記表示される補正後の画像を生成する表示画像生成手段とを備えることを要旨とする。
【０００９】
本発明の画像処理装置によれば、水平方向の台形歪みを補正する際に、斜め方向への画素データの読み込みを、角度設定手段によって設定した読込角度に応じて、ブロック単位で行うことができる。そのため、補正前の画像から効率的に画素データを読み込むことができる。また、ブロック単位でフレームメモリから読み出した画素データは、一旦、ブロックデータ記憶メモリに保持される。そのため、斜め方向に読み込みを行うラインの読込角度がいくらか変更されたとしても、ブロックデータ記憶メモリに既に記憶されたブロックデータを利用して、補正後の画像を生成することができる。この結果、補正後の画像生成時に用いるすべての画素データをフレームメモリから読み込む必要がなく、水平方向の台形歪み補正を高速に行うことが可能になる。なお、ブロックデータ記憶メモリとは、フレームメモリよりも高速なメモリである。例えば、フレームメモリとしては、ＳＤＲ−ＳＤＲＡＭやＤＤＲ−ＳＤＲＡＭなどのＤＲＡＭを用いることができ、ブロックデータ記憶メモリとしては、これらのＤＲＡＭよりも高速なＤＲＡＭやＳＲＡＭ等のメモリを用いることができる。
【００１０】
上記構成の画像処理装置において、
前記読込制御手段は、前記判定手段によって前記補正前の画素位置を包含するブロックデータが前記ブロックデータ記憶メモリに保持されていると判定された場合に、前記ブロックデータ記憶メモリから該ブロックデータを読み込み、前記判定手段によって前記補正前の画素位置を包含するブロックデータが前記ブロックデータ記憶メモリに保持されていないと判定された場合に、前記フレームメモリから該ブロックデータを読み込むとともに該読み込んだブロックデータを前記ブロックデータ記憶メモリに書き込むものとすることができる。
【００１１】
このような構成によれば、補正前の画素位置を包含するブロックデータがブロックデータ記憶メモリに保持されていると判定された場合には、このブロックデータ記憶メモリからブロックデータを読み込むことができるため、高速に画素の読み出しを行うことができる。なお、ブロックデータの読み出しの他の方法として、ブロックデータをフレームメモリとブロックデータ記憶メモリの両者から読み出し、その後、判定手段による判定結果に応じて、どちらのメモリから読み込んだブロックデータを利用するかを選択するものとしてもよい。
【００１２】
上記構成の画像処理装置において、
前記読込角度は所定の角度範囲内において複数に区分されており、前記角度設定手段によって設定された読込角度の区分が変化した場合に、前記ブロックデータ記憶メモリをクリアする手段を備えるものとしてもよい。
【００１３】
このような構成によれば、区分の変更を伴うような読込角度の大きな変更があった場合において、ブロックデータ記憶メモリの内容をクリアすることができる。そのため、補正後の画像の生成に利用することのできない不要なブロックデータをブロックデータ記憶メモリから削除することができ、ブロックデータ記憶メモリのデータ容量を節減することが可能になる。読込角度の区分数は、ブロックのサイズに応じて設定することができる。例えば、ブロックのサイズが大きければ、区分の数を少なく設定することができ、ブロックのサイズが小さければ、区分の数を多く設定することができる。大きなブロックサイズであれば、読み込み角度が大きく変化した場合でも、補正対象のラインがそのブロック内に収まるからである。
【００１４】
上記構成の画像処理装置において、
前記ブロックデータ記憶メモリは、一または複数の前記ブロックデータを格納する一または複数のエントリから構成されており、
前記角度設定手段によって設定された前記読込角度の前記区分に応じて、前記エントリの数と、１エントリあたりに格納可能な前記ブロックデータの数とを設定するキャッシュ構造設定手段を備えるものとしてもよい。
【００１５】
このような構成によれば、読込角度の区分に応じて設定されたエントリ毎にブロックデータ記憶メモリを管理することができるので、ブロックデータ記憶メモリにブロックデータを効率的に格納することができる。
【００１６】
上記構成の画像処理装置において、
前記キャッシュ構造設定手段は、前記読込角度の区分と前記エントリ数と前記ブロックデータの数とが対応付けて記録された所定のテーブルに基づき、前記読込角度の区分に応じて、前記エントリ数と前記ブロックデータの数とを設定するものとしてもよい。
【００１７】
このような構成によれば、予め用意されたテーブルに基づき、ブロックデータ記憶メモリのエントリ数と１エントリあたりに格納可能なブロックデータの数とを容易に設定することができる。
【００１８】
上記構成の画像処理装置において、
前記キャッシュ構造設定手段が参照する前記テーブルには、前記エントリ数が、前記区分に応じて前記補正前の画像から読み出される前記ブロックデータのＹ方向への数に応じて定義されており、前記ブロックデータの数が、前記区分に応じて前記補正前の画像から読み出される前記ブロックデータのＸ方向への１エントリあたりの最大個数に応じて定義されているものとしてもよい。
【００１９】
このような構成によれば、ブロックを斜め方向へ読み出す読込角度の区分に応じて最適なエントリ数とブロック数とを設定することができる。
【００２０】
上記構成の画像処理装置において、
前記ブロックデータ記憶メモリに記憶された前記ブロックデータの位置を管理するための管理用メモリを備え、
前記読込制御手段は、前記ブロックデータ記憶メモリから前記ブロックデータの読み込みを行う際に、前記管理用メモリを参照して、前記ブロックデータが記憶されている位置を検出し、該位置に基づき、前記ブロックデータ記憶メモリから、前記ブロックデータの読み込みを行うものとしてもよい。
【００２１】
このような構成によれば、ブロックデータ記憶メモリに直接アクセスしなくても、ブロックデータ記憶メモリの管理用に専用に用意されたメモリを参照することで、ブロックデータの記憶位置を検出することができる。そのため、ブロックデータ記憶メモリからブロックデータを容易に読み込むことが可能になる。管理用メモリとしては、例えば、タグＲＡＭを用いることができる。
【００２２】
上記構成の画像処理装置において、
前記管理用メモリには、前記エントリ毎に、該エントリの有効性を表す識別子と、該エントリに記憶されているブロックデータの最小Ｘ座標と、該エントリに記憶されているブロックデータの最大Ｘ座標と、前記最小Ｘ座標のブロックデータが記憶されている前記ブロックデータ記憶メモリ内の実アドレスと、が対応付けて記憶されているものとしてもよい。
【００２３】
このような構成によれば、ブロックデータ記憶メモリ内に記憶されたブロックデータの位置を効率的に管理することが可能になる。
【００２４】
上記構成の画像処理装置において、
前記判定手段は、現在の補正前の画素位置のＹ座標に対応する前記ブロックデータ記憶メモリ内のエントリにおいて、前記識別子が有効である旨を表し、かつ、現在の補正前の画素位置のＸ座標が、前記最小Ｘ座標と前記最大Ｘ座標との範囲に含まれる場合に、該補正前の画素位置を包含するブロックデータが、前記ブロックデータ記憶メモリに保持されていると判定するものとしてもよい。
【００２５】
このような構成によれば、管理用メモリに記録された種々のパラメータを参照することで、ブロックデータ記憶メモリに目的のブロックデータが格納されているか否かを容易に判断することが可能になる。
【００２６】
上記構成の画像処理装置において、
前記読込制御手段は、前記判定手段によって前記補正前の画素位置を包含するブロックデータが前記ブロックデータ記憶メモリに保持されていないと判定された場合において、前記フレームメモリから読み込んだブロックデータを、前記読込角度が０以上の場合には、前記エントリ内のアドレスの低い順に書き込み、前記読込角度が０未満の場合には、前記エントリ内の、アドレスの高い順に書き込むものとしてもよい。
【００２７】
このような構成によれば、補正対象のラインの読込角度がプラスかマイナスかに応じてブロックデータの書き込み位置が可変されるため、ブロックデータ記憶メモリからのブロックデータの読み込みを効率的に行うことが可能になる。
【００２８】
上記構成の画像処理装置において、
前記表示画像生成手段は、前記ブロックデータ内の各画素の画素値と、Ｎ×Ｍの行列からなる所定の補間フィルタとを乗じることで、前記補正後の画像における各画素の画素値を求めるものとしてもよい。
【００２９】
このような構成によれば、ブロックデータを構成する画素データの数と補間フィルタの要素の数とが一致するため、単純な行列演算により、容易に補正後の画素の画素値を求めることが可能になる。
【００３０】
上記構成の画像処理装置において、
前記フレームメモリは、Ｍ個のバンクから構成されており、前記補正前の画像を、ライン毎に前記Ｍ個のバンクに割り振って記憶するものとしてもよい。
【００３１】
このような構成によれば、バンク切り替えを用いることで、フレームメモリから高速にブロックデータを読み出すことが可能になる。
【００３２】
なお、本発明は、上述した画像処理装置としての構成のほか、上述したいずれかの構成の画像処理装置を備えたプロジェクタや、画像処理方法、コンピュータプログラムとしても構成することができる。コンピュータプログラムは、コンピュータが読取可能な記録媒体に記録されていてもよい。記録媒体としては、例えば、フレキシブルディスクやＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光磁気ディスク、メモリカード、ハードディスク等の種々の媒体を利用することができる。
【図面の簡単な説明】
【００３３】
【図１】プロジェクタ１０のハードウェア構成を示す説明図である。
【図２】投写スクリーンＳＣ上に表示された画像に生じる台形歪みの例を示す説明図である。
【図３】キーストーン補正の概念を示す説明図である。
【図４】画像データをブロック単位で斜め方向に読み出した例を示す説明図である。
【図５】キャッシュメモリ１６０のデータ構造を示す説明図である。
【図６】キャッシュ構造テーブルＴＢＬを示す説明図である。
【図７】キャッシュ制御回路１５０がキャッシュメモリ１６０にデータを書き込む順序を示す説明図である。
【図８】キャッシュ制御回路１５０がキャッシュメモリ１６０にデータを書き込む順序を示す説明図である。
【図９】キャッシュ制御回路１５０の詳細な構成を示す説明図である。
【図１０】タグＲＡＭ３３０の構造を示す説明図である。
【図１１】タグＲＡＭ３３０によって管理されるキャッシュメモリ１６０上のデータの格納状態を模式的に示す説明図である。
【図１２】キャッシュ制御回路１５０がキーストーン補正回路１４０からの求めに応じてブロックデータを読み出す手順を示すフローチャートである。
【図１３】タグＲＡＭ３３０の更新処理の手順を示すフローチャートである。
【図１４】４つのバンクを有するＤＲＡＭ１３０に４×４画素の１つのブロックデータが記録された状態を模式的に示す説明図である。
【図１５】ＤＲＡＭ１３０のアクセスタイミングを簡易的に示す説明図である。
【発明を実施するための形態】
【００３４】
以下、上述した本発明の作用・効果を一層明らかにするため、本発明の実施の形態を実施例に基づき次の順序で説明する。
Ａ．プロジェクタのハードウェア構成：
Ｂ．キーストーン補正の概念：
Ｃ．キャッシュメモリのデータ構造：
Ｄ．キャッシュ制御回路の詳細：
（Ｄ−１）ブロックデータ読み出し処理：
（Ｄ−２）タグＲＡＭ更新処理：
Ｅ．効果：
Ｆ．変形例：
【００３５】
Ａ．プロジェクタのハードウェア構成：
図１は、本願の画像処理装置の実施例としてのプロジェクタ１０のハードウェア構成を示す説明図である。図示するように、本実施例のプロジェクタ１０は、画像信号入力回路１１０と、画像信号入力回路１１０に接続された画像処理回路１２０と、画像処理回路１２０に接続され、フレームメモリとして用いられるＤＲＡＭ１３０と、ＤＲＡＭ１３０に接続され、キャッシュメモリ１６０を備えたキャッシュ制御回路１５０と、キャッシュ制御回路１５０に接続されたキーストーン補正回路１４０と、キーストーン補正回路１４０に接続された液晶ドライバ１７０と、液晶ドライバ１７０に接続された液晶パネル１８０と、液晶パネル１８０に形成された画像を照射する光源ランプ１９０と、光源ランプ１９０から射出され、液晶パネル１８０を透過した光を投写スクリーンＳＣ上に拡大投写する光学系２００と、画像処理回路１２０やキーストーン補正回路１４０に接続されたＣＰＵ２１０と、ＣＰＵ２１０に接続された操作パネル２２０とを備えている。これらの回路のうち、キーストーン補正回路１４０は、本願の「角度設定手段」と「座標変換手段」と「表示画像生成手段」とに対応し、キャッシュ制御回路１５０は、本願の「判定手段」と「読込制御手段」とに対応する。
【００３６】
画像信号入力回路１１０は、ＤＶＤプレーヤやビデオデッキ、パーソナルコンピュータなどの外部機器からコンポジット信号やコンポーネント信号、ＲＧＢ信号などの画像信号を入力する回路である。画像信号入力回路１１０は、同期分離回路１１２と、Ａ／Ｄ変換回路１１４とを備えている。
【００３７】
同期分離回路１１２は、入力した画像信号から、垂直同期信号や水平同期信号等の同期信号を分離する回路である。なお、予め同期信号が分離された画像信号を入力する場合には、同期分離回路１１２を省略するものとしてもよい。
【００３８】
Ａ／Ｄ変換回路１１４は、同期信号の分離されたアナログの画像信号をデジタルの画像信号に変換する回路である。Ａ／Ｄ変換回路１１４は、デジタル画像信号を生成すると、このデジタル画像信号を、画像処理回路１２０に出力する。
【００３９】
画像処理回路１２０は、画像信号入力回路１１０から入力したデジタル画像信号を、画像データとしてＤＲＡＭ１３０に１フレーム毎に書き込む。ＤＲＡＭ１３０としては、例えば、ＤＤＲ−ＳＤＲＡＭを用いることができる。画像処理回路１２０は、ＣＰＵ２１０からの指示に応じてＤＲＡＭ１３０に書き込んだ画像データに対して、輝度や彩度の調整といった種々の色調補正を行うことができる。
【００４０】
キャッシュ制御回路１５０は、ＤＲＡＭ１３０から画像データを読み込み、読み込んだデータをキャッシュメモリ１６０に一時的に保持する回路である。キャッシュメモリ１６０は、本願の「ブロックデータ記憶メモリ」に対応する。キャッシュ制御回路１５０は、キーストーン補正回路１４０からデータのリード要求があると、要求されたデータが、キャッシュメモリ１６０に既に保持されているか否かを判断する。その結果、キャッシュメモリ１６０に既に保持されていれば、ＤＲＡＭ１３０から読み込みを行うことなく、要求されたデータをキャッシュメモリ１６０から読み込み、キーストーン補正回路１４０に出力する。一方、キャッシュメモリ１６０に保持されていなければ、ＤＲＡＭ１３０から目的のデータを読み出した上で、これをキャッシュメモリ１６０に書き込み、更に、そのデータを、キーストーン補正回路１４０に出力する。なお、キャッシュメモリ１６０としては、ＤＲＡＭ１３０よりも高速なアクセスが可能な他のＤＲＡＭやＳＲＡＭを用いることができる。
【００４１】
キーストーン補正回路１４０は、投写スクリーンＳＣ上に表示された画像の台形歪みを補正するための回路である。キーストーン補正回路１４０は、本実施例では、プロジェクタ１０を投写スクリーンＳＣに対して、左側あるいは右側に設置した場合に生じる水平方向の台形歪みの補正を行う。
【００４２】
図２は、投写スクリーンＳＣ上に表示された画像に生じる台形歪みの例を示す説明図である。図２（ａ）には、投写スクリーンＳＣに対して左側から画像を投写した場合に生じる台形歪みを示した。プロジェクタ１０は、投写スクリーンＳＣに対して拡大投写を行うため、プロジェクタ１０と投写スクリーンＳＣ間の距離が遠いほど、画像は拡大して表示されることになる。従って、図２（ａ）のように、投写スクリーンＳＣに対して左側から画像を投写すると、投写スクリーンＳＣ上に表示された画像は、左端から右端にいくにつれ、画像の上下幅が広くなるように表示されることになる。
【００４３】
一方、図２（ｂ）には、投写スクリーンＳＣに対して、右側から画像を投写した場合に生じる台形歪みを示した。図示するように、この場合には、投写スクリーンＳＣ上に表示された画像は、右端から左端にいくにつれ、画像の上下幅が広くなるように表示されることになる。
【００４４】
説明を図１に戻す。キーストーン補正回路１４０は、図２に示した台形歪みを解消するための補正量（以下、「キーストーン補正量」という）をＣＰＵ２１０から入力し、かかるキーストーン補正量に基づき、ＤＲＡＭ１３０から入力した画像データに対してキーストーン補正を行う。キーストーン補正回路１４０は、キーストーン補正を行うと、補正後の画像データをフレーム単位で表示画像バッファ１４５に格納する。なお、キーストーン補正の具体的な方法については後述する。
【００４５】
液晶ドライバ１７０は、キーストーン補正回路１４０の表示画像バッファ１４５から１フレーム分の画像データを入力し、かかる画像データの画素値（ＲＧＢ階調値）に応じて、液晶パネル１８０を駆動する回路である。液晶パネル１８０の駆動は、同期分離回路１１２から水平同期信号や垂直同期信号を入力して、これらの信号に同期して行う。
【００４６】
液晶パネル１８０は、液晶ドライバ１７０によって駆動され、出力画像の形成を行う。液晶パネル１８０によって形成された出力画像は、光源ランプ１９０によって照射され、光学系２００を介して投写スクリーンＳＣ上に拡大投写される。
【００４７】
ＣＰＵ２１０は、操作パネル２２０を介してユーザからキーストーン補正量の入力を受け付け、かかる補正量をキーストーン補正回路１４０に出力する。ユーザは、投写スクリーンＳＣ上に表示された画像に生じている台形歪みの程度に応じて、キーストーン補正量を調整することができる。ＣＰＵ２１０は、また、操作パネル２２０を介して、ユーザから輝度や彩度を補正するための補正量の入力を受け付け、かかる補正量を画像処理回路１２０に出力する。なお、キーストーン補正量は、ＣＰＵ２１０が、投写スクリーンＳＣに対するプロジェクタ１０の設置角度を自動的に検出し、かかる検出結果に応じてＣＰＵ２１０が設定するものとしてもよい。
【００４８】
Ｂ．キーストーン補正の概念：
図３は、キーストーン補正回路１４０によって行われるキーストーン補正の概念を示す説明図である。図３（ａ）には、図２（ａ）に示したように、投写スクリーンＳＣに対して左側から画像を投写した場合に生じる台形歪みを補正する方法を示した。この場合、キーストーン補正回路１４０は、図２（ａ）に示した歪みと左右で逆の歪みを有する画像を補正後の画像として生成することにより台形歪みを補正する。なお、以下では、投写スクリーンＳＣに対して、左側から画像を投写した場合に生じる台形歪みを補正することを、「左投写補正」という場合がある。
【００４９】
一方、図３（ｂ）には、図２（ｂ）に示したように、投写スクリーンＳＣに対して右側から画像を投写した場合に生じる台形歪みを補正する方法を示した。この場合、キーストーン補正回路１４０は、図２（ｂ）に示した歪みと左右で逆の歪みを有する画像を補正後の画像として生成することにより台形歪みを補正する。なお、以下では、投写スクリーンＳＣに対して、右側から画像を投写した場合に生じる台形歪みを補正することを、「右投写補正」という場合がある。
【００５０】
キーストーン補正回路１４０は、図３（ａ），（ｂ）の右側に示した補正後の画像を生成するために、補正後の画像の水平方向の各ラインに対応する画素データを、補正前の画像データから、図３（ａ），（ｂ）の左側に示した矢印のように読込角度を変化させつつ読み込む。読込角度Ｄは、例えば、次のように求めることができる。すなわち、ＣＰＵ２１０によって設定されたキーストーン補正量Ｃに応じた読込角度の最大値をＤｍ、１フレームあたりの最大ライン数をＹｍ、読込角度を求めようとする現在のラインのＹ座標をＹとすると、図３（ａ）に示した左投写補正の場合には、下記式（１）によって読込角度Ｄを求めることができる。また、図３（ｂ）に示した右投写補正の場合には、下記式（２）によって読込角度Ｄを求めることができる。なお、読込角度Ｄは、下記式のように関数を用いて算出するものとしてもよいが、読込角度Ｄと、キーストーン補正量Ｃに応じた読込角度の最大値Ｄｍと、補正前のラインのＹ座標との対応関係を定義した所定のテーブルを参照して求めるものとしてもよい。
【００５１】
Ｄ＝−Ｄｍ＋（２・Ｄｍ・Ｙ／Ｙｍ）  …（１）
Ｄ＝Ｄｍ−（２・Ｄｍ・Ｙ／Ｙｍ）  …（２）
【００５２】
上記式（１），（２）において、ＣＰＵ２１０によって設定されたキーストーン補正量Ｃと読込角度の最大値Ｄｍとの関係は、キーストーン補正量Ｃが、０から１００までの値をとり、読込角度の上限が４５°であると仮定すれば、例えば、下記式（３）のように表すことができる。
【００５３】
Ｄｍ＝０．４５・Ｃ  …（３）
【００５４】
ここで、上述した式（１），（２）によって算出された読込角度Ｄの値を用いれば、キーストーン補正回路１４０は、補正後の画像の座標Ｘ，Ｙに対応する補正前の画像の座標Ｘ２，Ｙ２を、次式（４）〜（６）によって簡易的に求めることができる。なお、式（５）は、図３（ａ）に示した左投写補正を行う場合の座標Ｙ２を表し、式（６）は、図３（ｂ）に示した右投写補正を行う場合の座標Ｙ２を表している。また、Ｘｍとは、Ｘ座標の最大値を表している。
【００５５】
Ｘ２＝Ｘ  …（４）
Ｙ２＝Ｙ−Ｘ・ｔａｎ（Ｄ）  …（５）
Ｙ２＝Ｙ＋（Ｘｍ−Ｘ）・ｔａｎ（Ｄ）  …（６）
【００５６】
キーストーン補正回路１４０は、画素データを斜め方向に読み込む際に、補正前の画像データから４×４画素のブロック単位で画素データを読み出す。こうすることで、上記式（４）〜（６）で求めた補正前の画素の位置が、その座標系の格子点上に存在しなくても、その位置を包含する周囲１６画素の画素値を用いた補間処理によって、補正後の画素の画素値を求めることができる。なお、以下では、４×４画素からなる画素データを「ブロックデータ」と呼ぶ。
【００５７】
周囲１６画素の画素値を用いた補間の手法として、キーストーン補正回路１４０は、補正前の画像から読み出した４×４画素のブロックデータと、４×４の行列によって規定された所定の補間フィルタとを積算することで、補正後の画素の画素値を求める。補間フィルタとしては、例えば、下記式（７）のようなフィルタＦを用いることができる。
【００５８】
【数１】
0005387558.tif 000002
【００５９】
補正前の画像データから読み込んだブロックデータの各画素値をｒ００，ｒ０１，ｒ０２，ｒ０３，ｒ１０，…，とすると、上記式（７）に示した補間フィルタＦを用いて、下記式（８）によって補正後の画素値Ｒ２を求めることができる。かかる計算は、ＲＧＢの各色毎に行う。
【００６０】
【数２】
0005387558.tif 000003
【００６１】
なお、ブロックデータは、４×４のサイズを有するものとしたため、補正前の画像の座標Ｘ，Ｙと、ブロックの位置を表すブロック座標ＸＥ，ＹＥとは、次式（９），（１０）の関係を有することになる。
【００６２】
ＸＥ＝Ｘ／４  …（９）
ＹＥ＝Ｙ／４  …（１０）
【００６３】
Ｃ．キャッシュメモリのデータ構造：
次に、ＤＲＡＭ１３０から読み込んだブロックデータをキャッシュするキャッシュメモリ１６０のデータ構造について、図４ないし図６に基づき説明する。
【００６４】
図４は、キーストーン補正回路１４０が、斜め方向に補正前の画像データをブロック単位で読み出した例を示す説明図である。図４（ａ）には、読込角度が０°の場合の例を示し、図４（ｂ）には、読込角度が約＋２０°、図４（ｃ）には、読込角度が約＋２５°、図４（ｄ）には、読込角度が＋４５°の例を示した。図示するように、例えば、図４（ｂ）では、１つのＹＥ座標あたり、Ｘ軸方向に最大６ブロック分のブロックデータが読み込まれることになる。また、図４（ｃ）では、１つのＹＥ座標あたり、Ｘ軸方向に最大４ブロック分のブロックデータが読み込まれる。このように、斜め方向にブロックデータを読み出す場合には、その読込角度Ｄに応じて、１つのＹＥ座標についてＸ軸方向に読み込まれるブロックデータの最大数が変化していくことになる。
【００６５】
キャッシュ制御回路１５０は、図４のように斜め方向に読み出しを行うライン単位でブロックデータをキャッシュメモリ１６０に保持する。そのため、最もキャッシュの容量が少なくなるのは、ブロックの数が最も少なくなる読込角度が０°の場合である（図４（ａ）参照）。
【００６６】
ここで、プロジェクタ１０によって表示を行う画像の解像度を、最大１０２４×１０２４画素と仮定すると、読込角度が０°の場合のキャッシュ容量は、次のように計算することができる。すなわち、１画素あたりのＲＧＢ階調値が計３２ビットであれば、１ブロック分のデータ容量は、６４バイト（＝３２ビット×１６画素）となり、下記式（１１）によって１６Ｋバイトと算出される。
【００６７】
（１０２４画素／４画素）×６４バイト＝１６ＫＢ  …（１１）
【００６８】
これに対して、最もキャッシュの容量が多くなるのは、読込角度が４５°の場合である（図４（ｄ）参照）。このとき、キャッシュの容量は、下記式（１２）によって６７Ｋバイトと算出することができる。なお、１ブロック分の容量である６４バイトに「３」を乗じているのは、図４（ｄ）に示すように、角度４５°で読み出しを行うと、読み出しライン上に位置する１つのブロックの周囲２ブロック分も同時に読み込まれるためである。
【００６９】
（（１０２４画素／ｃｏｓ４５°）／４画素）×６４バイト×３＝６７ＫＢ  …（１２）
【００７０】
以上より、プロジェクタ１０によって表示を行う画像の解像度が最大１０２４×１０２４画素であれば、キャッシュメモリ１６０の容量としては、最大６７ＫＢ分の容量が必要となる。
【００７１】
図５は、キャッシュメモリ１６０のデータ構造を示す説明図である。図示するようにキャッシュメモリ１６０は、ブロック座標ＹＥに対応する複数のエントリからなり、１つのエントリには、ＥＬ個分のブロックデータが記憶される。エントリ数Ｎと、１エントリあたりに記憶されるブロック数ＥＬとは、キーストーン補正回路１４０によるブロックデータの読込角度Ｄに応じて可変される。つまり、図４に示したように、読込角度が０°の場合には、エントリ数Ｎは「１」で足り、ブロック数ＥＬは「２５６」だけ必要となる。また、読込角度が４５°の場合には、エントリ数Ｎは「２５６」となり、ブロック数ＥＬは「３」となる。
【００７２】
図６は、読込角度Ｄに応じたブロック数ＥＬとエントリ数Ｎの対応関係を定義したキャッシュ構造テーブルＴＢＬを示す説明図である。図示するように、このキャッシュ構造テーブルＴＢＬには、ブロックデータの読込角度Ｄに応じて、キャッシュメモリ１６０に確保するエントリ数Ｎと、ブロック数ＥＬとが対応付けて記憶されている。キャッシュ制御回路１５０は、キーストーン補正回路１４０から読込角度Ｄの変更を受けると、このキャッシュ構造テーブルＴＢＬに従い、エントリ数Ｎとブロック数ＥＬとを可変させ、キャッシュメモリ１６０のデータ構造を変更する。ただし、図６に示すように、キャッシュ構造テーブルＴＢＬには、０°から４５°までの角度範囲内において、読込角度Ｄが、５°ずつ区分して定義されている。従って、読込角度Ｄが１区分内で変更されたとしてもキャッシュメモリ１６０の構造は変更されず、区分の変更を伴う読込角度Ｄの変化があった場合に、はじめて、キャッシュメモリ１６０の構造が変更されることになる。こうすることによって、一旦キャッシュされたブロックデータを効率的に利用することが可能になる。なお、本実施例では、読込角度Ｄの区分は５°であるものとしたが、ブロックデータのサイズに応じて、かかる区分の設定を変更してもよい。例えば、ブロックデータのサイズが、２×２などの比較的小さなサイズであれば、区分を２°や３°などに設定することができ、ブロックデータのサイズが、８×８等の比較的大きなサイズであれば、区分を１０°などに設定することができる。
【００７３】
図７および図８は、キャッシュ制御回路１５０がキャッシュメモリ１６０にデータを書き込む順序を示す説明図である。図７には、読込角度Ｄがゼロ以上の場合の書込順序を示し、図８には、読込角度Ｄがマイナスの場合の書込順序を示した。
【００７４】
図７に示すように、読込角度Ｄがゼロ以上の場合にキャッシュミスが生じれば、キャッシュ制御回路１５０は、ＤＲＡＭ１３０から読み込んだブロックデータを、エントリ内のアドレスの低い順から書き込む。アドレスの低い順からブロックデータを書き込んだ結果、書き込みを行うブロックデータの数が、１エントリ内に入るブロック数ＥＬを超えた場合には、再度、同じエントリの最も低いアドレスに対して書き込みを行う。
【００７５】
一方、図８に示すように、読込角度Ｄがマイナスの場合にキャッシュミスが生じれば、キャッシュ制御回路１５０は、ＤＲＡＭ１３０から読み込んだブロックデータを、エントリ内のアドレスの高い順から書き込む。アドレスの高い順からブロックデータを書き込んだ結果、書き込みを行うブロックデータの数が、１エントリ内に入るブロック数ＥＬを超えた場合には、再度、同じエントリの最も高いアドレスに対して書き込みを行う。
【００７６】
以上で説明したキャッシュデータの書き込み順によれば、キーストーン補正時におけるブロックの読込角度Ｄがプラスかマイナスかに応じてブロックデータが最適な順でキャッシュメモリ１６０に格納されるので、キャッシュ制御回路１５０は、キーストーン補正回路１４０からの求めに応じて容易にキャッシュメモリ１６０から目的のブロックデータを読み出すことが可能になる。
【００７７】
Ｄ．キャッシュ制御回路の詳細：
図９は、キャッシュ制御回路１５０の詳細な構成を示す説明図である。図示するように、キャッシュ制御回路１５０は、Ｘ座標変換回路３００と、Ｙ座標変換回路３１０と、図６に示したキャッシュ構造テーブルＴＢＬを保持するキャッシュ構造変更回路３５０と、キャッシュ構造変更回路３５０に接続されたライトポインタ制御回路３２０と、Ｙ座標変換回路３１０およびキャッシュ構造変更回路３５０に接続されたタグＲＡＭ３３０と、タグＲＡＭ３３０およびＸ座標変換回路３００に接続されたキャッシュ判定回路３４０と、キャッシュ判定回路３４０に接続されたＤＲＡＭ制御回路３６０と、タグＲＡＭ３３０およびＸ座標変換回路３００に接続された減算器３７０と、減算器３７０およびタグＲＡＭ３３０に接続された加算器３８０と、キャッシュ判定回路３４０、加算器３８０およびライトポインタ制御回路３２０に接続されたアドレス演算器３９０と、アドレス演算器３９０およびＤＲＡＭ制御回路３６０に接続されたキャッシュメモリ１６０と、タグＲＡＭ３３０、キャッシュ判定回路３４０およびライトポインタ制御回路３２０に接続されたタグＲＡＭ更新回路４００とを備えている。
【００７８】
図１０は、図９中に示したタグＲＡＭ３３０の構造を示す説明図である。タグＲＡＭ３３０は、キャッシュメモリ１６０内にキャッシュされているブロックデータの位置を管理するための管理用メモリである。図示するように、タグＲＡＭ３３０には、キャッシュメモリ１６０の各エントリに対応して識別子ＶＡＬＩＤと、Ｘ座標最小値ＭＩＮＸと、Ｘ座標最大値ＭＡＸＸと、アドレスＡＤＲとが記憶されている。
【００７９】
識別子ＶＡＬＩＤは、キャッシュメモリ１６０上の対応するエントリが有効であるか無効であるかを表す識別子である。この識別子ＶＡＬＩＤの値が「１」の場合には、そのエントリは有効であり、「０」の場合には無効であることを表す。Ｘ座標最小値ＭＩＮＸは、そのエントリにキャッシュされているブロックデータのＸＥ座標の最小値を表し、Ｘ座標最大値ＭＡＸＸは、そのエントリにキャッシュされているブロックデータのＸＥ座標の最大値を表す。また、アドレスＡＤＲは、Ｘ座標最小値ＭＩＮＸのデータがキャッシュされているキャッシュメモリ１６０上の実アドレスを表している。図１１には、タグＲＡＭ３３０によって管理されるキャッシュメモリ１６０上のデータの格納状態を模式的に示した。かかる構造のタグＲＡＭを用いれば、キャッシュメモリ１６０上に格納したブロックデータの位置の管理と、キャッシュのヒット判定を容易に行うことが可能になる。
【００８０】
（Ｄ−１）ブロックデータ読み出し処理：
図１２は、キャッシュ制御回路１５０がキーストーン補正回路１４０からの求めに応じてブロックデータを読み出す手順を示すフローチャートである。キャッシュ制御回路１５０には、キーストーン補正回路１４０から補正後の画像の座標Ｘ，Ｙに対応する補正前の画像の座標Ｘ２，Ｙ２がライン毎に順次走査されて入力される。そのため、図示するように、キャッシュ制御回路１５０は、まず、Ｘ座標変換回路３００によって、キーストーン補正回路１４０から上記式（４）によって算出された座標Ｘ２を入力すると共に、Ｙ座標変換回路３１０によって、キーストーン補正回路１４０から上記式（５）または式（６）によって算出された座標Ｙ２を入力する。そして、更に、キャッシュ構造変更回路３５０によって、キーストーン補正回路１４０から上記式（１）または式（２）によって算出された読込角度Ｄを入力する（ステップＳ１００）。
【００８１】
キャッシュ構造変更回路３５０は、読込角度Ｄを入力すると、読込角度Ｄの変化に伴い、キャッシュ構造テーブルＴＢＬ（図６）内の読込角度Ｄの区分が変更されたかを判定する。また、かかる判定とともに、左投写補正時において角度Ｄが最大であるか、もしくは右投写補正時において角度Ｄが最小であるかを判定する（ステップＳ１１０）。その結果、これらの条件を１つでも満たせば、読込角度Ｄの大きな変更や１フレーム分のキーストーン補正の完了により、キャッシュメモリ１６０に既にキャッシュされたブロックデータを利用することができなくなるため、キャッシュメモリ１６０およびライトポインタＷＰＴＲの初期化処理を行う（ステップＳ１２０）。
【００８２】
具体的な初期化処理としては、キャッシュ構造変更回路３５０は、図６に示したキャッシュ構造テーブルＴＢＬに基づき、キャッシュメモリ１６０のエントリ数Ｎおよびブロック数ＥＬの設定を変更し、更に、タグＲＡＭ３３０に記憶された識別子ＶＡＬＩＤの値をすべてのエントリについて「０」とすることでキャッシュメモリ１６０の初期化を行う。また、キャッシュ構造変更回路３５０は、ライトポインタ制御回路３２０に指示を与えて、ライトポインタＷＰＴＲの値を、読込角度Ｄが０以上の場合は「ＷＰＴＲ＝０」とし、マイナスの場合は「ＷＰＴＲ＝ＥＬ」することでライトポインタＷＰＴＲの初期化を行う。ライトポインタＷＰＴＲとは、キャッシュメモリ１６０の１エントリ内で、ブロックデータの書き込みを行うべきアドレスを管理するカウンタである。
【００８３】
上記ステップＳ１００ないしステップＳ１２０の処理が完了すると、キャッシュ制御回路１５０は、Ｘ座標変換回路３００およびＹ座標変換回路３１０によって、キーストーン補正回路１４０から入力した補正後の座標Ｘ２，Ｙ２をそれぞれ１／４にすることで、座標Ｘ２，Ｙ２に対応するブロック座標ＸＥ，ＹＥを求める（ステップＳ１３０）。
【００８４】
ブロック座標ＸＥ，ＹＥが算出されると、Ｙ座標変換回路３１０は、ブロック座標ＹＥに対応するタグＲＡＭ３３０内のエントリをアクセスする（ステップＳ１４０）。すると、タグＲＡＭ３３０は、かかるアクセスを受けて、ブロック座標ＹＥに対応したエントリから、識別子ＶＡＬＩＤとＸ座標最小値ＭＩＮＸとＸ座標最大値ＭＡＸＸとを、キャッシュ判定回路３４０に出力する。このとき、タグＲＡＭ３３０は、同時に、減算器３７０に対して、Ｘ座標最小値ＭＩＮＸの値を出力するとともに、加算器３８０に対して、アドレスＡＤＲの値を出力する。
【００８５】
キャッシュ判定回路３４０は、タグＲＡＭ３３０から識別子ＶＡＬＩＤ、Ｘ座標最小値ＭＩＮＸ、Ｘ座標最大値ＭＡＸＸ、アドレスＡＤＲの各値を入力し、更に、Ｘ座標変換回路３００からブロック座標ＸＥの値を入力すると、識別子ＶＡＬＩＤが「１」であり、かつ、ブロック座標ＸＥがＸ座標最小値ＭＩＮＸ以上、Ｘ座標最大値ＭＡＸＸ以下の範囲に含まれるか否かを判定する（ステップＳ１５０）。
【００８６】
上記ステップＳ１５０において、識別子ＶＡＬＩＤが「１」であり、かつ、ブロック座標ＸＥがＸ座標最小値ＭＩＮＸ以上、Ｘ座標最大値ＭＡＸＸ以下の範囲に含まれると判定された場合には（ステップＳ１５０：Ｙｅｓ）、キーストーン補正回路１４０から入力した座標Ｘ２，Ｙ２に対応するブロックデータがキャッシュメモリ１６０にすでにキャッシュされていることになり、キャッシュヒットと判定される。そのため、この場合には、キャッシュ制御回路１５０は、キャッシュメモリ１６０からブロックデータを読み込むためのリードアドレスＲＤＡＤＲを算出する（ステップＳ１６０）。
【００８７】
リードアドレスＲＤＡＤＲは次のように算出される。すなわち、図９中の減算器３７０が、タグＲＡＭ３３０からＸ座標最小値ＭＩＮＸの値を入力するとともに、Ｘ座標変換回路３００からブロック座標ＸＥの値を入力する。そして、ブロック座標ＸＥからＸ座標最小値ＭＩＮＸの値を減算することで、これらの値の差分を算出する。減算器３７０は、かかる差分の値を加算器３８０に出力すると、加算器３８０が、かかる差分の値とともに、タグＲＡＭ３３０からアドレスＡＤＲの値を入力し、これらの値を加算する。つまり、キャッシュ制御回路１５０は、減算器３７０と加算器３８０との働きにより、次式（１３）と等価な演算を行うことになる。加算器３８０は、リードアドレスＲＤＡＤＲの値を算出すると、その値を、アドレス演算器３９０に出力する。
【００８８】
ＲＤＡＤＲ＝ＡＤＲ＋（ＸＥ−ＭＩＮＸ））  …（１３）
【００８９】
アドレス演算器３９０は、リードアドレスＲＤＡＤＲの値を加算器３８０から入力すると、キャッシュメモリ１６０のそのアドレスＲＤＡＤＲに対してアクセスを行い、４×４画素のブロックデータをリードする（ステップＳ１７０）。すると、キャッシュメモリ１６０からは、キーストーン補正回路１４０に対して、補正後の座標Ｘ２，Ｙ２に対応するブロックデータが出力される（ステップＳ２３０）。
【００９０】
上記ステップＳ１５０において、識別子ＶＡＬＩＤが「０」であるか、もしくは、ブロック座標ＸＥがＸ座標最小値ＭＩＮＸ以上、Ｘ座標最大値ＭＡＸＸ以下の範囲に含まれないと判断された場合には（ステップＳ１５０：Ｎｏ）、座標Ｘ２，Ｙ２に対応するブロックデータがキャッシュメモリ１６０にキャッシュされていないことになり、キャッシュミスと判定される。そのため、キャッシュ制御回路１５０は、ＤＲＡＭ制御回路３６０を用いてＤＲＡＭ１３０にアクセスし（ステップＳ１８０）、ブロック座標ＸＥ，ＹＥに対応する１ブロック分のデータを、ＤＲＡＭ１３０から読み込む（ステップＳ１９０）。そして、キャッシュメモリ１６０のライトアドレスＷＴＡＤＲに、このデータの書き込みを行う（ステップＳ２００）。書き込みを行うライトアドレスＷＴＡＤＲは、アドレス演算器３９０によって、次式（１４）のように算出される。すなわち、ライトアドレスＷＴＡＤＲは、ブロック座標ＹＥにブロック数ＥＬを乗じて、ライトポインタＷＰＴＲの値を加算したアドレスとなる。
【００９１】
ＷＴＡＤＲ＝ＹＥ・ＥＬ＋ＷＰＴＲ  …（１４）
【００９２】
キャッシュ制御回路１５０は、ＤＲＡＭ１３０から読み出したブロックデータをキャッシュメモリ１６０に書き込むと、新たに書き込んだブロックデータの位置を管理するため、タグＲＡＭ更新回路４００によって、現在のブロック座標ＹＥに対応するタグＲＡＭ３３０のエントリについて更新処理を行う（ステップＳ２１０）。かかる更新処理の詳細については後述する。
【００９３】
タグＲＡＭ３３０の更新処理が終了すると、キャッシュ制御回路１５０は、ライトポインタ制御回路３２０によって、ライトポインタＷＰＴＲの値を更新する（ステップＳ２２０）。具体的には、読込角度Ｄが０以上の場合には、ライトポインタＷＰＴＲの値を、インクリメントし（ＷＰＴＲ＝ＷＰＴＲ＋１）、マイナスの場合には、デクリメントする（ＷＰＴＲ＝ＷＰＴＲ−１）。こうすることで、キャッシュミスが発生した場合に、次に書き込みを行うべきキャッシュメモリ１６０上のアドレスが、図７もしくは図８のように移動することになる。
【００９４】
ライトポインタＷＰＴＲを更新すると、キャッシュ制御回路１５０は、上記ステップＳ１９０においてＤＲＡＭ１３０から読み込んだデータを、キャッシュメモリ１６０を介して、キーストーン補正回路１４０に出力する（ステップＳ２３０）。
【００９５】
以上で説明したブロックデータの読み出し手順によれば、キャッシュ制御回路１５０は、キーストーン補正回路１４０から順次入力した座標Ｘ２，Ｙ２に応じて、その座標に対応したブロックデータを、キャッシュメモリ１６０またはＤＲＡＭ１３０から読み込み、キーストーン補正回路１４０に対して出力する。キーストーン補正回路１４０は、キャッシュ制御回路１５０からブロックデータを入力すると、そのブロックデータを用いて、補正後の画像の各画素についてライン毎に画素値を補間し、補正後の画像を生成する。このように生成された補正後の画像は、表示画像バッファ１４５に１フレーム分記憶される。１フレーム分の画像の生成においては、キャッシュメモリ１６０に記憶されたブロックデータが適宜用いられるため、全ての画素データをＤＲＡＭ１３０から読み込むよりも、全体として高速にキーストーン補正を行うことが可能になる。
【００９６】
（Ｄ−２）タグＲＡＭ更新処理：
図１３は、図１２のステップＳ２１０で示したタグＲＡＭ３３０の更新処理の手順を示すフローチャートである。この更新処理が実行されると、まず、タグＲＡＭ更新回路４００は、現在のブロック座標ＹＥに対応するタグＲＡＭ３３０内のエントリの識別子ＶＡＬＩＤが「１」であるか否かを判定する（ステップＳ３００）。その結果、識別子ＶＡＬＩＤが「０」であれば（ステップＳ３００：Ｎｏ）、そのエントリが上記ステップＳ１２０による初期化処理等によって無効化されており、その結果、キャッシュミスが発生したと判断できる。そこで、上記ステップＳ２００によってＤＲＡＭ１３０からキャッシュメモリ１６０に転送されたブロックデータの位置を管理するため、次のように、タグＲＡＭ３３０の各パラメータを更新する。すなわち、現在のブロック座標ＹＥに対応するタグＲＡＭ３３０のエントリの識別子ＶＡＬＩＤを「１」とすることで、そのエントリを有効化し、Ｘ座標最小値ＭＩＮＸの値とＸ座標最大値ＭＡＸＸの値とを、両者とも現在のブロック座標ＸＥの値とする。そして、Ｘ座標最小値ＭＩＮＸのブロックデータの格納位置を表すアドレスＡＤＲを、上記式（１４）に示したライトアドレスＷＴＡＤＲ（＝ＹＥ・ＥＬ＋ＷＰＴＲ）の値とする。
【００９７】
上記ステップＳ３００によって、現在のブロック座標ＹＥに対応するエントリの識別子ＶＡＬＩＤが「１」であると判定された場合には（ステップＳ３００：Ｙｅｓ）、そのエントリは有効であるが、現在のブロック座標ＸＥが、Ｘ座標最小値ＭＩＮＸとＸ座標最大値ＭＡＸＸとの間に存在しないと判断できる。そのため、かかるエントリ内の新たなアドレスに書き込まれたブロックデータの位置を管理するため、タグＲＡＭ更新回路４００は、まず、読込角度Ｄが０以上であるかを判定する（ステップＳ３２０）。
【００９８】
上記ステップＳ３２０による判定の結果、読込角度Ｄが０以上であれば（ステップＳ３２０：Ｙｅｓ）、キャッシュメモリ１６０には、図７で示したように、新しいブロックデータは、エントリ内の大きいアドレスに向かって書き込まれている。そのため、タグＲＡＭ更新回路４００は、Ｘ座標最小値ＭＩＮＸと識別子ＶＡＬＩＤとアドレスＡＤＲの値を、現在のまま保持しつつ、Ｘ座標最大値ＭＡＸＸの値を、現在のアドレスＸＥの値に置き換える。こうすることで、エントリ内の大きいアドレスに向かって書き込まれていくブロックデータの位置を管理することができる。
【００９９】
上記ステップＳ３２０による判定の結果、読込角度Ｄがマイナスの場合には（ステップＳ３２０：Ｎｏ）、キャッシュメモリ１６０には、図８で示したように、新しいブロックデータが、エントリ内の小さいアドレスに向かって書き込まれている。そのため、タグＲＡＭ更新回路４００は、Ｘ座標最大値ＭＡＸＸおよび識別子ＶＡＬＩＤの値を、現在のまま保持しつつ、Ｘ座標最小値ＭＩＮＸの値を、現在のブロック座標ＸＥの値に置き換え、更に、アドレスＡＤＲの値を、上記式（１４）に示したライトアドレスＷＴＡＤＲ（＝ＹＥ・ＥＬ＋ＷＰＴＲ）の値に置き換える。こうすることで、エントリ内の小さいアドレスに向かって書き込まれていくブロックデータの位置を管理することができる。
【０１００】
以上で説明したタグＲＡＭ３３０の更新処理によれば、キャッシュミスの発生によってＤＲＡＭ１３０からキャッシュメモリ１６０に転送されたブロックデータの書き込み位置を的確に管理することが可能になる。
【０１０１】
Ｅ．効果：
以上で説明した本実施例のプロジェクタ１０によれば、水平方向の台形歪みを補正する際に、斜め方向への画素データの読み込みをブロック単位で行うことができる。そのため、補正前の画像から効率的に画素データを読み込むことができる。また、ブロック単位でＤＲＡＭ１３０から読み出した画素データは、一旦、キャッシュメモリ１６０にキャッシュされる。そのため、斜め方向に読み込みを行うラインの読込角度Ｄが図６に示した１区分内で変更されたとしても、キャッシュメモリ１６０に既に記憶されたデータを利用して、補間を行うことができる。この結果、補間時に用いるすべての画素データをキャッシュメモリ１６０よりも低速なＤＲＡＭ１３０から読み込む必要がなく、水平方向の台形歪み補正を高速に行うことが可能になる。
【０１０２】
また、本実施例によれば、図６に示した読込角度Ｄの区分の変更を伴うような大きな読込角度Ｄの変化が発生した場合には、補間に利用することのできないブロックデータをキャッシュメモリ１６０上からクリアすることができる。そのため、キャッシュメモリ１６０のデータ容量を節減することが可能になる。
【０１０３】
更に、本実施例では、斜め方向に読み込みを行うブロックデータのＸ方向およびＹ方向の数に応じて、キャッシュメモリ１６０のデータ構造を変更するものとした。そのため、キャッシュメモリ１６０の記憶領域を効率的に利用することができる。また、キャッシュメモリ１６０上に記憶されたブロックデータの位置を、キャッシュメモリ１６０を管理するために専用に用意したタグＲＡＭ３３０を用いて管理するものとしたため、目的のブロックデータがキャッシュメモリ１６０に格納されているか否かを、キャッシュメモリ１６０に直接アクセスすることなく、高速に判定することが可能になる。
【０１０４】
Ｆ．変形例：
以上、本発明の種々の実施例について説明したが、本発明はこのような実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができることはいうまでもない。例えば、以下のような変形が可能である。
【０１０５】
（Ｆ−１）変形例１：
上記実施例では、ＤＲＡＭ１３０の連続したアドレス空間に画像データが記録されることを前提にキーストーン補正を行う例を示した。これに対して、本変形例では、ＤＲＡＭ１３０は、複数のバンクを有するものとする。
【０１０６】
図１４は、４つのバンクを有するＤＲＡＭ１３０に、４×４画素の１つのブロックデータが記録された状態を模式的に示す説明図である。図示するように、本変形例では、ＤＲＡＭ１３０が、バンク０からバンク３までの４つのバンクを有するものとし、各バンクに対してライン毎に画素データ（ＲＧＢデータ）を記録するものとした。このとき、ＤＲＡＭ１３０のバースト長が１６バイトだとすれば、各バンクから連続的に４画素分の画素データ（３２ビット×４画素＝１６バイト）を読み出すことが可能である。
【０１０７】
図１５は、本変形例におけるＤＲＡＭ１３０のアクセスタイミングを簡易的に示す説明図である。図１５に示すように、ＤＲＡＭ１３０のアクセスサイクルは１６クロックからなるものとする。本変形例において、キャッシュ制御回路１５０は、ＤＲＡＭ１３０からブロックデータを読み出す際に、まず、最初に、２クロックおきに各バンクに対して、バンクアクティブコマンドを発行して、各バンクを活性化する。そして、その後、１クロックおきに、各バンクに対して、リードコマンドを発行する。すると、計１６バイト×８のデータが連続的にＤＲＡＭ１３０から出力されることになる。リードコマンド発行の後には、プリチャージコマンドを発行することで、キャッシュ制御回路１５０は、ＤＲＡＭ１３０をプリチャージする。
【０１０８】
一般に、ＤＲＡＭ１３０のバンク切り替えに必要な時間は、ＲＡＳアドレスの切換に必要な時間よりも大幅に短い。そのため、本変形例のようにＤＲＡＭ１３０を複数のバンクによって構成し、各バンクに跨って１ブロック分のデータを記憶させるものとすれば、連続的なアドレス空間からＲＡＳアドレスを切り換えつつブロックデータを読み込むよりも、格段にデータ転送を効率化することが可能になる。例えば、１クロックあたりのアクセス時間が７．５ｎｓだとすると、ＸＧＡの解像度（１０２４×７６８）の１画面分をリードする時間は、下記式（１５）のように、５．９ｍｓとなり、１フレーム表示時間（１／６０秒）の３５％程度の短時間で、１画面分の画素をリードすることが可能になる。
【０１０９】
（１０２４／４）×（７６８／４）×７．５ｎｓ×１６ｃｌｋ＝５．９ｍｓ  …（１５）
【０１１０】
（Ｆ−２）変形例２：
上記実施例では、プロジェクタ１０が外部機器から入力した画像に対してキーストーン補正を行うものとした。しかし、キーストーン補正は、プロジェクタ１０に限らず、コンピュータ等の他の画像処理装置によっても行うことができる。かかる場合には、上記実施例においてハードウェアによって実現した機能を、コンピュータに所定のコンピュータプログラムをインストールすることで、ソフトウェア的に実現するものとする。このような構成であれば、プロジェクタとコンピュータとを接続した投写システムにおいて、プロジェクタではなく、コンピュータによって、事前に画像をキーストーン補正することが可能になる。
【０１１１】
（Ｆ−３）変形例３：
上記実施例では、４×４の補間フィルタを用いて単純な行列演算によって補間を行うものとしたが、その他にも、４×４の画素値にバイキュービック法を適用して、補正後の画素値を求めることができる。また、読み出しを行うブロックのサイズを２×２画素とし、最近傍法や線形補間法などによって補正後の画素値を求めるものとしてもよい。
【０１１２】
また、上記実施例では、ブロックデータのサイズは、４×４である旨を記載した。しかし、ブロックデータのサイズは、これらのサイズに限らず、３×２や、３×３、４×１、４×２等の任意のＮ×Ｍのサイズとすることができる。ただし、ブロックデータのサイズをＮ×Ｍとする場合には、補間フィルタのサイズもＮ×Ｍのサイズを有するものとする。
【符号の説明】
【０１１３】
１０…プロジェクタ
１１０…画像信号入力回路
１１２…同期分離回路
１１４…Ａ／Ｄ変換回路
１２０…画像処理回路
１３０…ＤＲＡＭ
１４０…キーストーン補正回路
１４５…表示画像バッファ
１５０…キャッシュ制御回路
１６０…キャッシュメモリ
１７０…液晶ドライバ
１８０…液晶パネル
１９０…光源ランプ
２００…光学系
２１０…ＣＰＵ
２２０…操作パネル
３００…Ｘ座標変換回路
３１０…Ｙ座標変換回路
３２０…ライトポインタ制御回路
３３０…タグＲＡＭ
３４０…キャッシュ判定回路
３５０…キャッシュ構造変更回路
３６０…ＤＲＡＭ制御回路
３７０…減算器
３８０…加算器
３９０…アドレス演算器
４００…タグＲＡＭ更新回路
ＳＣ…投写スクリーン
ＴＢＬ…キャッシュ構造テーブル
【図１】
0005387558.tif 000004
【図２】
0005387558.tif 000005
【図３】
0005387558.tif 000006
【図４】
0005387558.tif 000007
【図５】
0005387558.tif 000008
【図６】
0005387558.tif 000009
【図７】
0005387558.tif 000010
【図８】
0005387558.tif 000011
【図９】
0005387558.tif 000012
【図１０】
0005387558.tif 000013
【図１１】
0005387558.tif 000014
【図１２】
0005387558.tif 000015
【図１３】
0005387558.tif 000016
【図１４】
0005387558.tif 000017
【図１５】
0005387558.tif 000018