(57)【要約】【課題】処理負荷を低減した画像処理技術を提供する。【解決手段】画像処理装置は、画像のうちｋ１行分のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、隣り合う少なくとも２画素のデータを記憶する第１記憶部と、画像のうちｋ２行分（ｋ１およびｋ２は、Ｏｍａｘ＜（ｋ１＋ｋ２）＜ｒを満たす自然数であり、Ｏｍａｘは表示部に対してあらかじめ設定されたオフセット最大値である）のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、第１記憶部にデータが記憶されている画素とは異なる行において隣り合う少なくとも２画素のデータを記憶する第２記憶部と、ｒ行ｃ列の画素のうち処理対象となる対象画素のデータを、第１記憶部および第２記憶部において当該対象画素に対応するオフセットベクトルにより示される位置に対応する記憶領域に記憶されている複数の画素のデータを用いて補正を行う補正部とを有する。【選択図】図２
2015228056.tif 000002
【特許請求の範囲】
【請求項１】
ｒ行ｃ列の画素を有する表示部に表示される画像を処理する画像処理装置であって、
前記画像のうちｋ１行分のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、隣り合う少なくとも２画素のデータを記憶する第１記憶部と、
前記画像のうちｋ２行分（ｋ１およびｋ２は、Ｏｍａｘ＜（ｋ１＋ｋ２）＜ｒを満たす自然数であり、Ｏｍａｘは前記表示部に対してあらかじめ設定されたオフセット最大値である）のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、前記第１記憶部にデータが記憶されている画素とは異なる行において隣り合う少なくとも２画素のデータを記憶する第２記憶部と、
前記ｒ行ｃ列の画素のうち処理対象となる対象画素のデータを、前記第１記憶部および前記第２記憶部において当該対象画素に対応するオフセットベクトルにより示される位置に対応する記憶領域に記憶されている複数の画素のデータを用いて補正を行う補正部と
を有する画像処理装置。
【請求項２】
前記オフセットベクトルにより示される位置が前記第１記憶部の第１記憶領域に記憶されている画素および前記第２記憶部の第２記憶領域に記憶されている画素の間の位置だった場合、前記補正部は、当該第１記憶領域および当該第２記憶領域に記憶されているデータを用いて、前記補正を行う
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記オフセットベクトルにより示される位置が前記第１記憶部の２つの記憶領域に記憶されている２つの画素の間に対応する位置だった場合、前記補正部は、当該２つの記憶領域から順次読み出されたデータを用いて、前記補正を行う
ことを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
直近の単位期間において前記補正部が用いたデータを記憶するキャッシュ記憶部を有し、
前記対象画素が、前記直近の単位期間から１画素分移動した場合、前記補正部は、前記キャッシュ記憶部に記憶されているデータ、並びに前記第１記憶部および前記第２記憶部のいずれかに記憶されているデータを用いて前記補正を行う
ことを特徴とする請求項１ないし３のいずれか一項に記載の画像処理装置。
【請求項５】
前記第１記憶部にデータが記憶されている画素と同じ行において当該画素と隣り合う画素を含み、互いに隣り合う少なくとも２画素のデータを記憶する第３記憶部と、
前記第２記憶部にデータが記憶されている画素と同じ行において当該画素と隣り合う画素を含み、互いに隣り合う少なくとも２画素のデータを記憶する第４記憶部と
を有し、
前記補正部は、前記対象画素のデータを、前記第１記憶部、前記第２記憶部、前記第３記憶部、および前記第４記憶部において当該対象画素に対応するオフセットベクトルにより示される位置に対応する記憶領域に記憶されている複数の画素のデータを用いて補正を行う
ことを特徴とする請求項１ないし４のいずれか一項に記載の画像処理装置。
【請求項６】
ｒ行ｃ列の画素を有する表示部と、
前記表示部に表示される画像のうちｋ１行分のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、隣り合う少なくとも２画素のデータを記憶する第１記憶部と、
前記画像のうちｋ２行分（ｋ１およびｋ２は、Ｏｍａｘ＜（ｋ１＋ｋ２）＜ｒを満たす自然数であり、Ｏｍａｘは前記表示部に対してあらかじめ設定されたオフセット最大値である）のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、前記第１記憶部にデータが記憶されている画素とは異なる行において隣り合う少なくとも２画素のデータを記憶する第２記憶部と、
前記ｒ行ｃ列の画素のうち処理対象となる対象画素のデータを、前記第１記憶部および前記第２記憶部において当該対象画素に対応するオフセットベクトルにより示される位置に対応する記憶領域に記憶されている複数の画素のデータを用いて補正を行う補正部と
を有する表示装置。
【請求項７】
ｒ行ｃ列の画素を有する表示部に表示される画像を処理する画像処理方法であって、
前記画像のうちｋ１行分のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、隣り合う少なくとも２画素のデータを第１記憶部に記憶するステップと、
前記画像のうちｋ２行分（ｋ１およびｋ２は、Ｏｍａｘ＜（ｋ１＋ｋ２）＜ｒを満たす自然数であり、Ｏｍａｘは前記表示部に対してあらかじめ設定されたオフセット最大値である）のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、前記第１記憶部にデータが記憶されている画素とは異なる行において隣り合う少なくとも２画素のデータを第２記憶部に記憶するステップと、
前記ｒ行ｃ列の画素のうち処理対象となる対象画素のデータを、前記第１記憶部および前記第２記憶部において当該対象画素に対応するオフセットベクトルにより示される位置に対応する記憶領域に記憶されている複数の画素のデータを用いて補正を行うステップと
を有する画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を補正する技術に関する。
【背景技術】
【０００２】
プロジェクターにおいては、スクリーンと投写系との位置関係が理想的な状態からずれると、スクリーンに投写される画像が歪む。この歪みを解消するため、入力映像に対してこれと逆の歪みを与える画像処理が用いられている。この画像処理は入力映像のうち処理対象の画素に対して、この画素に対応するオフセットベクトルで指定される位置にある他の画素のデータを参照して行われる。この場合において、オフセットベクトルの成分が整数でないときは、オフセットベクトルで指定される位置の周囲の４画素のデータを参照して、画像処理が行われる。
【０００３】
４画素のデータを用いて画像処理を行うには、当然のことながら４画素分のデータをメモリーから読み出す必要がある。すなわち、１つのＲＡＭに４回アクセスする必要があり、データの読み出しに４クロック分の時間がかかってしまう。例えば、オフセットベクトルの成分が整数である場合と比較すると、データの読み出しに４倍の時間がかかってしまい、その分、映像信号出力が遅くなってしまう。
【０００４】
特許文献１は、垂直方向の２画素のデータを用いてズーム画像を生成するため、画像クロックの２倍のクロックレートでメモリーにアクセスする技術を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０−３３６５７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載の技術においては、高速のクロックを生成する必要があり、画像処理回路が高コストになってしまうという問題があった。
【０００７】
これに対し本発明は、メモリーアクセス用の高速クロックを用いずに、補正に用いられるデータを得る時間を短縮する技術を提供する。
【課題を解決するための手段】
【０００８】
本発明は、ｒ行ｃ列の画素を有する表示部に表示される画像を処理する画像処理装置であって、前記画像のうちｋ１行分のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、隣り合う少なくとも２画素のデータを記憶する第１記憶部と、前記画像のうちｋ２行分（ｋ１およびｋ２は、Ｏｍａｘ＜（ｋ１＋ｋ２）＜ｒを満たす自然数であり、Ｏｍａｘは前記表示部に対してあらかじめ設定されたオフセット最大値である）のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、前記第１記憶部にデータが記憶されている画素とは異なる行において隣り合う少なくとも２画素のデータを記憶する第２記憶部と、前記ｒ行ｃ列の画素のうち処理対象となる対象画素のデータを、前記第１記憶部および前記第２記憶部において当該対象画素に対応するオフセットベクトルにより示される位置に対応する記憶領域に記憶されている複数の画素のデータを用いて補正を行う補正部とを有する画像処理装置を提供する。
【０００９】
この画像処理装置によれば、メモリーアクセス用の高速クロックを用いずに、補正に用いられるデータを得る時間を短縮することができる。
【００１０】
前記オフセットベクトルにより示される位置が前記第１記憶部の第１記憶領域に記憶されている画素および前記第２記憶部の第２記憶領域に記憶されている画素の間の位置だった場合、前記補正部は、当該第１記憶領域および当該第２記憶領域に記憶されているデータを用いて、前記補正を行ってもよい。
【００１１】
この画像処理装置によれば、オフセットベクトルにより示される位置が第１記憶部の第１記憶領域に記憶されている画素および第２記憶部の第２記憶領域に記憶されている画素の間の位置であった場合も補正をすることができる。
【００１２】
前記オフセットベクトルにより示される位置が前記第１記憶部の２つの記憶領域に記憶されている２つの画素の間に対応する位置だった場合、前記補正部は、当該２つの記憶領域から順次読み出されたデータを用いて、前記補正を行ってもよい。
【００１３】
この画像処理装置によれば、オフセットベクトルにより示される位置が第１記憶部の２つの記憶領域に記憶されている２つの画素の間に対応する位置であった場合も補正をすることができる。
【００１４】
この画像処理装置は、直近の単位期間において前記補正部が用いたデータを記憶するキャッシュ記憶部を有し、前記対象画素が、前記直近の単位期間から１画素分移動した場合、前記補正部は、前記キャッシュ記憶部に記憶されているデータ、並びに前記第１記憶部および前記第２記憶部のいずれかに記憶されているデータを用いて前記補正を行ってもよい。
【００１５】
この画像処理装置によれば、キャッシュ記憶部を用いない場合と比較してよりデータ読み出しの時間を短縮することができる。
【００１６】
この画像処理装置は、前記第１記憶部にデータが記憶されている画素と同じ行において当該画素と隣り合う画素を含み、互いに隣り合う少なくとも２画素のデータを記憶する第３記憶部と、前記第２記憶部にデータが記憶されている画素と同じ行において当該画素と隣り合う画素を含み、互いに隣り合う少なくとも２画素のデータを記憶する第４記憶部とを有し、前記補正部は、前記対象画素のデータを、前記第１記憶部、前記第２記憶部、前記第３記憶部、および前記第４記憶部において当該対象画素に対応するオフセットベクトルにより示される位置に対応する記憶領域に記憶されている複数の画素のデータを用いて補正を行ってもよい。
【００１７】
この画像処理装置によれば、第３記憶部および第４記憶部を用いない場合と比較してよりデータ読み出しの時間を短縮することができる。
【００１８】
また、本発明は、ｒ行ｃ列の画素を有する表示部と、前記表示部に表示される画像のうちｋ１行分のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、隣り合う少なくとも２画素のデータを記憶する第１記憶部と、前記画像のうちｋ２行分（ｋ１およびｋ２は、Ｏｍａｘ＜（ｋ１＋ｋ２）＜ｒを満たす自然数であり、Ｏｍａｘは前記表示部に対してあらかじめ設定されたオフセット最大値である）のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、前記第１記憶部にデータが記憶されている画素とは異なる行において隣り合う少なくとも２画素のデータを記憶する第２記憶部と、前記ｒ行ｃ列の画素のうち処理対象となる対象画素のデータを、前記第１記憶部および前記第２記憶部において当該対象画素に対応するオフセットベクトルにより示される位置に対応する記憶領域に記憶されている複数の画素のデータを用いて補正を行う補正部とを有する表示装置を提供する。
【００１９】
この表示装置によれば、メモリーアクセス用の高速クロックを用いずに、補正に用いられるデータを得る時間を短縮することができる。
【００２０】
さらに、本発明は、ｒ行ｃ列の画素を有する表示部に表示される画像を処理する画像処理方法であって、前記画像のうちｋ１行分のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、隣り合う少なくとも２画素のデータを第１記憶部に記憶するステップと、前記画像のうちｋ２行分（ｋ１およびｋ２は、Ｏｍａｘ＜（ｋ１＋ｋ２）＜ｒを満たす自然数であり、Ｏｍａｘは前記表示部に対してあらかじめ設定されたオフセット最大値である）のデータに相当する複数の記憶領域を有し、当該複数の記憶領域の各々に、前記第１記憶部にデータが記憶されている画素とは異なる行において隣り合う少なくとも２画素のデータを第２記憶部に記憶するステップと、前記ｒ行ｃ列の画素のうち処理対象となる対象画素のデータを、前記第１記憶部および前記第２記憶部において当該対象画素に対応するオフセットベクトルにより示される位置に対応する記憶領域に記憶されている複数の画素のデータを用いて補正を行うステップとを有する画像処理方法を提供する。
【００２１】
この画像処理方法によれば、メモリーアクセス用の高速クロックを用いずに、補正に用いられるデータを得る時間を短縮することができる。
【図面の簡単な説明】
【００２２】
【図１】一実施形態に係る表示装置１の構成を示すブロック図。
【図２】コントローラー１２の構成を示す図。
【図３】投写される画像の歪みを例示する図。
【図４】補正後の目標となる図形１８４を例示する図。
【図５】記憶領域の割り当てを例示する図。
【図６】記憶領域の割り当ての具体例を示す図。
【図７】オフセットベクトルが指す位置Ｐｄを例示する図。
【図８】表示装置１の動作を示すフローチャート。
【図９】ステップＳ１０４における読み出しアドレス生成処理の詳細を示す図。
【図１０】キャッシュ１２６１の構成を例示する図。
【図１１】補正に用いられる画素を例示する図。
【図１２】動作例１を示す図。
【図１３】動作例２を示す図。
【図１４】動作例３を示す図。
【図１５】動作例４を示す図。
【図１６】Ｃｒ＝１およびＣｗ＝１２１の状態を示す図。
【図１７】Ｃｒ＝１２０およびＣｗ＝２４１の状態を示す図。
【図１８】Ｃｒ＝２００およびＣｗ＝３２１の状態を示す図。
【図１９】２つのフレームバッファーへの記憶領域の割り当てを例示する図。
【図２０】変形例４に係る位置Ｐｄの補正を例示する図。
【発明を実施するための形態】
【００２３】
１．構成
図１は、一実施形態に係る表示装置１の構成を示すブロック図である。表示装置１は、例えば、自動車、電車、または飛行機のフロントガラスに画像を投写する投写型の表示装置、いわゆるＨＵＤ（Head-Up Display）である。表示装置１が自動車に用いられる場合、投写される画像は、例えば、カーナビゲーションの画面または各種計器（例えば速度計や回転計）の測定結果を示す画像である。
【００２４】
表示装置１は、ホスト装置１１と、コントローラー１２と、投写ユニット１３と、記憶部１４と、ＩＦ部１５と、操作パネル１６とを有する。
【００２５】
ホスト装置１１は、表示装置１の他の構成要素を制御する。ホスト装置１１は、ＣＰＵ（Central Processing Unit）１１１と、ＲＯＭ（Read Only Memory）１１２と、ＲＡＭ（Random Access Memory）１１３とを有する。ＣＰＵ１１１は、表示装置１の各部を制御する制御装置である。ＲＯＭ１１２は、各種プログラムおよびデータを記憶した不揮発性の記憶装置である。ＲＡＭ１１３は、データを記憶する揮発性の記憶装置であり、ＣＰＵ１１１が処理を実行する際のワークエリアとして機能する。
【００２６】
コントローラー１２は、投写ユニット１３を制御する装置である。この例で、コントローラー１２は、入力された映像信号（以下「入力映像信号」という）に所定の画像処理を施す画像処理装置として機能する。コントローラー１２は、画像処理を施した映像信号を、投写ユニット１３に出力する。
【００２７】
投写ユニット１３は、画像処理が施された映像信号に従って、スクリーンに画像を投写する。投写ユニット１３は、光源、光変調器１３１、および光学系、並びにこれらの駆動回路を有する（光変調器１３１以外は図示略）。光源は、高圧水銀ランプ、ハロゲンランプ、若しくはメタルハライドランプなどのランプ、またはＬＥＤ（Light Emitting Diode）若しくはレーザーダイオードなどの固体光源である。光変調器１３１は、光源から照射された光を映像信号に応じて変調する装置であり、例えば液晶パネルまたはＤＭＤ（Digital Mirror Device）等の表示部を有する。光変調器１３１は、ｒ行ｃ列のマトリクス状に配置された画素を有し、画素毎に光を変調する。光学系は、光変調器により変調された光をスクリーンに投写する素子であり、例えばレンズおよびプリズムを有する。
【００２８】
記憶部１４は、データおよびプログラムを記憶する不揮発性の記憶装置、例えばＨＤＤ（Hard Disk Drive）またはＳＳＤ（Solid State Drive）である。記憶部１４は、例えば、カーナビゲーションを実行するためのプログラムおよび地図データを記憶している。ホスト装置１１は、記憶部１４に記憶されているプログラムおよびデータを用いてカーナビゲーションの画像を生成し、後段の回路に出力する。
【００２９】
ＩＦ部１５は、外部装置（例えば各種計器）と信号またはデータの送受信を仲介するインターフェースである。ＩＦ部１５は、外部装置と信号またはデータの送受信をするための端子を有する。
【００３０】
操作パネル１６は、ユーザーが表示装置１に対し指示を入力するための入力装置であり、例えば、キーパッド、ボタン、またはタッチパネルを含む。
【００３１】
図２は、コントローラー１２の構成を示す図である。コントローラー１２は、ＶＲＡＭ（Video RAM）１２１と、アービター１２２と、映像入力部１２３と、書き込みＩＦ１２４と、読み出しアドレス生成部１２５と、読み出しＩＦ１２６と、補正部１２７と、映像出力部１２８と、オフセットテーブル１２９とを有する。
【００３２】
ＶＲＡＭ１２１は、全部でｋ行分の画像データを記憶する記憶領域を有し、フレームバッファーとして用いられるメモリー（記憶部）である。ここで、ｋは、
Ｏｍａｘ＜ｋ＜ｒ  …（１）
を満たす自然数である。Ｏｍａｘは、用いられる光変調器１３１に応じてあらかじめ設定されたオフセット最大値である。オフセット最大値については後述する。
【００３３】
ＶＲＡＭ１２１は、詳細には、ＶＲＡＭ１２１１、ＶＲＡＭ１２１２、ＶＲＡＭ１２１３、およびＶＲＡＭ１２１４の４つのフレームバッファー（第１〜第４記憶部の一例）を有する。ＶＲＡＭ１２１１、ＶＲＡＭ１２１２、ＶＲＡＭ１２１３、およびＶＲＡＭ１２１４を区別する必要が無いときは、ＶＲＡＭ１２１と記載する。ＶＲＡＭ１２１１、ＶＲＡＭ１２１２、ＶＲＡＭ１２１３、およびＶＲＡＭ１２１４は、それぞれ、ｋ1、ｋ2、ｋ3、およびｋ4行分のデータを記憶する記憶領域を有する。なお、ｋ1、ｋ2、ｋ3、およびｋ4は、ｋ1＋ｋ2＋ｋ3＋ｋ4＝ｋを満たす自然数である。また、ｋ1＝ｋ2＝ｋ3＝ｋ4であることが好ましい。
【００３４】
ＶＲＡＭ１２１１〜１２１４の各々は、複数の単位記憶領域に区分されている。各単位記憶領域は、アドレスにより特定される。各単位記憶領域には、行方向において隣り合う（一連の）少なくとも２つの画素のデータが記憶される。すなわち、あるアドレスで特定される記憶領域には、行方向において隣り合う一連の少なくとも２画素のデータがパッキングされて記憶されており、データの読み出しおよび書き込みはこれら複数の画素を単位として行われる。
【００３５】
本実施形態において、各単位記憶領域には、隣り合う２つの画素のデータが記憶されている。例えば、１画素のデータが２４ビットである場合には、単位記憶領域は４８ビットの記憶容量を有する。上位２４ビットにはｘ座標が小さい画素のデータが、下位２４ビットにはｘ座標が大きい画素のデータが記憶されている。なお、ＶＲＡＭ１２１１〜１２１４の記憶領域と画素との関係については後述する。
【００３６】
なおＶＲＡＭ１２１は、必ずしも全体でｋ行ｃ列の記憶領域を有していなくてもよい。ＶＲＡＭ１２１はｋ行ｃ列よりもより多くの記憶領域を有していてもよい。この場合、ＶＲＡＭ１２１の一部の記憶領域をブロック分割して用いることができる。あるいは、ハードウェアとしては単一のＲＡＭの記憶領域を４つに分割して、それぞれＶＲＡＭ１２１１〜１２１４として用いてもよい。また、図２ではコントローラー１２がＶＲＡＭ１２１を内蔵している例を示したが、ＶＲＡＭ１２１はコントローラー１２の外部に設けられていてもよい。
【００３７】
アービター１２２は、ＶＲＡＭ１２１へアクセスする権利を調停する回路である。
【００３８】
映像入力部１２３は、ホスト装置１１から映像信号（「入力映像信号」という）を受け付ける。映像入力部１２３は、入力映像信号を、書き込みＩＦ１２４に出力する。
【００３９】
書き込みＩＦ１２４は、入力映像信号をデータとしてＶＲＡＭ１２１に書き込む。このとき、書き込みＩＦ１２４は、ＶＲＡＭ１２１の記憶領域のうち、ライトカウンターで指定される行に対応する記憶領域にデータを書き込む。ライトカウンターは、データの書き込みが行われる行を指定するパラメーターである。書き込みＩＦ１２４は、ライトカウンターを記憶するためのレジスター（記憶部）を有している（図示略）。
【００４０】
読み出しアドレス生成部１２５は、処理対象画素のデータの補正に用いられるデータが記憶されている記憶領域を示すアドレス（以下「読み出しアドレス」という）を生成する。読み出しアドレス生成部１２５は、リードカウンターおよびオフセットベクトルを用いて読み出しアドレスを生成する。リードカウンターは、データ読み出しの基準となる行を指定するパラメーターである。読み出しアドレス生成部１２５は、リードカウンターを記憶するためのレジスター（記憶部）を有している（図示略）。オフセットベクトルは、オフセットテーブル１２９から得られる。オフセットテーブル１２９は、オフセットベクトルが記録されたテーブルを記憶したメモリーである。オフセットベクトルについては後述する。
【００４１】
読み出しＩＦ１２６は、ＶＲＡＭ１２１からデータを読み出す。この例で、１つのアドレスで指定される記憶領域には、隣り合う２つの画素のデータが含まれている。読み出しＩＦ１２６は、読み出したデータのうち、画像処理に用いるデータを、補正部１２４に出力する。
【００４２】
また、読み出しＩＦ１２６は、キャッシュ１２６１を有する。キャッシュ１２６１は、既にＶＲＡＭ１２１から読み出したデータを一時記憶するメモリー（キャッシュ記憶部の一例）である。
【００４３】
補正部１２７は、データの補正を行う。補正部１２７は、ＶＲＡＭ１２１に記憶されているデータのうち読み出しアドレス生成部１２５が生成したアドレスで指定される記憶領域に記憶されているデータを用いて補正する。補正の具体的方法については後述する。
【００４４】
映像出力部１２８は、補正部１２７により補正されたデータを、映像信号として、後段の投写ユニット１３に出力する。
【００４５】
なお、図示は省略したが、コントローラー１２はこれ以外にも、ホスト装置１１との間でデータおよび命令の送受信をするインターフェースを有する。
【００４６】
２．歪み補正の概要
図３は、投写される画像の歪みを例示する図である。図３（Ａ）は光変調器１３１に表示される画像を、図３（Ｂ）はスクリーンＳｃに投写される画像を例示している。光変調器１３１は、表示領域１８１を有する。この例では、表示領域１８１に長方形１８２が表示されている。表示領域１８１に表示されている長方形１８２に応じて、スクリーンＳｃには図形１８３が投写されている。投写ユニット１３の光学系とスクリーンとの位置関係が理想的であれば図形１８３は長方形になるはずであるが、この例では光学系とスクリーンとの位置関係が理想状態からずれており、図形１８３は長方形から歪んでいる。図形１８３は、長方形１８２の頂点に対応する点１８３１、１８３２、１８３３、および１８３４を有する。以下、この歪みを解消する方法の概要を説明する。
【００４７】
図４は、補正後の目標となる図形１８４を例示する図である。図４（Ａ）はスクリーンＳｃ上における図形１８４を示している。スクリーンＳｃ上において、図形１８４は、例えば、（ｉ）所定の向き（例えば、鉛直方向および水平方向）の辺を有し、（ｉｉ）長方形１８２と同じ縦横比を有し、かつ（ｉｉｉ）図形１８４の基準位置と図形１８３の基準位置が所定の位置関係にある（例えば、図形１８４の重心と図形１８３の重心とが一致する）という条件を満たす図形である。図形１８４は、頂点１８４１、１８４２、１８４３、および１８４４を有する。なお図形１８４は、補正後の画像の面積を最大にする観点から、さらに（ｉｖ）図形１８３に内接する、という条件を満たすことが好ましい。図４の例では、図形１８３および図形１８４を見やすくするため、条件（ｉｖ）は満たしていない。
【００４８】
説明を簡単にするため、まず図形１８３の点１８３１、１８３２、１８３３、および１８３４だけを考える。補正後の形状を図形１８４とするには、これらの点を、それぞれ、頂点１８４１、１８４２、１８４３、および１８４４に移動すればよい。すなわち、補正後の頂点１８４１のデータ（例えば階調値）は、点１８３１のデータを参照すればよい。ここで、補正後の点（例えば頂点１８４１）を基準としたときに、参照すべき補正前の点（例えば点１８３１）を示すベクトルをオフセットベクトル（オフセットベクター）という。頂点１８４１、１８４２、１８４３、および１８４４は、それぞれ異なる点１８３１、１８３２、１８３３、および１８３４を参照するので、オフセットベクトルは各点で定義される。
【００４９】
この考え方は図形１８４の頂点だけでなく、表示領域１８１の全ての点（すなわち全ての画素）について適用できる。例えば、単なる長方形ではなく格子状のパターンを投写すれば、各格子のずれを用いてオフセットベクトルを定義することができる。
【００５０】
オフセットベクトルは、投写ユニット１３の光学系とスクリーンとの位置関係が決まれば一意に定まる。例えば、投写ユニット１３に所定のテストパターンを投写させ、投写された画像をカメラで撮影して解析することにより、オフセットベクトルを決定することができる。例えば自動車のＨＵＤとして用いる場合のように、投写ユニット１３を設置すればスクリーンとの位置関係がその後変わらないときは、決定されたオフセットベクトルをメモリーに記憶しておき、補正の時はこれを参照すればよい。
【００５１】
図４（Ｂ）は、光変調器１３１上における図形１８５を示している。このように、図形１８３と逆の歪みを与えた画像を表示すれば、歪みが補正された図形１８４がスクリーンＳｃに表示される。
【００５２】
ここで、表示領域１８１上の画素Ｐ（ｘ，ｙ）におけるオフセットベクトルをＶｏｓ（ｘ，ｙ）と表す。なお、ここでは、図中の左上端の画素の座標を（０，０）と定義し、右方向および下方向をｘ軸およびｙ軸の正方向と定義する。画素Ｐ（ｘ，ｙ）の補正後のデータＤｒ（Ｐ）は、補正前のデータＤｏを用いて以下のように表される。
Ｄｒ（Ｐ（ｘ，ｙ））＝Ｄｏ（Ｐ（ｘ，ｙ）＋Ｖｏｓ（ｘ，ｙ））  …（２）
【００５３】
オフセットベクトルの大きさをオフセット量という。ｘ方向およびｙ方向のそれぞれにおけるオフセットベクトルの大きさを、ｘ方向のオフセット量およびｙ方向のオフセット量という。オフセットベクトルの向きによって、オフセット量は正負いずれの値も取り得る。
【００５４】
オフセット量は光学系とスクリーンとの位置関係によって決まるが、例えば自動車向けのように用途が決められている場合、オフセット量の取り得る範囲はある程度限定される。想定されるオフセット量の最大値を、オフセット最大値という。オフセット最大値は正負両方向に対してそれぞれ個別に設定されてもよいし、単一のオフセット最大値が正負両方向に共通に設定されてもよい。
【００５５】
なおオフセット最大値がリードカウンターの進行方向に対して正方向および負方向の双方について個別に設定されていた場合、式（１）におけるＯｍａｘは、これら２つの値のうち大きい方の値を有する。
【００５６】
なお、画素Ｐ（ｘ，ｙ）は現実の画素なのでｘおよびｙは整数であるが、オフセットベクトルＶｏｓの成分は整数でなくてもよい。オフセットベクトルＶｏｓの成分が整数でない場合、オフセットベクトルＶｏｓが指す位置は画素そのものではなく、複数の画素の間の点である。このデータの処理に関し、まず、ＶＲＡＭ１２１へのデータの割り当てについて説明する。
【００５７】
図５は、記憶領域の割り当てを例示する図である。破線の四角は画素を示している。この例で、入力映像のデータは、２行４列の８画素を単位として、ＶＲＡＭ１２１の単位記憶領域が割り当てられている。具体的には、これらの８画素は、行方向に隣り合う２画素（単位記憶領域の容量）を単位として、２行２列の４つの領域に分割される。このうち、左上の領域のデータはＶＲＡＭ１２１１に、右上の領域のデータＶＲＡＭ１２１２に、左下の領域のデータはＶＲＡＭ１２１３に、右下の領域のデータはＶＲＡＭ１２１４に、それぞれ記憶されている。
【００５８】
ＶＲＡＭ１２１の各々において、第ｊ行第ｉ列の単位記憶領域をＡ（ｉ，ｊ）と表すと、ＶＲＡＭ１２１１の単位記憶領域Ａ（ｓ，ｔ）には、画素Ｐ（４ｓ，２ｔ）および画素Ｐ（４ｓ＋１，２ｔ）のデータが記憶される。ＶＲＡＭ１２１２の単位記憶領域Ａ（ｓ，ｔ）には、画素Ｐ（４ｓ＋２，２ｔ）および画素Ｐ（４ｓ＋３，２ｔ）のデータが記憶される。ＶＲＡＭ１２１３の単位記憶領域Ａ（ｓ，ｔ）には、画素Ｐ（４ｓ，２ｔ＋１）および画素Ｐ（４ｓ＋１，２ｔ＋１）のデータが記憶される。ＶＲＡＭ１２１３の単位記憶領域Ａ（ｓ，ｔ）には、画素Ｐ（４ｓ＋２，２ｔ＋１）および画素Ｐ（４ｓ＋３，２ｔ＋１）のデータが記憶される。
【００５９】
図６は、記憶領域の割り当ての具体例を示す図である。例えば、ＶＲＡＭ１２１１の単位記憶領域Ａ（０，０）には、画素Ｐ（０，０）および画素Ｐ（１，０）のデータが、単位記憶領域Ａ（１，０）には、画素Ｐ（４，０）および画素Ｐ（５，０）のデータが、それぞれ記憶される。ＶＲＡＭ１２１２の単位記憶領域Ａ（０，０）には、画素Ｐ（２，０）および画素Ｐ（３，０）のデータが、単位記憶領域Ａ（１，０）には、画素Ｐ（６，０）および画素Ｐ（７，０）のデータが、それぞれ記憶される。例えば、ＶＲＡＭ１２１３の単位記憶領域Ａ（０，０）には、画素Ｐ（０，１）および画素Ｐ（１，１）のデータが、単位記憶領域Ａ（１，０）には、画素Ｐ（４，１）および画素Ｐ（５，１）のデータが、それぞれ記憶される。ＶＲＡＭ１２１４の単位記憶領域Ａ（０，０）には、画素Ｐ（２，１）および画素Ｐ（３，１）のデータが、単位記憶領域Ａ（１，０）には、画素Ｐ（６，１）および画素Ｐ（７，１）のデータが、それぞれ記憶される。
【００６０】
図７は、オフセットベクトルが指す位置Ｐｄを例示する図である。位置Ｐｄのｘ座標ｘｄおよびｙ座標ｙｄがいずれも整数でない場合、位置Ｐｄの周囲には４つの画素が存在する。これら４つの画素を、参照画素Ｐ1（ｘ1，ｙ1）、Ｐ2（ｘ2，ｙ2）、Ｐ3（ｘ3，ｙ3）、およびＰ4（ｘ4，ｙ4）という。なお、これらの座標は、
ｘ2＝ｘ1＋１
ｙ2＝ｙ1
ｘ3＝ｘ1
ｙ3＝ｙ1＋１
ｘ4＝ｘ2
ｙ4＝ｙ3
ｘ1≦ｘｄ＜ｘ2
ｙ1≦ｙｄ＜ｙ2    …（３）
を満たす。
【００６１】
再び図６を参照する。例えば、参照画素Ｐ１〜Ｐ４が、（０，０）、（１，０）、（０，１）、および（１，１）であった場合、ＶＲＡＭ１２１１の単位記憶領域Ａ（０，０）に記憶されているデータ（Ｐ（０，０）およびＰ（１，０）のデータ）およびＶＲＡＭ１２１３の単位記憶領域Ａ（０，０）に記憶されているデータ（Ｐ（０，１）およびＰ（１，１）のデータ）が読み出される。この場合は、メモリーへのアクセスは２回であり、１画素ずつのデータにアクセスする場合と比較してメモリーへのアクセス回数は半分で済む。
【００６２】
例えば、参照画素Ｐ１〜Ｐ４が、（３，１）、（４，１）、（３，２）、および（４，２）の間にあった場合、ＶＲＡＭ１２１１の単位記憶領域Ａ（１，１）に記憶されているデータ（Ｐ（４，１）およびＰ（５，１）のデータ）、ＶＲＡＭ１２１２の単位記憶領域Ａ（０，１）に記憶されているデータ（Ｐ（２，２）およびＰ（３，２）のデータ）、ＶＲＡＭ１２１３の単位記憶領域Ａ（１，０）に記憶されているデータ（Ｐ（４，２）およびＰ（５，２）のデータ）、およびＶＲＡＭ１２１４の単位記憶領域Ａ（０，０）に記憶されているデータ（Ｐ（２，１）およびＰ（３，１）のデータ）が読み出される。この場合は、メモリーへのアクセスは４回である。
【００６３】
なおこの場合、キャッシュ１２６１に記憶されているデータを用いることにより、ＶＲＡＭ１２１へのアクセス回数を減らすことができる。詳細は後述する。
【００６４】
３．動作
以下、表示装置１の動作例を説明する。ここでは、光変調器１３１が、ＷＶＧＡ相当の解像度を有する例を用いて説明する。すなわち、光変調器１３１は、４８０行８００列の画素を有する（ｒ＝４８０、ｃ＝８００）。オフセット最大値は１２０に設定されている（Ｏｍａｘ＝１２０）。ＶＲＡＭ１２１は、２４１行分のデータを記憶するための記憶領域を有する。なお、２４１行分とは、オフセット最大値（この例では１２０行）の２倍に、処理対象画素（この例では１行）の記憶領域を加算した値である。オフセットベクトルメモリー１６６は、各画素のオフセットベクトルを記憶している。
【００６５】
３−１．概要
図８は、表示装置１の動作を示すフローチャートである。
【００６６】
ステップＳ１０１において、書き込みＩＦ１２４は、画像データの一部を、ＶＲＡＭ１２１に書き込む。ここで書き込まれるデータは、オフセット最大値に相当する量のデータ、この例では、１２０行分のデータである。すなわち、書き込みＩＦ１２４は、画像データのうち第１行から第１２０行までのデータを、ＶＲＡＭ１２１に書き込む。
【００６７】
ＶＲＡＭ１２１は、第１〜２４１行の記憶領域を有している。ステップＳ１０１においては、第１〜１２０行の記憶領域に画像データが書き込まれる。
【００６８】
ステップＳ１０２において、読み出しアドレス生成部１２５および書き込みＩＦ１２４は、それぞれ、リードカウンターＣｒおよびライトカウンターＣｗを初期化する。この例では、Ｃｒ＝１、Ｃｗ＝Ｏｍａｘ＋Ｃｒ＝１２１に初期化される。リードカウンターＣｒおよびライトカウンターＣｗは、画像データ上の行の位置を示すカウンターであり、この例では、いずれも１〜４８０の値をとる。なお、ライトカウンターＣｗとリードカウンターＣｒとの差は、少なくとも正方向側のオフセット最大値よりも大きい。
【００６９】
ステップＳ１０３において、読み出しアドレス生成部１２５および補正部１２７はｘカウンターＣｘを初期化する。ｘカウンターＣｘは、処理対象の画素を特定するためのパラメーターである。読み出しアドレス生成部１２５および補正部１２７はそれぞれ個別にｘカウンターＣｘを保持しているが、これらは同期信号で同期している。この例では、Ｃｘ＝１に初期化される。以下、補正対象の画素を画素Ｐｃと表す。画素Ｐｃの座標は、（Ｃｘ，Ｃｒ）である。
【００７０】
ステップＳ１０４において、読み出しアドレス生成部１２５は、読み出しアドレスを生成する。画素Ｐｃを基準としてオフセットベクトルＶｏｓが指す位置を、位置Ｐｄと表す。位置Ｐｄの座標（ｘｄ，ｙｄ）は、次式（４）で表される。
（ｘｄ，ｙｄ）＝Ｐｃ＋Ｖｏｓ  …（４）
位置Ｐｄ（ｘｄ，ｙｄ）のデータは、ＶＲＡＭ１２１において、第ｋｄ行の記憶領域に記憶されている。読み出しアドレス生成部１２５は、次式（５）を用いて読み出しアドレスｋｄを計算する。
ｋｄ＝ｙｄ（ｍｏｄ  ｋ）  …（５）
例えば、ｋ＝２４１の場合においてｙｄ＝１〜２４１のときは、ｋｄ＝ｙｄである。ｙｄ＝２４３の場合、ｋｄ＝２である。
【００７１】
図９は、ステップＳ１０４における読み出しアドレス生成処理の詳細を示す図である。
【００７２】
ステップＳ１４０１において、読み出しアドレス生成部１２５は、参照画素を特定する。
【００７３】
ステップＳ１４０２において、読み出しアドレス生成部１２５は、カウンターｕを初期化する。カウンターｕは、画素Ｐ1〜Ｐ4のうち対象となる画素を特定するカウンターである。ここではｕ＝１に初期化される。
【００７４】
ステップＳ１４０３において、読み出しアドレス生成部１２５は、画素Ｐuのデータがキャッシュ１２６１に記憶されているか判断する。キャッシュ１２６１には、前回の補正に用いられた画素のデータが、その画素の座標とともに記憶されている。画素Ｐuのデータがキャッシュ１２６１に記憶されていると判断された場合（Ｓ１４０３：ＹＥＳ）、読み出しアドレス生成部１２５は、処理をステップＳ１４１１に移行する。画素Ｐuのデータがキャッシュ１２６１に記憶されていないと判断された場合（Ｓ１４０３：ＮＯ）、読み出しアドレス生成部１２５は、処理をステップＳ１４０４に移行する。
【００７５】
ステップＳ１４０４において、読み出しアドレス生成部１２５は、画素Ｐuに対応する読み出しアドレスを生成する。読み出しアドレス生成部１２５は、次式（６）および（７）を用いて読み出しアドレスのｘ座標ｘrおよびｙ座標ｙr生成する。
ｘr＝ｑｕｏｔｉｅｎｔ（４，ｘu）−１  …（６）
ｙr＝ｑｕｏｔｉｅｎｔ（２，ｙu）−１  …（７）
なお、ｑｕｏｔｉｅｎｔ（ｍ，ｎ）は、ｎをｍで除した商を示す。
【００７６】
ステップＳ１４０５において、読み出しアドレス生成部１２５は、以下の条件（８）〜（１１）を用いて、画素Ｐuのデータが記憶されているＶＲＡＭを特定する。
ｍｏｄ（ｘu  ４）＝０ｏｒ１の場合、ＶＲＡＭ１２１１ｏｒ１２１３  …（８）
ｍｏｄ（ｘu  ４）＝２ｏｒ３の場合、ＶＲＡＭ１２１２ｏｒ１２１４  …（９）
ｍｏｄ（ｙu  ２）＝０の場合、ＶＲＡＭ１２１１ｏｒ１２１２  …（１０）
ｍｏｄ（ｙu  ２）＝１の場合、ＶＲＡＭ１２１３ｏｒ１２１４  …（１１）
【００７７】
ステップＳ１４０６において、読み出しアドレス生成部１２５は、読み出しアドレスで指定される単位記憶領域に含まれる参照画素の数を判断する。カウンターｕが奇数の場合においてｍｏｄ（ｘu  ２）＝０のときは、読み出しアドレス生成部１２５は、読み出しアドレス（ｘr，ｙr）で指定される単位記憶領域に、画素ＰuおよびＰu+1の２つの参照画素のデータが含まれると判断する。カウンターｕが奇数の場合においてｍｏｄ（ｘu  ２）＝１のときは、読み出しアドレス生成部１２５は、読み出しアドレス（ｘr，ｙr）で指定される単位記憶領域に、１つの参照画素（画素Ｐu）のデータが含まれると判断する（残り１画素のデータは、補正には用いられない）。読み出しアドレス（ｘr，ｙr）で指定される単位記憶領域に含まれる参照画素の数が２つである場合（Ｓ１４０６：２）、読み出しアドレス生成部１２５は、処理をステップＳ１４０７に移行する。読み出しアドレス（ｘr，ｙr）で指定される単位記憶領域に含まれる参照画素の数が１つである場合（Ｓ１４０６：１）、読み出しアドレス生成部１２５は、処理をステップＳ１４０９に移行する。
【００７８】
ステップＳ１４０７において、読み出しアドレス生成部１２５は、ＶＲＡＭ１２１に対しデータの読み出し要求を出力する。読み出し要求は、ステップＳ１４０５で特定されたＶＲＡＭに対して出力される。また、読み出し要求は、読み出しアドレスおよび画素Ｐ１〜Ｐ４のうちそのアドレスにデータが記憶されている２つの画素の識別子を含む。
【００７９】
ステップＳ１４０８において、読み出しアドレス生成部１２５は、カウンターｕを更新する。ここでは、ｕ＝ｕ＋２としてカウンターｕを更新する。
【００８０】
ステップＳ１４０９において、読み出しアドレス生成部１２５は、ＶＲＡＭ１２１に対しデータの読み出し要求を出力する。読み出し要求は、ステップＳ１４０５で特定されたＶＲＡＭに対して出力される。また、読み出し要求は、読み出しアドレスおよび画素Ｐ１〜Ｐ４のうちそのアドレスにデータが記憶されている１つの画素の識別子を含む。
【００８１】
ステップＳ１４１０において、読み出しアドレス生成部１２５は、カウンターｕを更新する。ここでは、ｕ＝ｕ＋１としてカウンターｕを更新する。
【００８２】
ステップＳ１４１１において、読み出しアドレス生成部１２５は、画素Ｐｕのデータがキャッシュ１２６１に記憶されている旨の情報を、読み出しＩＦ１２６に出力する。
【００８３】
ステップＳ１４１２において、読み出しアドレス生成部１２５は、画素Ｐ１〜Ｐ４の全てについて処理が完了したか判断する。画素Ｐ１〜Ｐ４の全てについて処理が完了したと判断された場合（Ｓ１４１２：ＹＥＳ）、読み出しアドレス生成部１２５は、ステップＳ１０４の処理を終了する。画素Ｐ１〜Ｐ４のうち処理されていない画素があると判断された場合（Ｓ１４１２：ＮＯ）、読み出しアドレス生成部１２５は、処理をステップＳ１４０３に移行する。
【００８４】
再び図８を参照する。ステップＳ１０５において、読み出しＩＦ１２６は、ＶＲＡＭ１２１からデータを取得する。ステップＳ１４０７またはＳ１４０９で読み出しアドレス生成部１２５から出力された読み出し要求は、アービター１２２を介してＶＲＡＭ１２１に出力される。ＶＲＡＭ１２１は、指定されたアドレスの記憶領域からデータを読み出し、アービター１２２を介して読み出しＩＦ１２６に出力する。
【００８５】
図１０は、キャッシュ１２６１の構成を例示する図である。この例で、キャッシュ１２６１は、記憶領域１２６２および記憶領域１２６３を有する。記憶領域１２６２および記憶領域１２６３は、それぞれ、２行２列の４画素分のデータを記憶する。記憶領域１２６２および記憶領域１２６３の一方には前回の補正に用いられたデータが、他方には今回の補正に用いられるデータが記憶される。ここでは説明を簡単にするため、記憶領域１２６２に前回のデータが、記憶領域１２６３に今回のデータが記憶される例を説明する。
【００８６】
読み出しＩＦ１２６は、取得したデータから参照画素のデータを抽出する。ＶＲＡＭ１２１から出力されるデータには、そのデータに含まれる参照画素の識別子が付加されている。そのデータに参照画素Ｐ１およびＰ２のデータが含まれることが示されている場合、読み出しＩＦ１２６は、上位２４ビットのデータをＰ１のデータとして、下位２４ビットをＰ２のデータとして抽出する。そのデータに参照画素Ｐ１のみのデータが含まれることが示されている場合、読み出しＩＦ１２６は、下位２４ビットのデータをＰ１のデータとして抽出する。そのデータに参照画素Ｐ２のみのデータが含まれることが示されている場合、読み出しＩＦ１２６は、上位２４ビットのデータをＰ２のデータとして抽出する。そのデータに参照画素Ｐ３およびＰ４のデータが含まれることが示されている場合、読み出しＩＦ１２６は、上位２４ビットのデータをＰ３のデータとして、下位２４ビットをＰ４のデータとして抽出する。そのデータに参照画素Ｐ３のみのデータが含まれることが示されている場合、読み出しＩＦ１２６は、下位２４ビットのデータをＰ３のデータとして抽出する。そのデータに参照画素Ｐ４のみのデータが含まれることが示されている場合、読み出しＩＦ１２６は、上位２４ビットのデータをＰ４のデータとして抽出する。
【００８７】
読み出しＩＦ１２６は、抽出した参照画素のデータを記憶領域１２６３に書き込む。
【００８８】
なお、キャッシュ１２６１に画素Ｐｕのデータが記憶されていることが読み出しアドレス生成部１２５から通知された場合、読み出しＩＦ１２６は、記憶領域１２６２から画素Ｐｕのデータを読み出し、読み出したデータを記憶領域１２６３に書き込む。
【００８９】
図９のフローで参照画素Ｐ１〜Ｐ４について処理が完了すると、それに応じて、記憶領域１２６３には参照画素Ｐ１〜Ｐ４のデータが書き込まれる。読み出しＩＦ１２６は、記憶領域１２６３に記憶されているデータを、補正部１２７に出力する。その後、読み出しＩＦ１２６は、記憶領域１２６３に記憶されているデータを、記憶領域１２６２にコピーする。
【００９０】
ステップＳ１０６において、補正部１２７は、式（２）を用いて画素Ｐｃのデータを補正する。
【００９１】
図１１は、補正に用いられる画素を例示する図である。この例では、Ｐｃ＝Ｐ（１４，１２）であり、Ｖｏｓ（１４，１２）＝（−８，−１０）である。式（４）から、
Ｐｄ＝（６，２）  …（１２）
である。式（２）とあわせて、
Ｄｒ（１４，１２）＝Ｄｏ（６，２）  …（１３）
が得られる。
【００９２】
再び図８を参照する。ステップＳ１０７において、映像出力部１２８は、補正部１２７により補正された画素Ｐｃのデータを後段の回路（例えば光変調器１３１の駆動回路）に出力する。
【００９３】
ステップＳ１０８において、読み出しアドレス生成部１２５および補正部１２７は、ｘカウンターＣｘをインクリメントする。
【００９４】
ステップＳ１０９において、補正部１２７は、１行分の処理が完了したか、すなわち、Ｃｘ＝８０１となったか判断する。まだ１行分の処理が完了していないと判断された場合（Ｓ１０９：ＮＯ）、補正部１２７は、処理をステップＳ１０４に移行する。１行分の処理が完了したと判断された場合（Ｓ１０９：ＹＥＳ）、補正部１２７は、処理をステップＳ１１１に移行する。
【００９５】
ステップＳ１１０において、書き込みＩＦ１２４は、ライトカウンターＣｗで指定される行のデータを、ＶＲＡＭ１２１に書き込む。ライトカウンターＣｗで指定される行のデータは、ＶＲＡＭ１２１において第ｋｗ行の記憶領域に書き込まれる。ｋｗは次式（１４）により計算される。
ｋｗ＝Ｃｗ（ｍｏｄ  ｋ）  …（１４）
例えば、ｋ＝２４１の場合においてＣｗ＝１〜２４１のときは、ｋｗ＝Ｃｗである。Ｃｗ＝２４３の場合、ｋｗ＝２である。
【００９６】
ステップＳ１１１において、読み出しアドレス生成部１２５および書き込みＩＦ１２４は、カウンターＣｒおよびＣｗをインクリメントする。
【００９７】
ステップＳ１１２において、読み出しアドレス生成部１２５は、全ての行について処理が完了したか、すなわち、Ｃｒ＝４８０となったか判断する。まだ全ての行について処理が完了していないと判断された場合（Ｓ１１２：ＮＯ）、読み出しアドレス生成部１２５は、処理をステップＳ１０３に移行する。全ての行について処理が完了したと判断された場合（Ｓ１１２：ＹＥＳ）、コントローラー１２は、図８の処理を終了する。
【００９８】
なおここでは１枚（１フレーム）の画像のみを処理する例を説明したが、動画を処理する場合、複数フレームの画像を連続して処理してもよい。例えば、第ｉフレームについて処理をしている場合において、Ｃｗ＞ｒとなったときは、ライトカウンターＣｗを初期化し、第（ｉ＋１）フレームのデータをＶＲＡＭ１２１に書き込んでもよい。この場合において、Ｃｒ＞ｒとなったときは、リードカウンターＣｒを初期化し、第（ｉ＋１）フレームのデータの処理を開始する。
【００９９】
以上で説明したように、本実施形態によれば、補正に用いられる画素を含む行を選択してラインバッファーに記憶する構成と比較して、処理の負荷を低減することができる。また、リードカウンターとライトカウンターとは同じスピードで行送りされるので、リードがライトを追い越す（書き込みが終わる前の画像データを誤って読み出してしまう）ことはない。
【０１００】
また、本実施形態によれば、本発明を用いない構成（図１の例でコントローラー１２を有さない構成）に対し、ホスト装置１１と投写ユニット１３（光変調器１３１）との間に本実施形態に係るコントローラー１２を設ければよく、歪み補正に対応していないシステムに簡単に低コストで歪み補正の機能を導入することができる。
【０１０１】
３−２．動作例
以下、より具体的な動作例を説明する。
【０１０２】
３−２−１．データ読み出しの例
ここでは、ＶＲＡＭ１２１１〜１２１４からのデータの読み出しの例を説明する。
【０１０３】
３−２−１−１．動作例１
図１２は動作例１を示す図である。この例では、参照画素Ｐ１〜Ｐ４が、（０，０）、（１，０）、（０，１）、および（１，１）である例を説明する。なおこの例では、キャッシュ１２６１に参照画素のデータは記憶されていない。この場合、ＶＲＡＭ１２１１の単位記憶領域Ａ（０，０）およびＶＲＡＭ１２１３の単位記憶領域Ａ（０，０）から読み出したデータを用いて補正が行われる。図において、読み出されるデータには丸印が付されている。
【０１０４】
３−２−１−２．動作例２
図１３は動作例２を示す図である。この例では、参照画素Ｐ１〜Ｐ４が、（１，０）、（２，０）、（１，１）、および（２，１）である例を説明する。なおこの例では、キャッシュ１２６１に参照画素のデータは記憶されていない。この場合、ＶＲＡＭ１２１１の単位記憶領域Ａ（０，０）、ＶＲＡＭ１２１２の単位記憶領域Ａ（０，０）、ＶＲＡＭ１２１３の単位記憶領域Ａ（０，０）、およびＶＲＡＭ１２１４の単位記憶領域Ａ（０，０）から読み出したデータを用いて補正が行われる。
【０１０５】
３−２−１−３．動作例３
図１４は動作例３を示す図である。この例では、参照画素Ｐ１〜Ｐ４が、（３，１）、（４，１）、（３，２）、および（４，２）である例を説明する。なおこの例では、キャッシュ１２６１に参照画素のデータは記憶されていない。この場合、ＶＲＡＭ１２１１の単位記憶領域Ａ（１，１）、ＶＲＡＭ１２１２の単位記憶領域Ａ（０，１）、ＶＲＡＭ１２１３の単位記憶領域Ａ（１，０）、およびＶＲＡＭ１２１４の単位記憶領域Ａ（０，０）から読み出したデータを用いて補正が行われる。
【０１０６】
３−２−１−４．動作例４
図１５は動作例４を示す図である。この例では、前回補正時の参照画素Ｐ１〜Ｐ４が、（０，０）、（１，０）、（０，１）、および（１，１）であり、かつ、今回補正時の参照画素Ｐ１〜Ｐ４が、（１，０）、（２，０）、（１，１）、（２，１）である。キャッシュ１２６１には、画素（０，０）、（１，０）、（０，１）、および（１，１）のデータが記憶されている。この場合、ＶＲＡＭ１２１２の単位記憶領域Ａ（０，０）およびＶＲＡＭ１２１４の単位記憶領域Ａ（０，０）から読み出したデータ、並びにキャッシュ１２６１に記憶されているデータが用いられる。この場合、ＶＲＡＭ１２１へ２回アクセスすれば、補正に用いられるデータを得ることができる。
【０１０７】
オフセットベクトルは画素毎に定義されるが、隣り合う画素でオフセットベクトルが大きく異なることは少ない。すなわち、今回補正時の参照画素は、前回補正時の参照画素から１画素分だけ移動しているケースがほとんどである。したがって、キャッシュ１２６１を用いることにより、ＶＲＡＭ１２１へのアクセス回数を大幅に低減することができる。
【０１０８】
３−２−１−５．動作例５
この例では、参照画素Ｐ１〜Ｐ４が、（０，−１）、（１，−１）、（０，０）、および（１，０）である例を説明する。すなわち、参照画素Ｐ１およびＰ２は、元の画像データ（以下「元データ」という）の範囲外の画素である。元データの範囲外の画素のデータとしては、所定値のデータが用いられる。所定値のデータは、読み出しＩＦ１２６内のレジスター（図示略）に記憶されている。参照画素が元データの範囲外であった場合、読み出しアドレス生成部１２５は、その旨を読み出しＩＦ１２６に通知する。
【０１０９】
３−２−１−６．動作例６
この例では、参照画素Ｐ１〜Ｐ４が、（０，−２）、（１，−２）、（０，−１）、および（１，−１）である例を説明する。すなわち、すべての参照画素が元データの範囲外の画素である。すべての参照画素が元データの範囲外であった場合、読み出しアドレス生成部１２５は、その旨を読み出し補正部１２７に通知する。この場合、補正部１２７は、補正（補間演算）を行わず、所定値をそのまま処理対象画素のデータとして出力する。
【０１１０】
なお、動作例４〜６のように、キャッシュ１２６１またはレジスターからデータを読み出している期間はアービター１２２からＶＲＡＭ１２１にアクセスしていないので、他の装置（例えばホスト装置１１）からＶＲＡＭ１２１にアクセスすることができる。
【０１１１】
３−２−２．ＶＲＡＭ１２１へのデータ書き込み／読み出しの例
ここでは、ＶＲＡＭ１２１に対するデータの書き込みおよび読み出しの例を説明する。ここでは説明の便宜上、ＶＲＡＭ１２１１〜１２１４を区別せず、単一のＶＲＡＭ１２１として説明する。
【０１１２】
図１６は、Ｃｒ＝１およびＣｗ＝１２１の状態（ステップＳ１０７）を示す図である。図は、ＶＲＡＭ１２１の状態を示している。ハッチングされた部分は、第１〜１２０行のデータが記憶されていることを示している。白抜きの部分は、データが記憶されていない（ヌル値が記憶されている）ことを示している。
【０１１３】
この例で、オフセットベクトルＶｏｓ（Ｐｃ）のｘ成分およびｙ成分はともに負である。すなわち、参照画素は元データにおいて存在しない画素である。この場合、補正部１２７は、補正後のデータを所定の値（例えばヌル値または黒に相当する階調）にする。図１６では便宜的に、ＶｏｓおよびＰｄを破線で示し、元データにおいて存在しない画素を参照していることを示している。
【０１１４】
図１７は、Ｃｒ＝１２０およびＣｗ＝２４１の状態（ステップＳ１０７）を示す図である。このとき、ＶＲＡＭ１２１の第１〜２４１行の記憶領域には、画像の第１〜２４１行のデータが記憶されている。
【０１１５】
図１８は、Ｃｒ＝２００およびＣｗ＝３２１の状態（ステップＳ１０７）を示す図である。このとき、ＶＲＡＭ１２１の第１〜８０行の記憶領域には、画像の第２４２〜３２１行のデータが記憶されている。ＶＲＡＭ１２１の第８１〜２４１行の記憶領域には、画像の第８１〜２４１行のデータが記憶されている。この例で、Ｐｃ＝（３００，２００）、Ｖｏｓ（Ｐｃ）＝（２０，１００）である。これらを式（４）に代入して
Ｐｄ＝（３２０，３００）  …（１５）
が得られる。式（５）から
ｋｄ＝５９  …（１６）
であるので、参照画素Ｐｕのデータは、ＶＲＡＭ１２１の第５９行の記憶領域に記憶されている。
【０１１６】
ＶＲＡＭ１２１においては、リードカウンターの進行方向に対し正方向および負方向の双方において、オフセット最大値分の行数のデータが記憶されているので、補正に用いるデータを読み出すことができる。
【０１１７】
４．変形例
本発明は上述の実施形態に限定されるものではなく、種々の変形実施が可能である。以下、変形例をいくつか説明する。以下の変形例のうち２つ以上のものが組み合わせて用いられてもよい。
【０１１８】
４−１．変形例１
ＶＲＡＭ１２１に含まれるフレームバッファーの数は４つに限定されない。例えば、ＶＲＡＭ１２１は、２つのフレームバッファーを有していてもよい。
【０１１９】
図１９は、２つのフレームバッファー（ＶＲＡＭ１２１１およびＶＲＡＭ１２１２）を用いる場合の記憶領域の割り当てを例示する図である。ＶＲＡＭ１２１１の単位記憶領域Ａ（ｓ，ｔ）には、画素Ｐ（２ｓ，２ｔ）および画素Ｐ（２ｓ＋１，２ｔ）のデータが記憶される。ＶＲＡＭ１２１２の単位記憶領域Ａ（ｓ，ｔ）には、画素Ｐ（２ｓ，２ｔ＋１）および画素Ｐ（２ｓ＋１，２ｔ＋１）のデータが記憶される。
【０１２０】
この場合、参照画素Ｐ１〜Ｐ４が例えば、（１，０）、（２，０）、（１，１）、および（２，１）であった場合、単一のフレームバッファーに順次２回アクセスする必要がある。すなわち、データの読み出しに２クロックを要する。しかし、フレームバッファーの分割数が少なくなるため、回路規模をより縮小できる。
【０１２１】
また、ＶＲＡＭ１２１は複数のフレームバッファーを含まず、単一のフレームバッファーとして機能してもよい。
【０１２２】
４−２．変形例２
補正に用いられる参照画素の数は４つに限定されない。例えば、オフセットベクトルが指す位置Ｐｄの周辺ｍ行ｎ列の（ｍ×ｎ）個の画素が参照画素として用いられてもよい。例えば、オフセットベクトルが指す位置Ｐｄの周辺４行４列の１６個の画素が参照画素として用いられてもよい。
【０１２３】
４−３．変形例３
ＶＲＡＭ１２１の記憶容量は、ｋ行分に限定されない。１フレームの全画素分、すなわちｒ行分の記憶領域を有していてもよい。この場合、ＶＲＡＭ１２１の容量は大きくなるが、リードカウンターおよびライトカウンターによる読み出しおよび書き込みの制御は不要になる。
【０１２４】
４−４．変形例４
オフセットベクトルが指す位置Ｐｄが、パッキングされていない２つの画素の間に入った場合、パッキングされた２つの画素の間に位置Ｐｄをずらす補正が行われてもよい。この補正がなければＶＲＡＭ１２１に４回のアクセスが必要であるが、この補正をすればＶＲＡＭ１２１へのアクセスは２回で済む。
【０１２５】
図２０は、変形例４に係る位置Ｐｄの補正を例示する図である。点Ｘが補正前の位置Ｐｄを、点Ｙが補正後の位置Ｐｄを示している。
【０１２６】
また、図１９の例において、位置Ｐｄが、パッキングされていない２つの画素の間に入った場合、パッキングされた２つの画素の間に位置Ｐｄをずらす補正が行われてもよい。この補正をすれば、１つのフレームバッファーへのアクセスは１回で済むので１クロックでデータを読み出すことができる。
【０１２７】
４−５．変形例５
読み出しＩＦ１２６はキャッシュ１２６１を有していなくてもよい。
【０１２８】
４−６．変形例６
オフセットベクトルＶｏｓは、理論的には全ての画素Ｐ（ｘ，ｙ）について定義することが可能であるが全ての画素Ｐ（ｘ，ｙ）についてオフセットベクトルを記憶すると多くのメモリー容量が必要になる場合には、記憶しておくオフセットベクトルを間引いてもよい。例えば、行方向および列方向ともに２画素毎にオフセットベクトルをオフセットテーブル１２９に記憶しておくと、３行３列の９個の画素のうち４隅の画素のみオフセットベクトルが記憶されていることになる。このとき、オフセットベクトルが記憶されていない画素に関しては、近接する、オフセットベクトルが記憶されている画素のオフセットベクトルを用いた補間により、その画素のオフセットベクトルを算出する。
【０１２９】
例えば、Ｖｏｓ（１，１）＝（ｐ１，ｑ１）およびＶｏｓ（１，３）＝（ｐ２，ｑ２）がオフセットテーブル１２９に記憶されており、Ｖｏｓ（１，２）がオフセットテーブル１２９に記憶されていないときは、
Ｖｏｓ（１，２）＝｛Ｖｏｓ（１，１）＋Ｖｏｓ（１，３）｝／２
＝［｛（ｐ１＋ｐ２）／２｝，｛（ｑ１＋ｑ２）／２｝］  …（１７）
によりＶｏｓ（１，２）が算出される。
【０１３０】
４−７．変形例７
ＶＲＡＭ１２１の記憶容量は、実施形態で説明したものに限定されない。例えば、オフセット最大値がリードカウンターの進行方向に対して正方向および負方向の双方について個別に設定されていた場合、正方向のオフセット最大値、負方向のオフセット最大値、および処理対象画素の記憶領域を加算した値に相当する行数の記憶領域を有していてもよい。具体的には、正方向のオフセット最大値Ｏ+ｍａｘ＝１２０、負方向のオフセット最大値Ｏ-ｍａｘ＝８０、処理対象の画素数が１の場合、ＶＲＡＭ１２１は、２０１（＝１２０＋８０＋１）行分の記憶領域を有していればよい。このとき、ライトカウンターＣｗの値は、次式（１７）のように、リードカウンターＣｒに対して、負方向のオフセット最大値分ずらしておけばよい。
Ｃｗ＝Ｃｒ＋Ｏ-ｍａｘ  …（１８）
【０１３１】
４−８．他の変形例
表示装置１はＨＵＤに限定されない。表示装置１は、いわゆる通常のプロジェクターであってもよい。この場合において、プロジェクターのキーストーン補正に本発明が適用されてもよい。特に、いわゆるピコプロジェクターのような小型のプロジェクターにおいて有効である。
【０１３２】
表示装置１および表示装置１の各部の構成は、図１および図２で例示したものに限定されない。実施形態では、ハードウェア（コントローラー１２）が図８のフローを実行する例を説明したが、ホスト装置１１のＣＰＵ１１１が、プログラムに従って図８のフローを実行してもよい。この場合、コントローラー１２は無くてもよい。また、実施形態においてはリードカウンターおよびライトカウンターが読み出しアドレス生成部１２５および書き込みＩＦ１２４のレジスターに記憶される例を説明したが、これらのカウンターはＶＲＡＭ１２１等、他の記憶装置に記憶されてもよい。
【０１３３】
ＣＰＵ１１１が実行するプログラムは、磁気記録媒体（磁気テープ、磁気ディスク（ＨＤＤ、ＦＤ（Flexible Disk））など）、光記録媒体（光ディスク（ＣＤ（Compact Disk）、ＤＶＤ（Digital Versatile Disk））など）、光磁気記録媒体、半導体メモリ（フラッシュＲＯＭなど）などのコンピューター読取り可能な記録媒体に記憶した状態で提供されてもよい。また、このプログラムは、インターネットのようなネットワーク経由でダウンロードされてもよい。
【０１３４】
本発明は、表示装置以外の電子機器、例えば撮像装置に適用されてもよい。例えば、デジタルスチルカメラ、デジタルビデオカメラ、ドライブレコーダーにおける補正に、本発明が適用されてもよい。
【符号の説明】
【０１３５】
１…表示装置、１１…ホスト装置、１１１…ＣＰＵ、１１２…ＲＯＭ、１１３…ＲＡＭ、１２…コントローラー、１２１…ＶＲＡＭ、１２１１…ＶＲＡＭ、１２１２…ＶＲＡＭ、１２１３…ＶＲＡＭ、１２１４…ＶＲＡＭ、１２２…アービター、１２３…映像入力部、１２４…書き込みＩＦ、１２５…読み出しアドレス生成部、１２６…読み出しＩＦ、１２６１…キャッシュ、１２７…補正部、１２８…映像出力部、１２９…オフセットテーブル、１３…投写ユニット、１３１…光変調器、１４…記憶部、１５…ＩＦ部、１６…操作パネル、１８１…表示領域、１８２…長方形、１８２１〜１８２４…頂点、１８３…図形、１８３１〜１８３４…点、１８４…図形、１８４１〜１８４４…点、１８５…図形、１８５１〜１８５４…点
【図１】
2015228056.tif 000003
【図２】
2015228056.tif 000004
【図３】
2015228056.tif 000005
【図４】
2015228056.tif 000006
【図５】
2015228056.tif 000007
【図６】
2015228056.tif 000008
【図７】
2015228056.tif 000009
【図８】
2015228056.tif 000010
【図９】
2015228056.tif 000011
【図１０】
2015228056.tif 000012
【図１１】
2015228056.tif 000013
【図１２】
2015228056.tif 000014
【図１３】
2015228056.tif 000015
【図１４】
2015228056.tif 000016
【図１５】
2015228056.tif 000017
【図１６】
2015228056.tif 000018
【図１７】
2015228056.tif 000019
【図１８】
2015228056.tif 000020
【図１９】
2015228056.tif 000021
【図２０】
2015228056.tif 000022