(57)【要約】      （修正有）【課題】歪み補正用のＬＵＴを効率的に圧縮して情報量を低減させる装置及びプログラムを提供する。【解決手段】画像処理装置は，画像データの歪みを補正する画像補正手段１０を備える。画像補正手段は，補正値記憶部１１，ＬＵＴ展開部１２，及び座標変換部１３を有する。補正値記憶部は，オフセットコードテーブル１１ａと圧縮ＬＵＴ１１ｂを記憶している。オフセットコードテーブルは，歪み補正前の座標値と歪み補正後の座標値とのオフセット値を，所定のオフセットコードと対応付ける。圧縮ＬＵＴは，オフセットコードを，当該オフセットコードに対応するオフセット値を参照して圧縮された座標値と対応付ける。ＬＵＴ展開部は，オフセットコードテーブルと圧縮ＬＵＴとに基づいて，歪み補正前の座標値と歪み補正後の座標値とを対応付けた補正用ＬＵＴ１１ｃを生成する。座標変換部は，補正用ＬＵＴに基づいて，画像データの座標値を補正する。【選択図】図１
2017016511.tif 000002
【特許請求の範囲】
【請求項１】
画像データの歪みを補正する画像補正手段（１０）を備える画像処理装置であって，
前記画像補正手段（１０）は，
補正値記憶部（１１）と，ルックアップテーブル（ＬＵＴ）展開部（１２）と，座標変換部（１３）とを有するものであり，
前記補正値記憶部（１１）は，
歪み補正前の座標値と歪み補正後の座標値とのオフセット値を，所定のオフセットコードと対応付けたオフセットコードテーブル（１１ａ）と，
前記オフセットコードを，当該オフセットコードに対応するオフセット値を参照して圧縮された座標値と対応付けた圧縮ＬＵＴ（１１ｂ）と，を記憶しており，
前記ＬＵＴ展開部（１２）は，
前記オフセットコードテーブル（１１ａ）と前記圧縮ＬＵＴ（１１ｂ）とに基づいて，歪み補正前の座標値と歪み補正後の座標値とを対応付けた補正用ＬＵＴ（１１ｃ）を生成し，
前記座標変換部（１３）は，
前記補正用ＬＵＴ（１１ｃ）に基づいて，前記画像データの座標値を補正する
画像処理装置。
【請求項２】
前記オフセットコードテーブル（１１ａ）は，歪み補正前の座標値の整数部と歪み補正後の座標値の整数部とのオフセット値を，所定のオフセットコードと対応付けたものであり，
前記圧縮ＬＵＴ（１１ｂ）は，前記オフセットコードを，当該オフセットコードに対応するオフセット値を減算した座標値の小数部と対応付けたものである
請求項１に記載の画像処理装置。
【請求項３】
前記圧縮ＬＵＴ（１１ｂ）には，前記圧縮された座標値及び前記オフセットコードに加えて，当該座標値における画像処理に利用される処理情報を指示する拡張コードが対応付けられている
請求項１又は請求項２に記載の画像処理装置。
【請求項４】
歪み補正後の画像データが上下対称又は左右対称である場合，前記補正用ＬＵＴ（１１ｃ）は，対称軸を境界とした上下一方のみ又は左右一方のみの座標値を保持する
請求項１から請求項３のいずれかに記載の画像処理装置。
【請求項５】
前記座標変換部（１３）は，前記補正用ＬＵＴ（１１ｃ）に保持されている歪み補正後の座標値と，前記画像データの座標値に対して所定の歪み補正式を適用して求められた座標値とに基づいて，画像データの座標値を補正する
請求項１から請求項４のいずれかに記載の画像処理装置。
【請求項６】
コンピュータを，画像データの歪みを補正する画像補正手段（１０）を備える画像処理装置として機能させるためのプログラムであって，
前記画像補正手段（１０）は，
補正値記憶部（１１）と，ＬＵＴ展開部（１２）と，座標変換部（１３）とを有するものであり，
前記補正値記憶部（１１）は，
歪み補正前の座標値と歪み補正後の座標値とのオフセット値を，所定のオフセットコードと対応付けたオフセットコードテーブル（１１ａ）と，
前記オフセットコードを，当該オフセットコードに対応するオフセット値を参照して圧縮された座標値と対応付けた圧縮ＬＵＴ（１１ｂ）と，を記憶しており，
前記ＬＵＴ展開部（１２）は，
前記オフセットコードテーブル（１１ａ）と前記圧縮ＬＵＴ（１１ｂ）とに基づいて，歪み補正前の座標値と歪み補正後の座標値とを対応付けた補正用ＬＵＴ（１１ｃ）を生成し，
前記座標変換部（１３）は，
前記補正用ＬＵＴ（１１ｃ）に基づいて，前記画像データの座標値を補正する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，画像データの歪みを補正するための機能を有する画像処理装置及びプログラムに関する。具体的に説明すると，本発明は，ピクセル単位で歪み補正を行うためのＬＵＴ（Look Up Table：ルックアップテーブル）を予め作成しておき，画像データが入力されたときにこのＬＵＴを参照して画像の歪み補正処理を行う装置及びプログラムに関するものである。
【背景技術】
【０００２】
一般的な光学レンズには収差が存在するため，光学レンズによって取得された画像データ（写真及び動画）には，その光学レンズの光学的形状に応じた歪みが発生することが知られている。光学的形状に応じた歪みとしては，糸巻形状や樽形状の歪みが知られている。また，光学レンズには個体差があり，光学レンズ毎に画像データに生じる歪みの形状が異なることがある。このため，光学レンズによって取得された画像データをフラットなディスプレイに表示する場合には，歪みを持つ画像データを，本来のフラットな形状に戻す処理を行う必要がある。他方で，歪みを持ったディスプレイ，例えば車載型のカーナビゲーション装置に用いられる透過ヘッドアップディスプレイに対して，ＧＰＵ（Graphics Processing Unit）によって生成された歪みのない画像データ（コンピュータグラフィックス）を表示させる場合もある。この場合には，ＧＰＵで生成された画像データに対して，そのディスプレイに応じた歪みを与える補正処理を行うことで，歪みをもったディスプレイであっても，使用者に歪みを感じさせないように画像を表示することが可能となる。このように，歪みを持たない画像データを，歪ませる補正処理を行うこともある。
【０００３】
ここで，従来から，画像データの歪みを補正する処理において，ＬＵＴを利用することが知られている（特許文献１）。歪み補正用のＬＵＴは，ピクセル毎に，歪み補正前のデータの座標値と歪み補正後の座標値とを対応付けて記憶している。このため，歪みが発生している領域内のピクセルを処理するときに，このＬＵＴを参照すれば，量産時に発生するレンズ歪みの個体差を１ピクセル単位で補正することができる。このようにして，ＬＵＴを設定することで，光学レンズ等の光学的形状に応じた画像の歪みを補正し，歪みが解消された座標値を得ることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１７９５１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら，ＬＵＴを利用して歪み補正を行う場合，ピクセルごとに補正後の座標値を定義する必要がある。従って，歪み補正用のＬＵＴは，その情報量（データ量）が大きくなり，メモリの記憶空間を圧迫するという問題があった。また，ＬＵＴの情報量が大きいと，そのＬＵＴを読み出すのに時間が掛かるため，画像処理装置全体において処理の遅延や性能の低下を招くおそれがある。そこで，本発明は，歪み補正用のＬＵＴを効率的に圧縮して情報量の低減を図り，ＬＵＴの読み出し性能や，画像処理装置全体の処理速度及び処理性能を向上させることを目的としている。
【課題を解決するための手段】
【０００６】
本発明の発明者らは，従来発明の問題点を解決する手段について鋭意検討した結果，歪み補正前後の座標値のオフセット値（差分値）を，所定のオフセットコードと対応付けておき，このオフセットコードを利用して歪み補正用のＬＵＴを圧縮するという知見を得た。このようにＬＵＴを圧縮することで，ＬＵＴの情報量を効率的に低減させることができるため，画像処理装置の処理速度及び処理性能を向上させることが可能である。また，ＬＵＴを圧縮することで，その圧縮によって生じた余剰空間に，その他のピクセルごとの処理情報（例えば，切り出しに関わるマスク情報や，画像ＩＤ，輝度調整用の情報）を格納することもできるようになる。そして，本発明者らは，上記知見に基づけば，従来発明の問題を解決できることに想到し，本発明を完成させた。具体的に説明すると，本発明は以下の構成を有する。
【０００７】
本発明の第１の側面は，画像処理装置に関する。
本発明に係る画像処理装置は，画像データの歪みを補正する画像補正手段１０を備える。
画像補正手段１０は，補正値記憶部１１と，ＬＵＴ展開部１２と，座標変換部１３とを有する。
補正値記憶部１１は，オフセットコードテーブル１１ａと圧縮ＬＵＴ１１ｂを記憶している。オフセットコードテーブル１１ａは，歪み補正前の座標値と歪み補正後の座標値とのオフセット値を，所定のオフセットコードと対応付けている。圧縮ＬＵＴ１１ｂは，オフセットコードを，当該オフセットコードに対応するオフセット値を参照して圧縮された座標値と対応付けている。つまり，オフセットコードを利用することにより，圧縮ＬＵＴ１１ｂ内の圧縮された座標値は，通常の歪み補正後の座標値と比較して，その情報量が低減されたものとなっている。
ＬＵＴ展開部１２は，オフセットコードテーブル１１ａと圧縮ＬＵＴ１１ｂとに基づいて，歪み補正前の座標値と歪み補正後の座標値とを対応付けた補正用ＬＵＴ１１ｃを生成する。つまり，補正用ＬＵＴ１１ｃは，オフセットコードに基づいて圧縮されて，圧縮ＬＵＴ１１ｂとなっている。このため，ＬＵＴ展開部１２は，必要なときに，圧縮ＬＵＴ１１ｂをオフセットコードに基づいて解凍し，補正用ＬＵＴ１１ｃを生成する。このような意味において，圧縮ＬＵＴ１１ｂは可逆圧縮されたものであるといえる。
座標変換部１３は，補正用ＬＵＴ１１ｃに基づいて，画像データの座標値を補正する。
【０００８】
上記構成のように，オフセットコードを利用して補正用のＬＵＴを圧縮してメモリ（補正値記憶部１１）に記憶しておくことで，メモリ内の記憶空間を有効活用することができる。ＬＵＴを圧縮することで生じた余剰空間にその他のピクセル単位の処理情報を格納することもできる。また，ＬＵＴの情報量を軽減させることで，ＬＵＴの読み出し性能が向上し，ひいては，画像処理装置全体の処理速度及び処理性能を向上させることができる。
【０００９】
本発明の画像処理装置において，オフセットコードテーブル１１ａは，歪み補正前の座標値の整数部と歪み補正後の座標値の整数部とのオフセット値を，所定のオフセットコードと対応付けたものであってもよい。また，圧縮ＬＵＴ１１ｂは，オフセットコードを，当該オフセットコードに対応するオフセット値を減算した座標値の小数部と対応付けたものであってもよい。これにより，画像の座標値は，その整数部がオフセットコードによって示され，その小数部のみが圧縮ＬＵＴ１１ｂに保持される。このように，小数点を境界として整数部と小数部に分け，その符号化の方式（圧縮方式）を変えることで，オフセットコードを小さい情報量で定義できる。また，圧縮ＬＵＴ１１ｂを解凍して補正用ＬＵＴ１１ｃを生成しやすくなる。
【００１０】
本発明の画像処理装置において，圧縮ＬＵＴ１１ｂには，圧縮された座標値及びオフセットコードに加えて，当該座標値における画像処理に利用される処理情報を指示する拡張コードが対応付けられていることが好ましい。本発明によれば，少ない情報量で圧縮ＬＵＴ１１ｂを構築できるため，情報量が圧縮された分メモリ空間内に他の処理情報を格納することが可能となる。
【００１１】
本発明の画像処理装置において，歪み補正後の画像データが上下対称又は左右対称である場合に，補正用ＬＵＴ１１ｃは，対称軸を境界とした上下一方のみ又は左右一方のみの座標値を保持することとしてもよい。上下又は左右の一方の座標値を保持しておき，他方の座標値を簡単な演算によって導くようにすることで，メモリに記憶する情報量を半分に低減させることができる。
【００１２】
本発明において，座標変換部１３は，補正用ＬＵＴ１１ｃに保持されている歪み補正後の座標値と，画像データの座標値に対して所定の歪み補正式を適用して求められた座標値とに基づいて，画像データの座標値を補正することとしてもよい。このように，ＬＵＴ値と歪み補正式の両方を利用して座標値を補正することで，複雑な演算であっても高速に処理することができる。また，歪み補正の精度を高めることができる。
【００１３】
本発明の第２の側面は，画像データの歪み補正用のコンピュータプログラムに関する。本発明に係るプログラムは，汎用的なコンピュータの一部の機能を，上記した第１の側面に係る画像処理装置として機能させるものである。
【発明の効果】
【００１４】
本発明によれば，歪み補正用のＬＵＴを効率的に圧縮して，その情報量を低減させることができる。また，ＬＵＴの情報量を低減させることで，画像処理装置によるＬＵＴの読み出し性能や，画像処理装置全体の処理速度及び処理性能を向上させることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は，本発明の係る画像処理装置の構成例を示したブロック図である。
【図２】図２は，補正用ＬＵＴの例を示している。
【図３】図３は，オフセットコードテーブルの例を示している。
【図４】図４は，圧縮ＬＵＴの例及び圧縮ビット構成の例を示している。
【図５】図５は，制御部による処理の例を示したフロー図である。
【図６】図６は，拡張コードを含む圧縮ビットの構成例を示している。
【図７】図７は，画像データが左右対称である場合の補正用ＬＵＴの圧縮例を示している。
【発明を実施するための形態】
【００１６】
以下，図面を用いて本発明を実施するための形態について説明する。本発明は，以下に説明する形態に限定されるものではなく，以下の形態から当業者が自明な範囲で適宜変更したものも含む。
【００１７】
本発明は，画像データの歪みを補正するための機能を有する画像処理装置及びプログラムに関する。本願明細書において，画像データの歪みを補正するための処理には，歪みのないフラットなディプレイに合わせて，歪みを持つ画像データの歪みを解消する処理と，歪んだディプレイに合わせて，歪みを持たない画像データを歪ませる処理の両方が含まれる。このため，“歪み補正”や“補正”という処理は，表示画像とディスプレイの形状を適合させるための画像処理であるということができる。
【００１８】
図１は，本発明に係る画像処理装置１００の概要を示したブロック図である。本発明の画像処理装置１００は，画像データの歪みを補正するため機能を有するものである。図１に示されるように，画像処理装置１００は，画像補正手段１０，画像データ入力部２０，ラインバッファ３０，フィルタ部４０，画像出力部５０，及び制御部６０を備えている。制御部６０は，画像処理装置１００を構成する各要素の全体的な制御を行う。また，ラインバッファ３０は，画像処理装置１００の外部に設けられた外部メモリで代用することもできる。
【００１９】
図１に示されるように，カメラや外部メモリなどの入力装置２００から，画像処理装置１００に画像データが入力される。この画像データは，画像の歪みを含むものである。例えば，一般的な光学レンズには収差が存在するため，カメラから入力される画像データ（写真及び動画）には，その光学レンズの光学的形状に応じた歪みが発生している。光学的形状に応じた歪みとしては，糸巻形状や樽形状の歪みが知られている。また，逆に，歪みを持ったディスプレイ，例えば透過ヘッドアップディスプレイに対して，ＧＰＵによって生成された歪みのない画像データ（コンピュータグラフィックス）を表示させる場合もある。このように，光学レンズから得られた歪みが残ったままの画像を，平面ディスプレイなどの出力表示３００に出力する場合や，ＧＰＵで得られた歪みのない画像データを，歪みを持つディスプレイなどの出力装置３００に出力すると，その歪みに応じて画像が伸縮して映し出されることとなる。そこで，本発明の画像処理装置１００は，このような歪みを含む画像データを本来のフラットな形状に戻す補正処理や，逆にフラットな画像データを歪ませる補正処理を行う機能を持つ。
【００２０】
画像処理装置１００は，入力装置２００から入力された画像データを，画像データ入力部２０で受け取る。画像データ入力部２０は，受け取った画像データを，装置内部のラインバッファ３０に一時的に記憶する。また，画像データ入力部２０は，受け取った画像データを，装置外部の外部メモリ３０に展開してもよい。ラインバッファ３０（又は外部メモリ３０）に記憶された画像データは，画像補正手段１０（特に座標変換部１３）によって適宜読み出されて，ピクセル単位での歪みの補正が行われる。なお，画像補正手段１０は，歪み補正処理が完了したピクセルを一時的にラインバッファ３０に書き込むこととしてもよい。このように，ラインバッファ３０は，画像補正手段１０が歪み補正処理を行う際にデータの読み書きを行う作業用メモリとして利用される。画像補正手段１０の具体的構成については後述する。
【００２１】
画像補正手段１０によって歪みの補正処理が行われた画像データは，フィルタ部４０へ送出される。フィルタ部４０では，補正後の画像データの座標値を参照しながら，テクスチャマッピングで行われるフィルタ手法と同様に，ピクセルの補間処理を行う。例えば，フィルタ部４０は，ピクセルの補間処理として，色値の補間や，透明度の補間，ぼかし値の補間などを行えばよい。ピクセルの補間処理で用いられるフィルタ手法としては，例えば，バイリニアフィルタリングや，トリリニアフィルタリング，異方性フィルタリング，あるいはバイキュービックフィルタリングが挙げられる。その他公知のフィルタ手法を採用することも可能である。
【００２２】
フィルタ部４０での補間処理が完了した画像データは，画像出力部５０を介して，外部のメモリやディスプレイなどの出力装置３００へと転送される。この出力装置３００に転送される画像データは，ディスプレイ等の形状に合せて歪みの補正処理が完了したものである。歪み補正後の画像データは，そのまま直接ディスプレイに映し出すこともできるし，外部メモリに格納してその後の別処理に利用することも可能である。
【００２３】
なお，本発明の画像処理装置１００において，フィルタ部４０は任意の構成であり，省略可能である。つまり，画像補正手段１０は，歪み補正を行った画像データを，外部メモリやディスプレイ等の出力装置３００に直接転送してもよい。
【００２４】
続いて，画像補正手段１０について詳しく説明する。図１に示されるように，画像補正手段１０は，補正値記憶部１１と，ＬＵＴ展開部１２と，座標変換部１３とを有している。補正値記憶部１１には，オフセットコードテーブル１１ａと圧縮ＬＵＴ１１ｂとが記憶されている。ＬＵＴ展開部１２は，必要に応じて，圧縮ＬＵＴ１１ｂを補正値記憶部１１から読み出し，オフセットコードテーブル１１ａに記憶されているオフセットコードに基づいて，この圧縮ＬＵＴ１１ｂを解凍し，補正用ＬＵＴ１１ｃを生成する。圧縮ＬＵＴ１１ｂと補正用ＬＵＴ１１ｃは実質的に同一の情報を記憶しており，互いに可逆的な関係にある。ただし，圧縮ＬＵＴ１１ｂの情報量は，補正用ＬＵＴ１１ｃの情報量よりも小さくなっている。座標変換部１３は，ラインバッファ３０等に格納されている画像データを読み出し，ＬＵＴ展開部１２によって生成された補正用ＬＵＴ１１ｃに基づいて，ピクセル単位で歪み補正のための座標変換処理を行う。
【００２５】
図２は，歪み補正のための座標変換処理に利用される補正用ＬＵＴの概要を示している。図２の上図では，入力画像と歪み後の画像を示しており，図２の下図では，補正用ＬＵＴの例を示している。図２に示されているように，入力画像におけるＰ０点の座標値（ｘ０，ｙ０）を，歪み後の画像におけるＰ０’点の（ｘ０’，ｙ０’）座標値に変換する必要がある。従って，このような変換前後のピクセルの座標情報を，補正用ＬＵＴに対応づけて記録しておくことで，この補正用ＬＵＴを入力画像から歪み画像を作成する際に用いることができる。図２の下図は，補正用ＬＵＴ（圧縮前）の情報である。補正用ＬＵＴには，歪み補正前の座標値と歪み補正後の座標値とが対応付けて記録されている。この補正用ＬＵＴのように変換前後の座標一覧を予め作成しておくことで，この情報を用いて歪み後画像を瞬時に作成することができる。ただし，このような補正用ＬＵＴは，ピクセル毎に，変換前の座標値と変換後の座標値を記録しておく必要があり，情報量（データ量）が大きいものである。このような補正用ＬＵＴをそのままの状態でメモリに格納しておくと，必要に応じて補正用ＬＵＴをメモリから読み出す際に時間が掛かり，また貴重なメモリ空間を圧迫する。そこで，本発明は，補正用ＬＵＴを圧縮した圧縮ＬＵＴを生成して，情報量の小さい圧縮ＬＵＴをメモリに格納しておく。そして，必要に応じて圧縮ＬＵＴを解凍して補正用ＬＵＴをメモリ上に展開し，この補正用ＬＵＴを画像データの歪み補正処理に利用する。
【００２６】
図３は，補正用ＬＵＴの圧縮に利用するオフセットコードテーブルの例を示している。また，図４は，補正用ＬＵＴを圧縮した圧縮ＬＵＴと，その圧縮ビットの構成例を示している。図３及び図４では，補正用ＬＵＴの１ピクセル当たりの情報量を，圧縮ＬＵＴにおいて１６ビット／ピクセルの情報量に圧縮する例を示している。
【００２７】
図３に示されるように，オフセットコードテーブルは，歪み補正前の座標値と歪み補正後の座標値とのオフセット値（差分値）を，所定のオフセットコードと対応付けて記録している。例えば，本例において，オフセットコードテーブルの内容部分には，Ｘ座標とＹ座標のそれぞれについて，変換前後の座標の整数部の値を比較し，その値のオフセット値（差分値）が情報として記録されている。また，オフセットコードテーブルにおいては，各オフセット値に，所定のオフセットコードが割り当てられている。例えば，オフセットコードは，４ｂｉｔの情報として設定されている。ただし，オフセットコードのサイズは，４ｂｉｔに限定されず，適宜最適なサイズに調整できる。また，オフセットコードテーブルの内容部分には，オフセットコードと対応付けて，Ｘ座標，Ｙ座標，又はその両方を無効にするための情報を記録することもできる。
【００２８】
図４に示されるように，補正用ＬＵＴは，図３に示されたオフセットコードテーブルの値を利用して圧縮され，圧縮ＬＵＴへと変換される。つまり，圧縮ＬＵＴは，オフセットコードを，当該オフセットコードに対応するオフセット値を参照して圧縮された座標値と対応付けて記録した構成となっている。具体的に説明すると，本実施形態においては，図３に示したオフセットコードテーブルにおいて，歪み補正前の座標値の整数部と歪み補正後の座標値の整数部とのオフセット値に対して，所定のオフセットコードが割り当てられている。このため，図４に示した圧縮ＬＵＴでは，オフセットコードが，当該オフセットコードに対応するオフセット値を減算した座標値の小数部（ｘ’ｆｒａｃ，ｙ’ｆｒａｃ）と対応付けられている。なお，図に示した“ｆｒａｃ”は，小数部（fraction part）を意味している。
【００２９】
補正用ＬＵＴから圧縮ＬＵＴへの変換方法について，図２から図４を参照してさらに具体的に説明する。
【００３０】
［１］  圧縮前の補正用ＬＵＴを見ると，座標値（ｘ，ｙ）＝（０，０）を座標値（ｘ’，ｙ’）＝（０，０）に変換する部分において，整数部のオフセット値は（＋０，＋０）である。（＋０，＋０）のオフセット値は，オフセットコードテーブルにおいて，オフセットコード＝３と定義されている。また，（ｘ，ｙ）＝（０，０）から（ｘ’，ｙ’）＝（０，０）の変換において，小数点以下の値に差は生じていない。従って，圧縮ＬＵＴにおいては，（ｘ’ｆｒａｃ，ｙ’ｆｒａｃ，オフセットコード）＝（０，０，３）として記録される。
【００３１】
［２］  圧縮前の補正用ＬＵＴを見ると，座標値（ｘ，ｙ）＝（１，０）を座標値（ｘ’，ｙ’）＝（１．２，０）に変換する部分において，整数部のオフセット値は（＋０，＋０）である。（＋０，＋０）のオフセット値は，オフセットコードテーブルにおいて，オフセットコード＝３と定義されている。また，（ｘ，ｙ）＝（１，０）から（ｘ’，ｙ’）＝（１．２，０）の変換において，小数点以下の値はｘ座標値にのみ０．２の差が生じており，ｙ座標値には生じていない。従って，圧縮ＬＵＴにおいては，（ｘ’ｆｒａｃ，ｙ’ｆｒａｃ，オフセットコード）＝（０．２，０，３）として記録される。
【００３２】
［３］圧縮前の補正用ＬＵＴを見ると，座標値（ｘ，ｙ）＝（２，０）を座標値（ｘ’，ｙ’）＝（３．０，１．１）に変換する部分において，整数部のオフセット値は（＋１，＋１）である。（＋１，＋１）のオフセット値は，オフセットコードテーブルにおいて，オフセットコード＝１１と定義されている。また，（ｘ，ｙ）＝（２，０）から（ｘ’，ｙ’）＝（３．０，１．１）の変換において，小数点以下の値はｙ座標値にのみ０．１の差が生じており，ｘ座標値には生じていない。従って，圧縮ＬＵＴにおいては，（ｘ’ｆｒａｃ，ｙ’ｆｒａｃ，オフセットコード）＝（０．０，０．１，１１）として記録される。
【００３３】
上記のように，補正用ＬＵＴは，オフセットコードテーブルの値を利用して圧縮されて，圧縮ＬＵＴへと変換される。補正用ＬＵＴでは，変換前と変換後のそれぞれにについて，ｘ座標とｙ座標の座標値が，整数部と小数部を含んだまま記録されている。これに対して，圧縮ＬＵＴでは，変換前後の座標値の整数部の差が４ｂｉｔのオフセットコード値で表され，変換後のｘ座標とｙ座標の小数部の値のみが，当該オフセットコード値と対応付けて記録されている。従って，圧縮ＬＵＴの情報量は，補正用ＬＵＴの情報量と比較して，圧倒的に小さくなっているといえる。
【００３４】
また，図４には，圧縮ＬＵＴにおける圧縮ビットの構成例が示されている。圧縮ビットは，例えば，０〜５までの６ｂｉｔ（下位ビット）を，変換後のｘ座標の小数部のデータとし，６〜１１までの６ｂｉｔ（下位ビット）を，変換後のｙ座標の小数部のデータとし，１２〜１５までの４ｂｉｔ（上位ビット）を，オフセットコード値としている。このように，合計１６ｂｉｔのデータとして構成できる。つまり，圧縮ＬＵＴにおいては，歪み補正に利用する１ピクセル当たりの情報量を，１６ビットに圧縮することができる。このように歪み補正に利用するＬＵＴの情報量を圧縮することで，その圧縮によって生じたメモリの余剰空間には，他の処理で利用する情報（例えば，切り出しに関わるマスク情報や，画像ＩＤ，輝度調整用の情報）を格納することが可能となる。
【００３５】
なお，本実施形態では，一例として，１６ビット／ピクセルの情報例を示した。ただし，圧縮ビットを構成する各ビットフィールド（ｘ座標，ｙ座標，オフセットコード）のサイズや，圧縮ビット全体のサイズについては，アプリケーションごとに最適なサイズの選択を行うことが可能である。
【００３６】
図１に示されるように，上記のようにして作成された圧縮ＬＵＴ１１ｂは，オフセットコードテーブル１１ａとともに，補正値記憶部１１に記憶される。図１において，補正値記憶部１１は，１つの記憶装置（メモリ）によって構築されているように描画されているが，補正値記憶部１１は，複数の記憶装置（メモリ）によって構築されていてもよい。このため，オフセットコードテーブル１１ａと圧縮ＬＵＴ１１ｂは必ずしも同じ記憶装置内に格納されている必要はなく，物理的には別々の記憶装置内に格納されていてもよい。
【００３７】
ＬＵＴ展開部１２は，補正値記憶部１１に記憶されている圧縮ＬＵＴ１１ｂ及びオフセットコードテーブル１１ａに基づいて，補正用ＬＵＴ１１ｃする。ＬＵＴ展開部１２は，補正用ＬＵＴ１１ｃを補正値記憶部１１（メモリ）に展開してもよいし，その他の内部メモリに展開してもよいし，外部メモリに展開してもよい。また，ＬＵＴ展開部１２は，補正用ＬＵＴ１１ｃをラインバッファ又は外部メモリ３０に展開することもできる。具体的に説明すると，圧縮ＬＵＴ１１ｂには，上述したとおり，１ピクセルごとに，ｘ座標の小数部，ｙ座標の小数部，及びオフセットコードが対応付けて記録されている。ＬＵＴ展開部１２は，圧縮ＬＵＴ１１ｂ内のオフセットコードに基づいて，オフセットコードテーブル１１ａを参照し，当該オフセットコードに対応付けられている座標のオフセット値（座標の整数部）を読み出す。そして，ＬＵＴ展開部１２は，オフセットコードテーブル１１ａから読み出した座標のオフセット値（整数部）を，ｘ座標の小数部とｙ座標の小数部に加算する演算処理を行う。これにより，圧縮ＬＵＴ１１ｂを，オフセットコードテーブル１１ａの値に基づいて解凍し，補正用ＬＵＴ１１ｃを生成することができる。
【００３８】
必要な画像入力が終わった時点で，制御部６０から歪み補正処理のスタートが指示され，ＬＵＴ展開部１２は，補正値記憶部１１から圧縮ＬＵＴ１１ｂを読み出してこれを解凍し，補正用ＬＵＴ１１ｃを展開するとともに，この補正用ＬＵＴ１１ｃの値を座標変換部１３に入力する。座標変換部１３は，ＬＵＴ展開部１２によって生成された補正用ＬＵＴ１１ｃを参照して，ラインバッファ３０（又は外部メモリ）に格納されている画像データに対して，１ピクセル単位で，歪み補正処理を実行する。つまり，座標変換部１３は，補正用ＬＵＴ１１ｃを参照して，補正前の入力画像の各ピクセルの座標値を，歪み補正後の座標値に変換する演算を行う。座標変換部１３は，各ピクセルについて歪み補正処理が完了した段階で，その補正後の座標の情報と共にピクセルの情報をフィルタ部４０に送出する。
【００３９】
また，座標変換部１３は，画像データの歪み補正処理において，歪み補正式の演算を行うこともできる。具体的には，座標変換部１３では，下記（１）（２）の式の演算を行う。
（１）ｘｄ＝歪み補正式で求められたｘ値＋展開された補正用ＬＵＴのｘ値
（２）ｙｄ＝歪み補正式で求められたｙ値＋展開された補正用ＬＵＴのｙ値
ここでの歪み補正式としては，公知の補正式を用いることができる。例えば，歪み補正式としては，公知のBrown-Conradyモデルを利用すればよい。より具体的に説明すると，座標変換部１３には，下記の数式を演算するためのアルゴリズムが実装される。
【００４０】
【数１】
2017016511.tif 000003
【００４１】
上記の式に基づく演算が終了すると，座標変換部１３は，補正後の座標の情報とともに，ピクセルの情報をフィルタ部４０に入力する。フィルタ部４０では，上述したとおり，補正後の座標値を参照しながら，テクスチャマッピングで行われるフィルタ手法と同様にバイリニアフィルタなどによるピクセルの補間処理を行う。その後，フィルタ部４０で演算された結果は，画像出力部５０を通して，ディスプレイ又は出力画像データを格納するためのメモリに格納される。また，同様の演算を画像出力解像度分行い，歪み後の画像が生成される。
【００４２】
なお，本願の図２及び図４に示した例では，補正用ＬＵＴにおいて，変換前の座標値に歪み補正式の適用していないが，この変換前の座標値に，上記歪み補正式を組み合わせることも可能である。その場合，補正用ＬＵＴにおける変換前の座標値として，上記歪み補正式を適用した（ｘｄ，ｙｄ）の値が格納され，変換後の座標値として，（ｘｄ’，ｙｄ’）が格納されることとなり。このような場合でも，その後の圧縮ＬＵＴの生成やこれの解凍処理は，上述したものと同様に行うことができる。
【００４３】
続いて，図５を参照して，画像処理装置１００における制御部６０の処理フローについて説明する。制御部６０は，まず，画像データの入力開始前に，圧縮ＬＵＴを作成する前処理を行う（ステップＳ１）。画像処理装置１００にカメラ入力デバイス等の入力装置２００が接続されると，制御部６０は，入力装置２００が備える光学レンズの歪みを，チェッカボードによる画像処理や３Ｄ計測によって検出し，歪みマップを作成する。光学レンズの歪みマップとは，歪みのないフラットな画像に対して，光学レンズから入力された画像がどの領域でどの程度歪みを生じているのかを表したマップである。他方，画像処理装置１００に透過型のヘッドアップディスプレイ等の出力装置３００が接続されると，制御部６０は，ヘッドアップディスプレイ上の歪みを検出し，ディスプレイの歪みマップを作成してもよい。ディスプレイの歪みマップとは，歪みのないフラットな画像に対して，ヘッドアップディスプレイの表示画面がどの領域でどの程度歪みを生じているのかを表したマップである。このような意味において，画像処理装置１００の制御部６０は，入力装置２００や出力装置３００の歪み検出部を有するといえる。また，制御部６０は，歪みマップに基づいて，圧縮前の補正用ＬＵＴを作成する。また，補正値記憶部１１には，上述したオフセットコードテーブルが既に作成されて記憶されている。そこで，制御部６０は，既成のオフセットコードテーブルの値に基づいて，補正用ＬＵＴを圧縮した圧縮ＬＵＴを作成し，オフセットコードテーブルと共に補正値記憶部１１に記憶する。補正用ＬＵＴから圧縮ＬＵＴを作成する方法は，上述したとおりである。
【００４４】
その後，画像処理装置１００に対して，画像データの入力が開始される（ステップＳ２）。画像データが入力されると処理に必要なピクセル画像を準備した後に，出力ピクセル分のループに入る。ループ内では，まず，入力されたピクセルの座標に応じて，対応する座標変換後の値を圧縮ＬＵＴから補正用ＬＵＴに展開し，この補正用ＬＵＴに基づいて座標変換を実施する（ステップ３）。その後，ラインバッファ又は外部メモリ３０から必要な画像データを読み込み，出力ピクセル分を準備し，フィルタ部４０に入力を行う（ステップＳ４）。その後，フィルタ部４０でバイリニアフィルタリング等のフィルタ処理が行われた後，このフィルタ処理後の画像を画像出力部５０に送り，この画像出力部５０を通じて，歪み補正後の画像データを外部メモリに格納したり，ディスプレイに表示したりする処理を行う（ステップＳ５）。同様の処理を画像出力解像度分ループさせて行い，歪み後の画像を生成する。
【００４５】
続いて，図６を参照して，圧縮テーブルの拡張内容の例について説明する。図４を用いて説明したように，圧縮テーブルを構成する１ピクセル当たりの圧縮ビットは，０〜５までの下位６ｂｉｔに変換後のｘ座標の小数部を割り当て，６〜１１までの下位６ｂｉｔに変換後のｙ座標の小数部を割り当て，１２〜１５までの上位４ｂｉｔにオフセットコード値を割り当てて，合計１６ｂｉｔで構成されている。このように圧縮ビットは，情報量の小さいデータであるあるため，これを格納するメモリには余剰空間が生じる。従って，圧縮ビットを拡張して，その他の有用な情報を格納することができる。
【００４６】
例えば，図６の上図に示されるように，圧縮ビットを０〜３１の３２ｂｉｔのデータに拡張し，１６〜３１までの１６ｂｉｔに拡張コードを割り当てる。拡張コードは，ピクセルごとの画像処理に利用される処理情報を指示するものであり，拡張コードの定義例は図６の下図に示されている。例えば，拡張コードによって指示される処理情報としては，切り出しに関わるマスク情報（１ピクセルごとに出力の有無を制御可能）や，画像ＩＤ（ステッチング用。複数入力画像を組み合わせて表示させる場合，領域ごとにどの入力画像を使うか選択可能），あるいは輝度調整用の情報（車載用途などで時間帯やライトのＯＮ／ＯＦＦの状況に応じ，色味や輝度を変えることで可視性をあげることが可能）などを挙げることができる。例えば，図６の下図に示されるように，１６〜１９ｂｉｔに切り出しマスク（透過度設定）の処理情報を割り当て，２０〜２３ｂｉｔに画像ＩＤを割り当て，２４〜３１に輝度オフセットを割り当てることができる。このように，ピクセル単位での処理に有用な処理情報を圧縮ビットの拡張部分に割り当てることで，画像描画処理の効率化及び高速化を実現できる。
【００４７】
続いて，図７を参照して，補正用ＬＵＴの他の圧縮方法について説明する。図７には，歪み補正後の画像の形状が左右対称である場合に，この補正用ＬＵＴの情報量を半分にすることができる例が示されている。図７に示されるように，補正後の画像形状が左右対称である場合，例えば，補正用ＬＵＴは，変換後画像の左半分のみ（ｘ＝０から画像中心（ｗｉｄｔｈ／２）まで）作成しておけば，変換後画像の右半分は省略できる。つまり，変換後の右半分については，（ｗｉｄｔｈ−ｘ）という単純な演算を行うことで，その演算値を右半分のｘ値として使用することができる。なお，図７では，変換後画像が左右対称である場合を説明したが，変換後画像が上下対称である場合も同じようにして，補正用ＬＵＴの情報量を半分にすることができる。
【００４８】
以上，本願明細書では，本発明の内容を表現するために，図面を参照しながら本発明の実施形態の説明を行った。ただし，本発明は，上記実施形態に限定されるものではなく，本願明細書に記載された事項に基づいて当業者が自明な変更形態や改良形態を包含するものである。
【産業上の利用可能性】
【００４９】
本発明は，画像データの歪みを補正するための機能を有する画像処理装置及びプログラムに関する。本発明に係る装置及びプログラムは，画像処理のためのコンピュータや，デジタルカメラ，あるいはヘッドアップディスプレイ等に適用することができる。従って，本発明はコンピュータ関連産業や，ゲーム関連産業，医療関連産業，車載関連産業において好適に利用しうる。
【符号の説明】
【００５０】
１０…画像補正手段                    １１…補正値記憶部
１１ａ…オフセットコードテーブル      １１ｂ…圧縮ＬＵＴ
１１ｃ…補正用ＬＵＴ                  １２…ＬＵＴ展開部
１３…座標変換部                      ２０…画像データ入力部
３０…ラインバッファ又は外部メモリ    ４０…フィルタ部
５０…画像出力部                      ６０…制御部
１００…画像処理装置                  ２００…入力装置
３００…出力装置
【図１】
2017016511.tif 000004
【図２】
2017016511.tif 000005
【図３】
2017016511.tif 000006
【図４】
2017016511.tif 000007
【図５】
2017016511.tif 000008
【図６】
2017016511.tif 000009
【図７】
2017016511.tif 000010