輝度補正装置およびコンピュータを輝度補正装置として機能させるためのプログラム
【課題】 動画像に対し、リアルタイムで高度な輝度補正処理を行なうことが可能な輝度補正装置および当該輝度補正値としてコンピュータを機能させることができるプログラムを提供する。
【解決手段】 動画像の第n番目の画像(処理対象画像100a.16)の輝度を補正するために使用する補正値(補正値c1)は、第(n−m)番目の画像(処理対象画像100a.1)に基づいて算出する。そして、第(n−m)番目の画像に基づいて算出した補正値を利用して第n番目の画像の輝度を補正する。
【解決手段】 動画像の第n番目の画像(処理対象画像100a.16)の輝度を補正するために使用する補正値(補正値c1)は、第(n−m)番目の画像(処理対象画像100a.1)に基づいて算出する。そして、第(n−m)番目の画像に基づいて算出した補正値を利用して第n番目の画像の輝度を補正する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、静止画像または動画像のダイナミックレンジを改善することができる輝度補正装置、コンピュータを輝度補正装置として機能させるためのプログラムに関する。
【背景技術】
【0002】
画像の局所的な情報に基づいて、最適なダイナミックレンジを有する画像になるように輝度を補正するといった、人間の眼球の網膜をモデル化した網膜法が提案されている。この網膜法は、画像全体または画像内の一部の輝度が低く暗いときは該当する箇所の輝度を高くし、画像全体または画像内の一部の輝度が高く明るいときは該当する箇所の輝度を低くすることによって、画像を見やすくする手法である。
【0003】
網膜法には、(Daniel J.Jobson, Z.Rahman, and G.A.Woodell :"Properties and Performance of a Center/Surround Retinex," IEEE Transactions on Image Processing, vol.6, pp.451-462, March 1997.)(非特許文献1)に記載のシングルスケール網膜法(Single Scale Retinex:SSR)、および、(Daniel J.Jobson, Z.Rahman, and G.A.Woodell :"A Multiscale Retinex for Bridging the Gap Between Color Images and the Human Observation of Scenes," IEEE Transactions on Image Processing, vol.6, pp.965-976, July 1997.)(非特許文献2)に記載のマルチスケール網膜法(Multi Scale Retinex:MSR)が提案されている。
【0004】
シングルスケール網膜法では、処理の対象となる横xドット、縦yドットのサイズの画像(以下においては、「処理対象画像」とも称する)における、処理と対象となる画素(以下においては「注目画素」とも称する)の輝度値Ii(x, y)を、注目画素の周辺の画素(以下においては「周辺画素」とも称する)の情報に基づいて得られる周辺関数F(x, y)によって補正するものである。
【0005】
シングルスケール網膜法により、処理対象画像に対し演算処理が行なわれた後の処理結果(以下においては、「シングルスケール網膜処理結果」ともいう)Ri(x, y)は、次の(1)式によって表される。
【0006】
Ri(x, y)=log(Ii(x, y))-log[F(x, y)* Ii (x, y)] ・・・(1)
ここで、(1)式のIi(x, y)は処理対象画像内の座標(x, y)における輝度値の値を示す。“ * ” は畳み込み演算を示す。(1)式の周辺関数F(x, y)は、注目画素の情報と周辺画素の情報とに基づく関数であり、次の(2)式によって表される。
【0007】
【数1】
【0008】
r2は、r2=x2+y2で表され、rは注目画素と周辺画素との距離を示す。Kは、正規化係数である。また、周辺関数F(x,y)は、次の(3)式を満たす。
【0009】
【数2】
【0010】
すなわち、周辺関数の総合計が“1”となるように定められる。cは注目画素の周辺領域の面積によって決められる。
【0011】
シングルスケール網膜処理結果Ri(x, y)は、(1)式、(2)式および(3)式によって求められる。そして、次の(4)式によって、シングルスケール網膜処理結果Ri(x, y)が、ゲイン(Gain)およびオフセット(Offset)によって補正される。(1)式、(2)式、(3)式および(4)式による演算が、処理対象画像の有する全ての画素に対して行なわれることにより、シングルスケール網膜法の処理対象は適切なダイナミックレンジを有する画像に補正される。なお、以下においては補正後のシングルスケール網膜処理結果Ri(x, y)を「補正後シングルスケール網膜処理結果IRi(x, y)」とも称する。
【0012】
IRi(x, y)=Gain x Ri(x, y) + Offset ・・・(4)
しかし、シングルスケール網膜法は、処理対象画像の色再現とコントラストを同時に改善できないという問題がある。そこで、処理対象画像の色再現とコントラストを同時に改善できるように、各々が異なるcを持つN種類のシングルスケール網膜処理結果Ri(x, y)を組み合わせ、最後の出力とするマルチスケール網膜法が提案された。マルチスケール網膜法により、処理対象画像に対し演算処理が行なわれた後の処理結果(以下においては、「マルチスケール網膜処理結果」ともいう)MSRout(x, y)は、次の(5)式によって表される。
【0013】
【数3】
【0014】
ここで、(5)式のNはスケールの数(種類)である。ここで、「スケール」とは、周辺関数の直径に相当する。また、WnはN種類のスケールのうち、n番目のスケールの重み係数であり、通常は1/nである。Fn(x, y)は、シングルスケール網膜法の周辺関数F(x, y) と同様である。(5)式より、マルチスケール網膜処理結果MSRout(x, y)では、N種類全ての網膜処理結果が加算される。
【0015】
そして、(5)式によって求められたマルチスケール網膜処理結果MSRout(x, y)が、シングルスケール網膜法と同様、次の(6)式によって、ゲイン(Gain)およびオフセット(Offset)によって補正される。(2)式、(3)式、(5)式および(6)式による演算が、処理対象画像の有する全ての画素に対して行なわれることにより、マルチスケール網膜法の処理対象は適切なダイナミックレンジを有する画像に補正される。なお、以下においては補正後のマルチスケール網膜処理結果MSRout(x, y)を「補正後マルチスケール網膜処理結果IMSRi(x, y)」とも称する。
【0016】
マルチスケール網膜法では、N種類のスケールの各々に対し、マルチスケール網膜処理結果を求めるための演算が必要である。マルチスケール網膜処理結果を求めるには、(2)式、(3)式、(5)式および(6)式による演算が、処理対象画像の有する全ての画素に対して行なう必要があり、膨大な演算量が必要となる。
【0017】
そこで、マルチスケール網膜法における演算量を削減する技術が、特開2001−78025(特許文献1)に開示されている。
【0018】
IMSRi(x, y)=Gain × MSRout(x, y) + Offset ・・・(6)
【特許文献1】特開2001−78025号公報
【非特許文献1】Daniel J.Jobson, Z.Rahman, and G.A.Woodell :"Properties and Performance of a Center/Surround Retinex," IEEE Transactions on Image Processing, vol.6, pp.451-462, March 1997.
【非特許文献2】Daniel J.Jobson, Z.Rahman, and G.A.Woodell :"A Multiscale Retinex for Bridging the Gap Between Color Images and the Human Observation of Scenes," IEEE Transactions on Image Processing, vol.6, pp.965-976, July 1997.
【発明の開示】
【発明が解決しようとする課題】
【0019】
特開2001−78025(特許文献1)に開示されている技術は、静止画像に対して行なうものである。そのため、動画像に対し、マルチスケール網膜法のような高度な輝度補正処理をリアルタイムで行なうには、特開2001−78025(特許文献1)に開示されている技術を利用することによる演算量の削減よりも、さらなる演算量の削減が必要となる。
【0020】
本発明は、上述の問題点を解決するためになされたものであって、その目的は、動画像に対し、リアルタイムで高度な輝度補正処理を行なうことが可能な輝度補正装置を提供することである。
【0021】
本発明の他の目的は、動画像に対し、リアルタイムで高度な輝度補正処理を行なうことが可能な輝度補正装置としてコンピュータを機能させることができるプログラムを提供することである。
【課題を解決するための手段】
【0022】
上記の課題を解決するために、この発明のある局面に従うと、輝度補正装置は、各々が所定期間毎に順次表示されることにより動画像となる、第1番目から第n(n:自然数)番目まで予め順序付けられた複数の画像の輝度を補正する。この輝度補正装置は、複数の画像の各々の輝度を補正するための補正値を算出する補正値演算部と、補正値演算部が第(n−m)番目(m:nより小さい自然数)の画像に基づいて算出した補正値を利用して第n番目の画像の輝度を補正する輝度補正部とを備える。
【0023】
好ましくは、輝度補正部は、補正値演算部が(n−m)番目の画像に基づいて算出した、補正値を利用して第n番目から第(n+p)番目(p:m以下の自然数)の画像の輝度を補正する。
【0024】
好ましくは、輝度補正部が第n番目から第(n+p)番目の画像の輝度を補正する間、補正値演算部は(n+p+1)番目以降の画像を補正するための補正値を、第n番目から第(n+p)番目の画像のいずれかに基づいて算出する。
【0025】
好ましくは、複数の画像の各々は、複数の画素から構成され、複数の画素は、所定間隔毎に配列された複数の直接演算対象画素と、複数の間接演算対象画素とを含み、補正値演算部は、複数の直接演算対象画素の各々に対し、直接演算対象画素を含む領域である直接演算対象領域の内部の複数の直接演算対象領域内画素の輝度値に基づいて補正値を算出し、複数の間接演算対象画素の各々に対しては、間接演算対象画素の近傍の少なくとも2つの直接演算対象画素に基づいて補正値を算出する。
【0026】
好ましくは、補正値演算部は、複数の直接演算対象領域内画素の一部である複数の直接演算対象領域内間引き画素の輝度値に基づいて補正値を算出し、複数の直接演算対象領域内間引き画素のうち、直接演算対象画素との距離が所定距離以内である直接演算対象領域内間引き画素は、隣合う画素の間隔が所定距離より短い小間隔になるよう複数の画素から選択された画素であり、複数の直接演算対象領域内間引き画素のうち、直接演算対象画素との距離が所定距離より長い直接演算対象領域内間引き画素は、隣合う画素の間隔が小間隔より大きくなるよう複数の画素から選択された画素である。
【0027】
この発明の他の局面に従うと、プログラムは、各々が所定期間毎に順次表示されることにより動画像となる、第1番目から第n(n:自然数)番目まで予め順序付けられた複数の画像の輝度を補正する輝度補正装置として、記憶部を備えるコンピュータを機能させるためのプログラムである。このプログラムはコンピュータに、コンピュータの記憶部に格納されているデータを読み出して、複数の画像の各々の輝度を補正するための補正値を算出するステップと、補正値を算出するステップが第(n−m)番目(m:nより小さい自然数)の画像に基づいて算出した補正値を利用して第n番目の画像の輝度を補正するステップとを実行させる。
【0028】
好ましくは、画像の輝度を補正するステップは、補正値を算出するステップが(n−m)番目の画像に基づいて算出した、補正値を利用して第n番目から第(n+p)番目(p:m以下の自然数)の画像の輝度を補正する。
【0029】
好ましくは、画像の輝度を補正するステップが第n番目から第(n+p)番目の画像の輝度を補正する間、補正値を算出するステップは(n+p+1)番目以降の画像を補正するための補正値を、第n番目から第(n+p)番目の画像のいずれかに基づいて算出する。
【0030】
好ましくは、複数の画像の各々は、複数の画素から構成され、複数の画素は、所定間隔毎に配列された複数の直接演算対象画素と、複数の間接演算対象画素とを含み、補正値を算出するステップは、複数の直接演算対象画素の各々に対し、直接演算対象画素を含む領域である直接演算対象領域の内部の複数の直接演算対象領域内画素の輝度値に基づいて補正値を算出し、複数の間接演算対象画素の各々に対しては、間接演算対象画素の近傍の少なくとも2つの直接演算対象画素に基づいて補正値を算出する。
【0031】
補正値を算出するステップは、複数の直接演算対象領域内画素の一部である複数の直接演算対象領域内間引き画素の輝度値に基づいて補正値を算出し、複数の直接演算対象領域内間引き画素のうち、直接演算対象画素との距離が所定距離以内である直接演算対象領域内間引き画素は、隣合う画素の間隔が所定距離より短い小間隔になるよう複数の画素から選択された画素であり、複数の直接演算対象領域内間引き画素のうち、直接演算対象画素との距離が所定距離より長い直接演算対象領域内間引き画素は、隣合う画素の間隔が小間隔より大きくなるよう複数の画素から選択された画素である。
【発明の効果】
【0032】
本発明に係る輝度補正装置によると、動画像の第n番目の画像の輝度を補正するために使用する補正値は、第(n−m)番目の画像に基づいて算出する。そして、第(n−m)番目の画像に基づいて算出した補正値を利用して第n番目の画像の輝度を補正する。したがって、輝度補正装置は、動画像に対し、補正値を算出するのに膨大な演算が必要な高度な輝度補正処理をリアルタイムで行なうことができる。
【0033】
本発明に係るプログラムによると、コンピュータを、動画像の第n番目の画像の輝度を補正するために使用する補正値は、第(n−m)番目の画像に基づいて算出し、第(n−m)番目の画像に基づいて算出した補正値を利用して第n番目の画像の輝度を補正する輝度補正装置として機能させることができる。したがって、輝度補正装置として、コンピュータを機能させるためのプログラムは、動画像に対し、補正値を算出するのに膨大な演算が必要な高度な輝度補正処理をリアルタイムで実行することができる。
【発明を実施するための最良の形態】
【0034】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【0035】
図1は、輝度補正装置を利用したシステムの一例としての輝度補正システム10000のブロック図を示す。
【0036】
図1を参照して、輝度補正システム10000は、カメラ1000と、輝度補正装置2000と、画像表示部3000とを備える。
【0037】
カメラ1000は、動画または静止画を撮影し、アナログ映像信号またはデジタル映像信号に変換して、輝度補正装置2000へ出力する。以下においては、アナログ映像信号およびデジタル映像信号を総括的に映像信号とも称する。
【0038】
輝度補正装置2000は、前述したマルチスケール網膜法による輝度補正処理を行なう。以下においては、輝度補正装置2000で処理される映像信号に基づく画像を「処理対象画像」とも称する。
【0039】
輝度補正装置2000は、データ入力部2100と、輝度補正処理部2200と、画像処理部2300と、データ出力部2400とを含む。
【0040】
データ入力部2100は、カメラ1000から出力された映像信号を受け、輝度補正処理部2200へ出力するためのインターフェースである。
【0041】
輝度補正処理部2200は、データ入力部2100から出力された映像信号に対し後述する輝度補正処理を行ない、画像処理部2300へ出力する。
【0042】
画像処理部2300は、輝度補正処理部2200から出力された映像信号に対し所定の画像処理を行ない、データ出力部2400へ出力する。
【0043】
データ出力部2400は、画像処理部2300から出力された映像信号を受け、画像表示部3000へ出力するためのインターフェースである。
【0044】
画像表示部3000は、データ出力部2400から出力された映像信号に基づいて画像を表示する。画像表示部3000は、液晶ディスプレイ(LCD(Liquid Crystal Display))、CRT(Cathode Ray Tube)、FED(Field Emission Display)、PDP(Plasma Display Panel)、有機ELディスプレイ(Organic Electro luminescence Display)、ドットマトリクス等その他の画像表示方式の表示機器のいずれであってもよい。
【0045】
なお、輝度補正システム10000は、上記構成に限定されることなくその構成は任意である。たとえば、カメラ1000の内部に輝度補正処理部2200を設けるような構成であってもよい。また、画像表示部3000の内部に輝度補正処理部2200を設けるような構成であってもよい。
【0046】
図2は、輝度補正処理部2200のブロック図を示す。
【0047】
図2を参照して、輝度補正処理部2200は、同期分離回路2210と、画像処理プロセッサ2700と、画像処理プロセッサ2800と、画像データ記憶部2230, 2240と、データ記憶部2260と、データ通信部2270とを備える。
【0048】
同期分離回路2210は、データ入力部から出力された映像信号IMGを、画像信号RGBと、同期信号HVSIGとに分離して、画像処理プロセッサ2700、2800へ出力する。なお、同期信号HVSIGは、水平同期信号と垂直同期信号と画像信号に同期したクロック信号とを含んだ信号である。
【0049】
データ記憶部2260は、データを一時的に記憶可能なRAM(Random Access Memory)、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、SDRAM(Synchronous DRAM)、ダブルデータレートモードという高速なデータ転送機能を持ったSDRAMであるDDR−SDRAM(Double Data Rate SDRAM)、Rambus社が開発した高速インターフェース技術を採用したDRAMであるRDRAM(Rambus Dynamic Random Access Memory)、Direct−RDRAM(Direct Rambus Dynamic Random Access Memory)、その他のデータを記憶保持可能な構成を有する回路のいずれであってもよい。データ記憶部2260は、画像処理プロセッサ2800によってアクセスされる。
【0050】
画像データ記憶部2230は、データ記憶部2260と比較して、画像処理プロセッサ2800の代わりに、画像処理プロセッサ2700によってアクセスされる点が異なる。それ以外の構成および機能は、データ記憶部2260と同様なので詳細な説明は繰り返さない。
【0051】
画像データ記憶部2240は、データ記憶部2260と比較して、画像処理プロセッサ2800の代わりに、画像処理プロセッサ2700によってアクセスされる点が異なる。それ以外の構成および機能は、データ記憶部2260と同様なので詳細な説明は繰り返さない。
【0052】
なお、本実施の形態において、画像処理プロセッサ2700は、画像データ記憶部2230および画像データ記憶部2240といった、2つの画像データ記憶部にアクセスする構成に限定されるものではなく、その構成は任意である。たとえば、画像データ記憶部が高速にアクセスが可能なもの(たとえば、DDR−SDRAM)であれば、画像処理プロセッサ2700は、1つの画像データ記憶部のみにアクセスする構成でもよい。
【0053】
また、本実施の形態においては、画像データ記憶部2230および画像データ記憶部2240は、画像処理プロセッサ2700の外部に設けられている構成としているが、その構成は任意である。たとえば、画像データ記憶部2230および画像データ記憶部2240は、画像処理プロセッサ2700に内蔵されていてもよい。
【0054】
データ通信部2270は、RS−232C(Recommended Standard 232 version C)、RS−422(Recommended Standard 422)、USB(Universal Serial Bus)1.1、USB2.0、その他シリアル転送を行なう通信用インターフェースのいずれであってもよい。
【0055】
また、データ通信部2270は、セントロニクス仕様、IEEE1284(Institute of Electrical and Electronic Engineers 1284)、その他パラレル転送を行なう通信用インターフェースのいずれであってもよい。
【0056】
また、データ通信部2270は、IEEE1394、その他SCSI規格を利用した通信用インターフェースのいずれであってもよい。
【0057】
また、データ通信部2270は、IrDA(Infrared Data Association)1.0、IrDA1.1、IrDA1.2、その他赤外線を利用した近距離のデータ通信を行なう通信用インターフェースのいずれであってもよい。
【0058】
また、データ通信部2270は、イーサネット(登録商標)、無線LANの規格であるIEEE802.11a、IEEE802.11b、IEEE802.11g、その他有線または無線のLAN技術を利用してデータ通信を行なう通信用インターフェースのいずれであってもよい。
【0059】
データ通信部2270は、輝度補正処理部2200または輝度補正装置2000の外部に設けられた制御PC4000とデータの授受を行なう。
【0060】
制御PC4000は、データ通信部2270を介して、画像処理プロセッサ2700および画像処理プロセッサ2800へ制御プラグラムや設定データ等のデータを送信する。なお、本発明において、データ通信部2270とデータの授受をするものは、制御PC4000に限定されるものではない。制御PC4000の代わりに、たとえば、可変抵抗またはプッシュボタンなどのインターフェースをもった制御装置であってもよい。
【0061】
図3は、画像処理プロセッサ2800の内部の詳細なブロック図を示す。
【0062】
図3を参照して、画像処理プロセッサ2800は、プログラミングすることができるLSI(Large Scale Integration)であるFPGA(Field Programmable Gate Array)、特定の用途のために設計、製造される集積回路であるASIC(Application Specific Integrated Circuit)、画像処理専用LSI、マイクロプロセッサ(Microprocessor)、その他の演算機能を有する回路のいずれであってもよい。
【0063】
画像処理プロセッサ2800は、補正値演算部2810と、バッファ2830と、アドレス生成部2840と、メモリ制御部2850と、パラメータ設定部2820とを含む。
【0064】
バッファ2830は、同期分離回路2210から出力された画像信号RGBに基づくデータの一部、たとえば、動画像の1フレーム(静止画像)の1ライン分の画像データを一時的に保持する機能を有する。なお、バッファ2830は、動画像の1フレーム分の画像データを一時的に保持する機能を有してもよい。
【0065】
アドレス生成部2840は、同期信号HVSIGが入力される毎に動作するカウンタ(図示せず)を内部に有する。アドレス生成部2840は、同期信号HVSIGが入力される毎に、カウンタを動作させ、データ記憶部2260にデータを記憶させるのに必要なアドレスを生成し、メモリ制御部2850へ出力する。
【0066】
メモリ制御部2850は、バッファ2830が一時的に記憶しているデータを、アドレス生成部2840から入力されたアドレスに基づいて、データ記憶部2260に書込む。また、メモリ制御部2850は、所定の時間毎にデータ記憶部2260に記憶されているデータを読み出して、補正値演算部2810へ出力する。
【0067】
パラメータ設定部2820は、データ通信部2270から伝達されたデータに基づいて補正値演算部2810が使用するパラメータ(設定値)等の変更を行なう。
【0068】
補正値演算部2810は、演算部2814、データ一時記憶部2812、データ記憶部2816を有する。
【0069】
データ一時記憶部2812は、データ記憶部2260と同様な構成を有し、データを一時的に記憶する回路である。
【0070】
データ記憶部2816は、読み出し専用記憶装置であるROM(Read Only Memory)、記憶の消去・書き込みを何度でも行えるEPROM(Erasable Programmable Read Only Memory)、電気的に内容を書き換えることができるEEPROM(Electronically Erasable and Programmable Read Only Memory)、紫外線を使って記憶内容の消去・再書き込みを何度でも行えるUV−EPROM(Ultra-Violet Erasable Programmable Read Only Memory)、その他のデータを記憶可能な構成を有する回路のいずれであってもよい。
【0071】
データ記憶部2816は、後述する周辺関数データLD,SDおよび制御プログラムを予め記憶している。
【0072】
演算部2814は、データ一時記憶部2812をワークメモリとして利用する。また、演算部2814は、データ記憶部2816に記憶されている制御プログラムに従って、メモリ制御部2850から出力されたデータに基づいて、後述する正規化係数算出処理および補正値算出処理を行なう。
【0073】
正規化係数算出処理では、後述する補正値算出処理で使用する正規化係数を算出する処理を行なう。補正値算出処理では、前述したマルチスケール網膜法により画像の輝度を適切に補正するための補正値を算出する。
【0074】
また、詳細は後述するが、演算部2814は、補正値算出処理により算出した補正値を画像処理プロセッサ2700内に設けられた後述する補正値記憶部2710へ書込む。
【0075】
図4は、画像処理プロセッサ2700の内部の詳細なブロック図を示す。
【0076】
図4を参照して、画像処理プロセッサ2700は、前述した画像処理プロセッサ2800と同様な機能を有するプロセッサである。なお、本実施の形態においては、輝度補正処理部2200内に2つの画像処理プロセッサを設けている構成としているが、その構成は任意である。たとえば、画像処理プロセッサが非常に高速なもの、または、十分な回路規模および十分な入出力ピン数を有するものであれば、2つではなく、1つでもよい。
【0077】
画像処理プロセッサ2700は、バッファ2730と、アドレス生成部2740と、メモリ制御部2750と、バッファ2760と、データ記憶部2780と、補正値記憶部2710と、パラメータ設定部2720と、輝度補正部2770と、バッファ2790と、バッファ2792と、同期信号生成部2794とを含む。
【0078】
バッファ2730は、前述したバッファ2830と同様な構成および機能を有するので詳細な説明は繰り返さない。
【0079】
アドレス生成部2740は、同期信号HVSIGが入力される毎に動作するカウンタ(図示せず)を内部に有する。アドレス生成部2740は、同期信号HVSIGが入力される毎に、カウンタを動作させ、画像データ記憶部2230または画像データ記憶部2240にデータを記憶させるのに必要なアドレスを生成し、メモリ制御部2750へ出力する。
【0080】
メモリ制御部2750は、前述した画像データ記憶部2230および画像データ記憶部2240に対しデータの書込み動作、データの読出し動作を行なう。
【0081】
画像データ記憶部2230は、1フレームの画像データを記憶可能な記憶領域2232,2234を有する。
【0082】
画像データ記憶部2240は、1フレームの画像データを記憶可能な記憶領域2242,2244を有する。
【0083】
メモリ制御部2750は、バッファ2730が一時的に記憶しているデータを、アドレス生成部2740から入力されたアドレスに基づいて、1フレーム分の画像単位毎に、画像データ記憶部2230と、データ記憶部2240とを利用し、交互にデータの書込み対象を切替える。
【0084】
たとえば、メモリ制御部2750が、あるフレームの画像データを画像データ記憶部2230へ書込んだ場合、メモリ制御部2750は、次のフレームの画像データをデータ記憶部2240へ書込む。このように、記憶部を2つ設け、データの書込みの対象を所定の単位(この場合は、1フレームの画像データ)毎に変えることにより、高速でデータを処理することが可能となる。
【0085】
メモリ制御部2750が、画像データを画像データ記憶部2230に書込むときは、記憶領域2232または記憶領域2234がデータの書込み対象の領域となる。
【0086】
一方、メモリ制御部2750が、画像データをデータ記憶部2240に書込むときは、記憶領域2242または記憶領域2244がデータの書込み対象の領域となる。
【0087】
また、メモリ制御部2750は、画像データ記憶部2230および画像データ記憶部2240のうち、1フレームの画像データの書込みが終了した記憶部内の記憶領域から1フレーム(静止画像)の1画素分の画像データを読み出して、バッファ2760へ出力する。
【0088】
バッファ2760は、メモリ制御部2750から出力された画像信号RGBに基づくデータの一部、たとえば、1フレームの1画素分のデータを一時的に保持する機能を有する。
【0089】
データ記憶部2780は、前述したデータ記憶部2816と同様な構成および機能を有する。また、データ記憶部2780は、log演算変換データを予め記憶している。ここで、log演算変換データは、予め計算していた複数種類のlog演算結果のデータである。
【0090】
補正値記憶部2710は、1フレームの画像に使用するデータを記憶可能な記憶領域2712,2714を有する。詳細は後述するが、前述した演算部2814は、1フレームの画像に使用するデータ毎に、記憶領域2712と、記憶領域2714とを利用して、交互にデータの書込み対象を切替える。
【0091】
たとえば、演算部2814が、あるフレームに使用するデータを記憶領域2712へ書込んだ場合、演算部2814は、次のフレームに使用するデータを記憶領域2714へ書込む。
【0092】
パラメータ設定部2720は、データ通信部2270から伝達されたデータに基づいて輝度補正部2770が使用するパラメータ(設定値)等の変更を行なう。
【0093】
輝度補正部2770は、演算部2771と、補間処理部2772と、輝度処理部2773と、ノイズ処理部2775と、色補正部2774とを有する。
【0094】
詳細は後述するが、演算部2771は、バッファ2760に記憶されているデータを読み出して、データ記憶部2780に記憶されているlog演算変換データを利用して、演算処理を行なって、演算結果のデータを輝度処理部2773へ出力する。
【0095】
詳細は後述するが、補間処理部2772は、補正値記憶部2710内の記憶領域2712および記憶領域2714のうち、1フレームの画像に使用するデータの書込みが終了した記憶領域内からデータを読み出して、後述する補間処理を行なって、補間処理の結果のデータを輝度処理部2773へ出力する。
【0096】
詳細は後述するが、輝度処理部2773は、演算部2771から出力される演算結果のデータと、補間処理部2772から出力されるデータとに基づいて、1フレーム(静止画像)の1画素に対して、輝度処理を行なう。
【0097】
ノイズ処理部2775は、輝度処理部2773により輝度処理された画素に対して、たとえば、所定の閾値以上に輝度が変化されたとき、輝度の変化を閾値以内に収まるように処理を行なう。
【0098】
色補正部2774は、たとえば、ノイズ処理部2775により輝度処理された輝度値に基づく色度が、所定の閾値以上であるとき、色度を所定の閾値以内に収まるように処理を行なう。色補正部2774は、処理を行なった後のデータをバッファ2790へ出力する。
【0099】
バッファ2790は、色補正部2774から出力された、1画素分のデータを一時的に保持する機能を有する。
【0100】
そして、メモリ制御部2750が、バッファ2790に記憶されたデータを読出し、画像データ記憶部2230および画像データ記憶部2240のうち、前述した輝度補正部2770が演算処理を行なう際に使用したデータを読み出さなかった画像データ記憶部内の記憶領域にデータを書込む。
【0101】
輝度補正部2770が演算処理を、1フレームの画像内の画素すべてに行ない、画像データ記憶部2230および画像データ記憶部2240のうちのいずれかの記憶領域に1フレーム分の演算処理後の画像データ(以下においては、「演算処理済画像データ」とも称する)の書込みが終了すると、メモリ制御部2750は、当該記憶領域から演算処理済画像データを読出し、バッファ2792へ出力する。
【0102】
バッファ2792は、メモリ制御部2750から出力されたデータを、1フレーム(静止画像)の1ライン分の画像データを一時的に保持する機能を有する。なお、バッファ2792は、1フレーム分の画像データを一時的に保持する機能を有してもよい。
【0103】
同期信号生成部2794は、バッファ2792に1ライン分の画像データが記憶される毎に、同期信号OHVSIGを出力する。同期信号生成部2794が、同期信号OHVSIGを出力すると同時に、バッファ2792は、記憶している補正後の画像データ(以下においては、「補正後画像データ」とも称する)CRRGBを出力する。
【0104】
図5は、複数のブロックに分割された画像の状態を示す図である。
【0105】
図5(a)は、輝度補正装置2000で処理される処理対象画像100を示す図である。
【0106】
図5(a)を参照して、処理対象画像100は、たとえば、横640ドット、縦480ドットの画像であるとする。処理対象画像100は、縦および横のサイズが同じで、各々が同一のサイズの複数のブロックに分割され、当該複数のブロック毎に前述したマルチスケール網膜法による演算処理が行なわれる。
【0107】
図5(b)は、処理対象画像100を複数のブロックに分割したうちの1つのブロック分割画像100nを示す図である。詳細は後述するが、補正値算出処理により算出される補正値は、ブロック分割画像100n毎に算出される。
【0108】
図5(b)を参照して、ブロック分割画像100nは、説明を分かりやすくするために、たとえば、横4ドット、縦4ドットからなる16個の画素を有するものとする。
【0109】
図6は、前述した注目画素からの距離に応じて変化する周辺関数の値を示す図である。
【0110】
図6(a)は、(2)式に、x、yの値を代入したときの周辺関数の値を視覚化した図を示す。
【0111】
図6(a)を参照して、x軸、y軸は、注目画素からの距離(単位はピクセル)を示す。z軸は、(2)式にx、yの値を代入したときの周辺関数の値を示す。なお、図6(a)における、注目画素の座標は、(0,0)である。図6(a)によると、周辺関数の値は、注目画素からの距離が離れるに従って指数関数的に低下していることが分かる。
【0112】
図6(b)は、図6(a)をx、y面から見た状態を示す。
【0113】
図6(b)を参照して、周辺関数の値は、注目画素160からの距離に応じて、低下する。なお、本実施の形態による周辺関数を計算する領域(以下においては「周辺関数算出領域」とも称する)120は、横、縦のサイズが等しい正方形の領域を右に45度回転させた領域とする。周辺関数算出領域120の最長部の長さは、400ピクセルとする。なお、周辺関数算出領域の形は、ひし形に限定されることなく、円であってもよい。
【0114】
図6(c)は、図6(a)のグラフを直線で近似した図である。以下においては、当該近似した図を、「周辺関数近似モデル図」とも称する。なお、周辺関数近似モデル図に基づく周辺関数の値は予め計算された値(以下においては、「算出済周辺関数値」とも称する)であり、周辺関数算出領域120内の注目画素からの相対座標値の各々に対応付けてデータ記憶部2816に記憶されている。なお、データ記憶部2816には、後述するスモール領域(周辺関数算出領域)140のサイズおよび後述するラージ領域(周辺関数算出領域)120のサイズにそれぞれ基づく、2種類の算出済周辺関数値が記憶されている。これにより、周辺関数を計算する処理が必要なくなり、補正値を求めるための計算量を大きく削減できる。
【0115】
図6(d)は、図6(c)をx、y面から見た状態を示す。なお、周辺関数近似モデル図は、縦、横に線対称の形をしているので(図6(d)参照)、データ記憶部2816には、周辺関数近似モデル図に基づく算出済周辺関数値全ての4分の1のみを記憶させておいてもよい。この場合でも、注目画素からの相対座標値の全てに対し、対応する周辺関数の値を読み出すことができる。
【0116】
図7は、注目画素160からの距離による周辺関数算出領域を変化させた状態を示す図である。
【0117】
図7を参照して、本実施の形態においては、マルチスケール網膜法による演算処理を行なうので、注目画素160からの距離によって、2つのサイズの周辺関数算出領域を使用する。なお、周辺関数算出領域は、3つ以上のサイズを使用してもよい。
【0118】
周辺関数算出領域140の最長部の長さは、一例として160ピクセルである。なお、以下においては、周辺関数算出領域140を「スモール領域140」とも称する。
【0119】
周辺関数算出領域120の最長部の長さは、一例として400ピクセルである。なお、以下においては、周辺関数算出領域120を「ラージ領域120」とも称する。
【0120】
図8は、注目画素160に対して補正値を計算する際に使用する周辺画素を有する領域を示す図である。以下においては、補正値を計算する際に使用する周辺画素を「補正値算出用周辺画素」とも称する。なお、補正値算出用周辺画素の数は、注目画素160の座標値によって異なる。
【0121】
図8を参照して、スモール領域140に対する補正値(以下においては、「スモール領域補正値」とも称する)を計算する際、処理対象画像100のうち、スモール領域140に囲まれた斜線で示される領域142内の複数の画素(以下においては、「スモール領域内周辺画素」とも称する)各々の輝度値を使用する。
【0122】
また、ラージ領域120に対する補正値(以下においては、「ラージ領域補正値」とも称する)を計算する際、処理対象画像100のうち、ラージ領域120に囲まれた縦線で示される領域122および領域142内の複数の画素(以下においては、「ラージ領域内周辺画素」とも称する)各々の輝度値を使用する。注目画素160に対する補正値は、スモール領域補正値と、ラージ領域補正値とを加算した値となる。
【0123】
なお、スモール領域内周辺画素およびラージ領域内周辺画素の数は、注目画素160の座標によって変化する。たとえば、注目画素160の座標が、処理対象画像100の中央に位置したとき、スモール領域内周辺画素およびラージ領域内周辺画素の数は最大となる。
【0124】
本実施の形態では、マルチスケール網膜法における演算量を削減するために、補正値を算出する際、スモール領域内画素およびラージ領域内画素の全てではなく、適度に間引いた一部の画素を使用することにより演算量の削減を図る。
【0125】
図6(a)に示したように、周辺関数の値は、注目画素との距離が離れている画素ほど小さくなる。周辺関数の値が小さければ、補正値の値は小さくなり、輝度補正の影響が少なくなる。したがって、注目画素からの距離が離れるにしたがって、間引きの度合いを大きくするように、補正値算出用周辺画素を選択する。
【0126】
図9は、補正値算出用周辺画素を示す図である。
【0127】
図9を参照して、スモール領域140内においては、補正値算出用周辺画素は、隣合う2つの画素の間隔が、たとえば、16ピクセルになるようにスモール領域内周辺画素から選択した画素(以下においては、「スモール領域内間引き画素」とも称する)である。
【0128】
したがって、スモール領域内間引き画素のうちのスモール領域内周辺画素を用いて、前述の(2)式、(3)式、(5)式による演算を行なうことにより、注目画素160に対し、スモール領域補正値を算出することができる。
【0129】
また、ラージ領域120内においては、補正値算出用周辺画素は、隣合う2つの画素の間隔が、たとえば、16ピクセルより大きい32ピクセルになるようにラージ領域内周辺画素から選択した画素(以下においては、「ラージ領域内間引き画素」とも称する)である。
【0130】
したがって、ラージ領域内間引き画素のうちのラージ領域内周辺画素を用いて、前述の(2)式、(3)式、(5)式による演算を行なうことにより、注目画素160に対し、ラージ領域補正値を算出することができる。
【0131】
そして、スモール領域補正値とラージ領域補正値とを加算することにより注目画素160に対する補正値を算出することができる。以上説明した補正値の演算処理を補正値演算処理とも称する。
【0132】
なお、補正値算出用周辺画素は、前述したように、注目画素との距離が所定距離以内という条件または所定距離より長いという条件に基づいて選択した画素に限定されない。たとえば、注目画素160からの距離が離れるにつれて、補正値算出用周辺画素は、隣合う2つの画素の間隔が広くなるように選択した画素であってもよい。なお、隣合う2つの画素の間隔を変化させると、周辺関数の形状も画素の間隔に応じて変化する。
【0133】
図10は、所定のサイズのブロック毎に算出する補正値を利用して、補正値を算出していない画素の補正値を算出する補間処理を説明するための図である。なお、補間処理は、補間処理部2772により行なわれる。
【0134】
図10を参照して、ブロック分割画像101,102,103の各々は、横4ドット、縦4ドットからなる16個の画素を有する。後述する補正値算出処理によって算出される補正値は、処理対象画像100の複数のブロック分割画像の各々に対し、1つの画素についてのみ求められる。以下においては、当該1つの画素を「直接演算対象画素」とも称する。たとえば、ブロック分割画像101の直接演算対象画素は、画素101.1となる。
【0135】
また、複数のブロック分割画像の各々が有する複数の画素のうち、直接演算対象画素以外の画素を「間接演算対象画素」とも称する。たとえば、ブロック分割画像101の間接演算対象画素は、画素101.2,101.3,101.4,101.6となる。
【0136】
次に、補間処理を行なう前に行なう補正値の算出の一例を説明する。まず、ブロック分割画像101,102,103の各々が有する直接演算対象画素に対し、前述した補正値演算処理を行なう。この場合、直接演算対象画素は、画素101.1,102.1,103.1である。画素101.1内の“10”、画素102.1内の“12”、画素103.1内の“6”は、それぞれ、補正値演算処理により算出した補正値を示す。
【0137】
そして、補正値演算処理により算出した補正値を利用して間接演算対象画素の補正値を算出する処理が補間処理である。たとえば、画素101.3(間接演算対象画素)に対し、補正値を算出するには、画素101.3の近傍の少なくとも2つの直接演算対象画素(この場合、画素101.2,102.1)の補正値(“10”、“12”)を加算して、使用した補正値の数(この場合、“2”)で除算する。その結果、画素101.3(間接演算対象画素)の補正値を算出することができる。
【0138】
また、たとえば、画素101.2(間接演算対象画素)に対し、補正値を算出するには、画素101.2の近傍の直接演算対象画素または間接演算対象画素(この場合、画素101.1,101.3)の補正値(“10”、“11”)を加算して、使用した補正値の数(この場合、“2”)で除算する。その結果、画素101.2(間接演算対象画素)の補正値を算出することができる。
【0139】
なお、間接演算対象画素の補正値を算出するときに使用する画素は、近傍の2つの画素でなく、近傍の3つ以上の画素であってもよい。また、間接演算対象画素の補正値を算出する方法は、前述の方法に限定されない。
【0140】
以上、静止画像に対する補正値の算出方法を説明してきたが、次に、動画像に対し輝度補正処理(以下においては、「動画像輝度補正処理」とも称する)を行なう方法について説明する。たとえば、30分の1秒毎に表示される静止画像から構成される動画像に対して、すべての静止画像に対しリアルタイムで補正値を計算するには、前述した演算方法を使用し、かつ、現在の最高レベルの演算速度を有する演算装置を用いたとしても実現困難である。
【0141】
そこで、動画像に対しリアルタイムで輝度補正を実現可能な方法を以下に説明する。具体的には、人間の目の特性を利用して、一度算出した補正値を、輝度の変化に気づかない範囲で複数のフレームに連続して使用する。
【0142】
図11は、動画像輝度補正処理を説明するための図である。
【0143】
図11を参照して、動画像輝度補正処理において、前述した補正値の演算処理は、動画像を構成する全ての静止画像(フレーム)に対して行なうのではなく、数フレームに1度補正値を計算し、補正値の計算中は、算出済みの補正値を複数のフレームの輝度補正処理に連続して使用するようにする。以下においては、1フレームの補正値を算出するのに必要な時間を「補正値算出必要時間」とも称する。
【0144】
たとえば、時刻t4〜t7における処理対象画像100a.16〜100a.30の15フレームの輝度補正処理には、補正値c1を使用するとする。
【0145】
この場合、補正値c1は、時刻t4の前には算出し終えている必要がある。そのため、補正値c1を算出するのに要する時間(補正値算出必要時間)を予め測定しておき、補正値c1を最初に使用するフレーム(処理対象画像100a.16)を処理し始める時刻t4から補正値算出必要時間分より前の時刻に処理されるフレーム(この場合、処理対象画像100a.1)を使用して補正値を求めるようにする。
【0146】
そして、時刻t8以降の処理対象画像100a.31,100a.32・・・に対しては、時刻t8から補正値算出必要時間分より前の時刻のフレーム(この場合、処理対象画像100a.16)を使用して求めた補正値c2を使用する。
【0147】
時刻t1〜t4の期間は、補正値c1を算出するための演算処理が行なわれる補正値算出処理実行期間T1である。時刻t4〜t8の期間は、補正値c2を算出するための演算処理が行なわれる補正値算出処理実行期間T2である。時刻t8以降は、補正値c3を算出するための演算処理が行なわれる補正値算出処理実行期間T3である。
【0148】
以上のような方法により、動画像に対し、リアルタイムで高度な輝度補正処理を行なうことが可能となる。
【0149】
次に、動画像に対しリアルタイムで輝度補正処理を行なうときの輝度補正処理部2200の動作を、図2、図3、図4、図8、図9、図10、図11を用いて説明する。
【0150】
まず、図11の動画像を構成する処理対象画像100a.1〜100a.32のうち、処理対象画像100a.1が同期分離回路2210によって、画像信号RGBと、同期信号HVSIGとに分離され、画像処理プロセッサ2700および画像処理プロセッサ2800へ入力される。
【0151】
このとき、画像処理プロセッサ2700は、すでに算出された補正値が記憶されている画像データ記憶部から当該補正値を読み出して、処理対象画像100a.1の輝度補正処理を行ない、同期信号OHVSIGを出力すると同時に、輝度補正処理後の処理対象画像100a.1のデータを前述した補正後画像データCRRGBとして出力する。
【0152】
一方、画像処理プロセッサ2800は、処理対象画像100a.1を使用して補正値を算出して、当該補正値を補正値記憶部2710へ書込む。補正値記憶部2710へ処理対象画像100a.1に基づいた補正値が書込まれる時刻は、時刻t4より前となる。
【0153】
具体的には、まず、バッファ2830、アドレス生成部2840、メモリ制御部2850、データ記憶部2260の動作により、データ記憶部2260に、処理対象画像100a.1の画像データ(R,G,B各データ)が一時的に記憶される。そして、演算部2814により、正規化係数算出処理が行なわれる。
【0154】
図12は、正規化係数算出処理のフローチャートを示す。
【0155】
図12を参照して、ステップS110では、処理対象画像100a.1における正規化係数を算出する画素の座標値L(たとえば、L(0,0))の設定が行なわれる。ここで、正規化係数とは、補正値を算出するために使用される係数である。また、正規化係数は、図8、図9で説明したように、注目画素160の座標値によって変化する補正値算出用周辺画素の数による補正値の変化をなくすための係数である。なお、正規化係数は、処理対象画像の有する全ての画素にそれぞれ対応付けて算出される。
【0156】
以下においては、スモール領域140に対する補正値を算出するための正規化係数を「正規化係数SK」と称する。以下においては、ラージ領域120に対する補正値を算出するための正規化係数を「正規化係数LK」と称する。その後、ステップS120の処理が行なわれる。
【0157】
ステップS120では、(2)式、(3)式に基づいて、正規化係数SKおよび正規化係数LKの計算が行なわれる。その後、ステップS130の処理が行なわれる。
【0158】
ステップS130では、ステップS120により算出された正規化係数をデータ一時記憶部2812に記憶させる。その後、ステップS140の処理が行なわれる。
【0159】
ステップS140では、処理対象画像(この場合、処理対象画像100a.1)の有する全ての画素に対して正規化係数の計算処理が終了したかどうか判定する。ステップS140により、処理対象画像の有する全ての画素に対して正規化係数の計算処理が終了していないと判定されると、再度ステップS110、S120,S130の処理が行なわれる。一方、ステップS140により、処理対象画像の有する全ての画素に対して正規化係数の計算処理が終了したと判定されると、この正規化係数算出処理は終了し、リターンする。
【0160】
以上の正規化係数算出処理により、処理対象画像内の全ての画素の各々の補正値を算出するための正規化係数SK,LKが算出され、データ一時記憶部2812に記憶される。
【0161】
演算部2814は、正規化係数算出処理が終了すると、補正値算出処理を行なう。
【0162】
図13は、補正値算出処理のフローチャートを示す。
【0163】
図13を参照して、ステップS200では、データ記憶部2260に記憶された画像データ(処理対象画像100a.1の画像データ)が、メモリ制御部2850により演算部2814に転送される。その後、ステップS210の処理が行なわれる。
【0164】
ステップS210では、ステップS200により読み出されたR,G,B形式の画像データを、たとえば、HSV形式に変換する。なお、R,G,B形式の画像データを、変換する画像形式は、HSV形式に限定されることなく、たとえば、HSL(HSI)方式であってもよい。その後、ステップS220の処理が行なわれる。
【0165】
ステップS220では、注目画素160の座標値N(たとえば、N(16,0))の設定が行なわれる。その後、ステップS230の処理が行なわれる。
【0166】
ステップS230では、補正値算出用周辺画素(たとえば、図9の画素160.1)の座標値Z(たとえば、N(0,0))の設定が行なわれる。その後、ステップS240の処理が行なわれる。
【0167】
ステップS240では、ステップS230により設定された座標値Zがスモール領域140の内部にあるか否かが判定される。ステップS230により設定された座標値Zがスモール領域140の内部にあると判定されると、ステップS242の処理が行なわれる。一方、ステップS230により設定された座標値Zがスモール領域140の内部にないと判定されると、後述するステップS252の処理が行なわれる。
【0168】
ステップS242では、データ記憶部2816から、注目画素160を原点としたときの座標値Zの相対座標値に対応した、周辺関数データLD,SDの読出しが行なわれる。ここで、周辺関数データLDとは、ラージ領域120のサイズおよび図6(c)の周辺関数近似モデル図に基づく算出済周辺関数値である。ここで、周辺関数データSDとは、スモール領域140のサイズおよび図6(c)の周辺関数近似モデル図に基づく算出済周辺関数値である。その後、ステップS244の処理が行なわれる。
【0169】
ステップS244では、ラージ領域120に対して、式(5)内のFn(x, y)* Ii(x, y)の部分の演算が行なわれる。なお、以下においては、ラージ領域120に対してのFn(x, y)* Ii(x, y)を「変数LCR」と称する。変数LCRにはLCR+LD×VSの演算結果が代入される。ここで、“LCR”の初期値は“0”である。“LD”はステップS242により読み出された周辺関数データLDである。VSは座標値Zの補正値算出用周辺画素の輝度値である。その後、ステップS246の処理が行なわれる。
【0170】
ステップS246では、スモール領域140に対して、式(5)内のFn(x, y)* Ii(x, y)の部分の演算が行なわれる。なお、以下においては、スモール領域140に対してのFn(x, y)* Ii(x, y)を「変数SCR」と称する。変数SCRにはSCR+SD×VSの演算結果が代入される。ここで、“SCR”の初期値は“0”である。“SD”はステップS242により読み出された周辺関数データSDである。VSは座標値Zの補正値算出用周辺画素の輝度値である。その後、ステップS260の処理が行なわれる。
【0171】
ステップS240により、ステップS230により設定された座標値Zがスモール領域140の内部にないと判定されると、ステップS252の処理が行なわれる。
【0172】
ステップS252では、データ記憶部2816から、注目画素160を原点としたときの座標値Zの相対座標値に対応する、周辺関数データLDの読出しが行なわれる。その後、ステップS254の処理が行なわれる。
【0173】
ステップS254では、前述したステップS244と同様な処理が行なわれるので詳細な説明は繰り返さない。その後、ステップS260の処理が行なわれる。
【0174】
ステップS260では、ラージ領域120内の全ての補正値算出用周辺画素に対し、ステップS244,S246またはステップS254の計算が終了したか否かが判定される。ステップS260により、ラージ領域120内の全ての補正値算出用周辺画素に対し、ステップS244,S246またはステップS254の計算が終了していないと判定されると、前述したステップS230,S240,S242,S244,S246またはステップS230,S240,S252,S254の処理が繰返し行なわれる。
【0175】
その結果、ステップS260により、ラージ領域120内の全ての補正値算出用周辺画素に対し、ステップS244,S246またはステップS254の計算が終了したと判定されると、ステップS270の処理が行なわれる。
【0176】
ステップS270では、ステップS220により設定された注目画素160の座標値Nに対応する正規化係数SK,LKがデータ一時記憶部2812から読み出される。その後、ステップS272の処理が行なわれる。
【0177】
ステップS272では、LACR=LK×LCRの演算が行なわれる。ここで、“LK”はステップS270により読み出された正規化係数LKである。“LCR”は、ステップS272の処理が行なわれるときの、変数LCRの値である。その後、ステップS274の処理が行なわれる。
【0178】
ステップS274では、SACR=SK×SCRの演算が行なわれる。ここで、“SK”はステップS270により読み出された正規化係数SKである。“SCR”は、ステップS274の処理が行なわれるときの、変数SCRの値である。その後、ステップS276の処理が行なわれる。
【0179】
ステップS276では、LACRおよびSACRのLOG演算が行なわれる。ここで、“LACR”はステップS272により計算された値である。“SACR”はステップS274により計算された値である。その後、ステップS278の処理が行なわれる。
【0180】
ステップS278では、ステップ276により計算された2つの値(log(LACR)、log(SACR))の加算処理(log(LACR)+log(SACR))を行なうことにより、処理対象画像(処理対象画像100a.1)内の座標値Nの補正値が算出される。その後、ステップS279の処理が行なわれる。
【0181】
ステップS279では、ステップS278により算出された処理対象画像内の座標値Nの補正値が、補正値記憶部2710内の記憶領域2712および記憶領域2714のいずれかに書込まれる。その後、ステップS280の処理が行なわれる。
【0182】
ステップS280では、処理対象画像内の全ての画素のうち計算が必要な画素(直接演算対象画素(図10参照))全てに対し計算が終了したか否かが判定される。ステップS280により、処理対象画像内の全ての画素のうち計算が必要な画素(直接演算対象画素)全てに対し計算が終了したと判定されるまで、前述したステップS220〜S279の処理が繰返し行なわれる。その結果、ステップS280により、処理対象画像内の全ての画素のうち計算が必要な画素(直接演算対象画素)全てに対し計算が終了したと判定されると、この補正値算出処理は終了し、リターンする。
【0183】
このとき、補正値記憶部2710内の記憶領域2712および記憶領域2714のいずれかには、処理対象画像(処理対象画像100a.1)内の全ての直接演算対象画素にそれぞれ対応付けた複数の補正値が記憶されている。なお、処理対象画像100a.1に対する補正値算出処理が終了する時刻は、図11の時刻t4より前である。
【0184】
時刻t4において、画像処理プロセッサ2700内のメモリ制御部2750は、画像データ記憶部2230および画像データ記憶部2240のうち、1フレームの画像データ(この場合、処理対象画像100a.16の画像データ)の書込みが終了した記憶部内の記憶領域から1フレーム(静止画像)の1画素分の画像データを読み出して、バッファ2760へ出力する。
【0185】
バッファ2760は、メモリ制御部2750から出力された画像信号RGBに基づくデータの一部、たとえば、1フレーム(静止画像)の1画素分のデータを一時的に保持する。バッファ2760に画像データが記憶されると、以下に説明する輝度補正処理が行なわれる。なお、輝度補正処理は、前述の補正値算出処理により算出された、処理対象画像100a.1に対する補正値(補正値c1)を使用して、連続する処理対象画像100a.16〜100a.30に対して行なわれる(図11参照)。
【0186】
図14は、輝度補正処理のフローチャートを示す。
【0187】
図14を参照して、ステップS300では、演算部2771により画像データの読出し処理が行なわれる。具体的には、演算部2771が、バッファ2760に記憶されている1画素分のデータを読み出す。なお、バッファ2760に記憶されている1画素分のデータが、演算部2771により読み出されると、メモリ制御部2750は、読み出された1画素分の画像データの次の1画素分の画像データを読み出して、バッファ2760へ出力する。その後、ステップS310の処理が行なわれる。
【0188】
ステップS310では、演算部2771が、ステップS300により読み出されたR,G,B形式の画像データを、たとえば、HSV形式に変換する。なお、R,G,B形式の画像データを、変換する画像形式は、HSV形式に限定されることなく、たとえば、HSL(HSI)方式であってもよい。その後、ステップS320の処理が行なわれる。
【0189】
ステップS320では、演算部2771が輝度補正対象となる画素の座標値M(たとえば、M(0,0))の設定を行なう。その後、ステップS322の処理が行なわれる。
【0190】
ステップS322では、演算部2771がデータ記憶部2780に記憶されているlog演算変換データを利用して、ステップS310で変換した画像データHSVの輝度データVのlog演算を行なう。以下においては、当該log演算の結果を「log演算結果T」とも称する。演算部2771はlog演算結果Tを輝度処理部2773へ出力する。同時に、演算部2771は演算処理していない画像データHSVも輝度処理部2773へ出力する。その後、ステップS330の処理が行なわれる。
【0191】
ステップS330では、補間処理部2772がステップS320で設定された輝度補正対象となる画素の座標値Mに対応する補正値があるか否かを判定する。具体的には、補間処理部2772が、前述の補正値算出処理により補正値記憶部2710内の記憶領域2712および記憶領域2714のいずれかに書込まれた複数の補正値のうち、座標値Mに対応する補正値があるか否かを判定する。
【0192】
ステップS330により、ステップS320で設定された輝度補正対象となる画素の座標値Mに対応する補正値があると判定されると、ステップS340の処理が行なわれる。一方、ステップS330により、ステップS320で設定された輝度補正対象となる画素の座標値Mに対応する補正値がないと判定されると、ステップS350の処理が行なわれる。
【0193】
ステップS340では、補間処理部2772が、前述の補正値算出処理により補正値記憶部2710内の記憶領域2712および記憶領域2714のいずれかに書込まれた複数の補正値のうち、座標値Mに対応する補正値を読み出す。そして、補間処理部2772は、読み出した補正値を輝度処理部2773へ出力する。その後、ステップS360の処理が行なわれる。
【0194】
ステップS350では、前述した補間処理(図10参照)による補正値の生成が補間処理部2772により行なわれる。補間処理部2772は、生成した補正値を輝度処理部2773へ出力する。その後、ステップS360の処理が行なわれる。
【0195】
ステップS360では、輝度処理部2773が、演算部2771から出力されるlog演算結果Tと、補間処理部2772から出力される補正値とに基づいて、式(5)のマルチスケール網膜処理結果MSRout(x, y)を算出する。マルチスケール網膜処理結果MSRout(x, y)は、S322により算出されたlog演算結果TからステップS340で読み出した補正値またはステップ350で生成した補正値を減算することにより求めることができる。その後、ステップS362の処理が行なわれる。
【0196】
ステップS362では、輝度処理部2773が、式(6)により補正後マルチスケール網膜処理結果IMSRi(x, y)を算出する。その後、ステップS364の処理が行なわれる。
【0197】
ステップS364では、輝度処理部2773が、所定の係数に基づいて、輝度の補正を行なう。具体的には、輝度処理部2773が、演算部2771から出力された輝度データVと、ステップ362により算出した補正後マルチスケール網膜処理結果IMSRi(x, y)とに基づいて、(1−α)・V+α・IMSRi(x, y)の演算を行なう。αは、補正をかける強さを示す係数であり、“0”〜“1”の範囲の値をとる。たとえば、αが“0”ならば、座標値Mの画素に対して、輝度補正を行なわないことになる。輝度処理部2773は、演算結果をノイズ処理部2775へ出力する。同時に、輝度処理部2773は演算処理していない画像データHSVのうちの画像データHSもノイズ処理部2775へ出力する。その後、ステップS370の処理が行なわれる。
【0198】
ステップS370では、輝度処理部2773の演算による輝度値が所定の閾値以上であるとき、ノイズ処理部2775が輝度値を所定の閾値以内に収まるように処理を行なう。同時に、ノイズ処理部2775は演算処理していない画像データHSも色補正部2774へ出力する。その後、ステップS375の処理が行なわれる。
【0199】
ステップS375では、輝度処理部2775により輝度処理された輝度値に基づく色度が、所定の閾値以上であるとき、色補正部2774が色度を所定の閾値以内に収まるように処理を行なう。その後、ステップS380の処理が行なわれる。
【0200】
ステップS380では、色補正部2774がHSV形式の画像データをR,G,B形式に変換する。なお、S310において、R,G,B形式の画像データが、たとえば、HSL(HSI)方式に変換されたのであれば、ステップS380では、色補正部2774がHSL(HSI)形式の画像データをR,G,B形式に変換する。
【0201】
そして、色補正部2774が、S380により処理が行なわれた後のデータをバッファ2790へ出力する。バッファ2790は、色補正部2774から出力された、1画素分のデータを一時的に保持する機能を有する。
【0202】
そして、メモリ制御部2750が、バッファ2790に記憶されたデータを読出し、画像データ記憶部2230および画像データ記憶部2240のうち、前述した輝度補正部2770が演算処理を行なう際に使用したデータを読み出さなかった画像データ記憶部内の記憶領域にデータを書込む。その後、ステップS390の処理が行なわれる。
【0203】
ステップS390では、画像内の全ての画素に対し、前述したステップS300〜S380の処理が行なわれたか否かが判定される。具体的には、演算部2771により、画像内の全ての画素に対し、画像データの読出し処理が終了したか否かが判定される。演算部2771により、画像内の全ての画素に対し、画像データの読出し処理が終了したと判定されるまでは、前述したステップS300〜S380の処理が繰返し行なわれる。
【0204】
ステップ390において、演算部2771により、画像内の全ての画素に対し、画像データの読出し処理が終了したと判定されると、この輝度補正処理は終了し、リターンする。なお、処理対象画像100a.16に対する輝度補正処理が終了する時刻は、図11のt5より前である。
【0205】
このとき、画像データ記憶部2230および画像データ記憶部2240のうちのいずれかの記憶領域に1フレーム分の演算処理後の演算処理済画像データの書込みが終了している。その後、メモリ制御部2750は、演算処理済画像データが書込まれた記憶領域から演算処理済画像データを読出し、バッファ2792へ出力する。
【0206】
バッファ2792は、メモリ制御部2750から出力されたデータを、1フレーム(静止画像)の1ライン分の画像データを一時的に保持する。
【0207】
同期信号生成部2794は、バッファ2792に1ライン分の画像データが記憶される毎に、同期信号OHVSIGを出力する。同期信号生成部2794が、同期信号OHVSIGを出力すると同時に、バッファ2792は、記憶している補正後の補正後画像データ(演算処理済画像データ)CRRGBを出力する。
【0208】
その後、連続する処理対象画像100a.17〜100a.30の各々に対しても、前述したのと同様に輝度補正処理が行なわれる。処理対象画像100a.16〜100a.30に対し輝度補正処理が行なわれている間、処理対象画像100a.16に対して、前述した補正値算出処理が行なわれ、時刻t8の前には、当該補正値算出処理が終了する。
【0209】
以上説明したように、動画像のあるフレーム(処理対象画像100a.16)の輝度を補正するのに使用する補正値(補正値c1)は、あるフレーム(処理対象画像100a.16)より、補正値(補正値c1)を算出するのに要する時間より前に処理するフレーム(処理対象画像100a.1)を使用して算出する。そして、補正値(補正値c1)を使用して、あるフレーム(処理対象画像100a.16)の輝度を補正する。
【0210】
これにより、動画像に対し、補正値を算出するのに膨大な演算が必要な高度な輝度補正処理をリアルタイムで行なうことができる。
【0211】
また、一度算出した補正値(補正値c1)を、連続する複数のフレーム(処理対象画像100a.16〜100a.30)の各々に使用して、輝度補正処理を行なう。
【0212】
これにより、連続する複数のフレームの輝度補正処理を行なっている時間を有効に利用して補正値算出処理をすることができ、動画像に対し、補正値を算出するのに膨大な演算が必要な高度な輝度補正処理をリアルタイムで行なうことができる。
【0213】
また、一度算出した補正値(補正値c1)を、連続する複数のフレーム(処理対象画像100a.16〜100a.30)の各々に使用して輝度補正処理を行なっている期間、当該連続する複数のフレームの次のフレームの輝度補正処理に使用する補正値を算出する。
【0214】
これにより、連続する複数のフレームの輝度補正処理を行なっている時間を有効に利用して補正値算出処理をすることができ、動画像に対し、補正値を算出するのに膨大な演算が必要な高度な輝度補正処理をリアルタイムで行なうことができる。
【0215】
また、処理対象画像の有する全ての画素ではなく、一部の画素(直接演算対象画素)のみに対し、膨大な演算が必要な補正値算出処理を行ない、それ以外の画素(間接演算対象画素)の各々に対しては、近傍の少なくとも2つの画素に基づいて補正値算出する。
【0216】
これにより、1フレーム(処理対象画像)の全ての画素の補正値を算出する時間を大幅に削減することができる。
【0217】
また、膨大な演算が必要な補正値算出処理を行なう画素である直接演算対象画素の補正値は、当該直接演算対象画素を含む領域である直接演算対象領域(ラージ領域120、スモール領域140)内の全ての画素ではなく、所定の規則で間引いて選択した複数の画素に基づいて算出する。
【0218】
所定の規則は、直接演算対象画素との距離が所定距離以内にある画素は、隣合う画素の間隔が所定距離より短い小間隔になるという規則である。
【0219】
また、所定の規則は、直接演算対象画素との距離が所定距離より離れている位置にある画素は、隣合う画素の間隔が小間隔より大きくなるという規則である。
【0220】
これにより、直接演算対象画素の補正値を求めるために必要な画素の数を削減することができるので、演算量を大きく削減することができる。
【0221】
なお、本実施の形態における輝度補正システムでは、輝度補正値装置2000の代わりに高速な処理速度を有するパーソナルコンピュータ(PC)を用いてもよい。
【0222】
図15は、パーソナルコンピュータ2000aを利用したシステムの一例としての輝度補正システム20000のブロック図を示す。
【0223】
図15を参照して、輝度補正システム20000は、図1の輝度補正システム10000と比較して、輝度補正値装置2000の代わりにパーソナルコンピュータ2000aを使用する点が異なる。それ以外の構成は、輝度補正システム10000と同様なので詳細な説明は繰り返さない。
【0224】
パーソナルコンピュータ2000aは、高速な演算処理が可能なマイクロプロセッサ2200aと、データを一時的に記憶可能なメモリ2300aと、ハードディスク2400aとを備える。
【0225】
ハードディスク2400aには、マイクロプロセッサ2000aに所定の処理を行なわせる画像処理プログラム2500aが記憶されている。
【0226】
画像処理プログラム2500aは、パーソナルコンピュータ2000a(マイクロプロセッサ2000a)に前述した正規化係数算出処理、補正値算出処理、輝度補正処理、輝度補正装置2000が行なうその他の処理を実行させるためのプログラムである。
【0227】
マイクロプロセッサ2000aは、ハードディスク2400aから画像処理プログラム2500aを読み込んで、メモリ2300aをワークメモリとして使用し、前述した正規化係数算出処理、補正値算出処理、輝度補正処理、輝度補正装置2000が行なうその他の処理を実行する。すなわち、画像処理プログラム2500aは、パーソナルコンピュータ2000aを輝度補正装置2000として機能させるためのプログラムである。
【0228】
以上のように、パーソナルコンピュータ2000aに前述した正規化係数算出処理、補正値算出処理、輝度補正処理、輝度補正装置2000が行なうその他の処理を実行させることにより、輝度補正システム10000と同様な効果を得ることができる。
【0229】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0230】
【図1】輝度補正装置を利用したシステムの一例としての輝度補正システムのブロック図を示す。
【図2】輝度補正処理部のブロック図を示す。
【図3】画像処理プロセッサの内部の詳細なブロック図を示す。
【図4】画像処理プロセッサの内部の詳細なブロック図を示す。
【図5】複数のブロックに分割された画像の状態を示す図である。
【図6】前述した注目画素からの距離に応じて変化する周辺関数の値を示す図である。
【図7】注目画素からの距離による周辺関数算出領域を変化させた状態を示す図である。
【図8】注目画素に対して補正値を計算する際に使用する周辺画素を有する領域を示す図である。
【図9】補正値算出用周辺画素を示す図である。
【図10】所定のサイズのブロック毎に算出する補正値を利用して、補正値を算出していない画素の補正値を算出する補間処理を説明するための図である。
【図11】動画像輝度補正処理を説明するための図である。
【図12】正規化係数算出処理のフローチャートを示す。
【図13】補正値算出処理のフローチャートを示す。
【図14】輝度補正処理のフローチャートを示す。
【図15】パーソナルコンピュータを利用したシステムの一例としての輝度補正システムのブロック図を示す。
【符号の説明】
【0231】
2000,2200 輝度補正装置、2000a パーソナルコンピュータ、2230, 2240,2260 データ記憶部、2700,2800 画像処理プロセッサ、2710 補正値記憶部、2770 輝度補正部、2810 補正値演算部、2771,2814 演算部、2772 補間処理部、2773 輝度処理部、2816 データ記憶部、10000,20000 輝度補正システム。
【技術分野】
【0001】
本発明は、静止画像または動画像のダイナミックレンジを改善することができる輝度補正装置、コンピュータを輝度補正装置として機能させるためのプログラムに関する。
【背景技術】
【0002】
画像の局所的な情報に基づいて、最適なダイナミックレンジを有する画像になるように輝度を補正するといった、人間の眼球の網膜をモデル化した網膜法が提案されている。この網膜法は、画像全体または画像内の一部の輝度が低く暗いときは該当する箇所の輝度を高くし、画像全体または画像内の一部の輝度が高く明るいときは該当する箇所の輝度を低くすることによって、画像を見やすくする手法である。
【0003】
網膜法には、(Daniel J.Jobson, Z.Rahman, and G.A.Woodell :"Properties and Performance of a Center/Surround Retinex," IEEE Transactions on Image Processing, vol.6, pp.451-462, March 1997.)(非特許文献1)に記載のシングルスケール網膜法(Single Scale Retinex:SSR)、および、(Daniel J.Jobson, Z.Rahman, and G.A.Woodell :"A Multiscale Retinex for Bridging the Gap Between Color Images and the Human Observation of Scenes," IEEE Transactions on Image Processing, vol.6, pp.965-976, July 1997.)(非特許文献2)に記載のマルチスケール網膜法(Multi Scale Retinex:MSR)が提案されている。
【0004】
シングルスケール網膜法では、処理の対象となる横xドット、縦yドットのサイズの画像(以下においては、「処理対象画像」とも称する)における、処理と対象となる画素(以下においては「注目画素」とも称する)の輝度値Ii(x, y)を、注目画素の周辺の画素(以下においては「周辺画素」とも称する)の情報に基づいて得られる周辺関数F(x, y)によって補正するものである。
【0005】
シングルスケール網膜法により、処理対象画像に対し演算処理が行なわれた後の処理結果(以下においては、「シングルスケール網膜処理結果」ともいう)Ri(x, y)は、次の(1)式によって表される。
【0006】
Ri(x, y)=log(Ii(x, y))-log[F(x, y)* Ii (x, y)] ・・・(1)
ここで、(1)式のIi(x, y)は処理対象画像内の座標(x, y)における輝度値の値を示す。“ * ” は畳み込み演算を示す。(1)式の周辺関数F(x, y)は、注目画素の情報と周辺画素の情報とに基づく関数であり、次の(2)式によって表される。
【0007】
【数1】
【0008】
r2は、r2=x2+y2で表され、rは注目画素と周辺画素との距離を示す。Kは、正規化係数である。また、周辺関数F(x,y)は、次の(3)式を満たす。
【0009】
【数2】
【0010】
すなわち、周辺関数の総合計が“1”となるように定められる。cは注目画素の周辺領域の面積によって決められる。
【0011】
シングルスケール網膜処理結果Ri(x, y)は、(1)式、(2)式および(3)式によって求められる。そして、次の(4)式によって、シングルスケール網膜処理結果Ri(x, y)が、ゲイン(Gain)およびオフセット(Offset)によって補正される。(1)式、(2)式、(3)式および(4)式による演算が、処理対象画像の有する全ての画素に対して行なわれることにより、シングルスケール網膜法の処理対象は適切なダイナミックレンジを有する画像に補正される。なお、以下においては補正後のシングルスケール網膜処理結果Ri(x, y)を「補正後シングルスケール網膜処理結果IRi(x, y)」とも称する。
【0012】
IRi(x, y)=Gain x Ri(x, y) + Offset ・・・(4)
しかし、シングルスケール網膜法は、処理対象画像の色再現とコントラストを同時に改善できないという問題がある。そこで、処理対象画像の色再現とコントラストを同時に改善できるように、各々が異なるcを持つN種類のシングルスケール網膜処理結果Ri(x, y)を組み合わせ、最後の出力とするマルチスケール網膜法が提案された。マルチスケール網膜法により、処理対象画像に対し演算処理が行なわれた後の処理結果(以下においては、「マルチスケール網膜処理結果」ともいう)MSRout(x, y)は、次の(5)式によって表される。
【0013】
【数3】
【0014】
ここで、(5)式のNはスケールの数(種類)である。ここで、「スケール」とは、周辺関数の直径に相当する。また、WnはN種類のスケールのうち、n番目のスケールの重み係数であり、通常は1/nである。Fn(x, y)は、シングルスケール網膜法の周辺関数F(x, y) と同様である。(5)式より、マルチスケール網膜処理結果MSRout(x, y)では、N種類全ての網膜処理結果が加算される。
【0015】
そして、(5)式によって求められたマルチスケール網膜処理結果MSRout(x, y)が、シングルスケール網膜法と同様、次の(6)式によって、ゲイン(Gain)およびオフセット(Offset)によって補正される。(2)式、(3)式、(5)式および(6)式による演算が、処理対象画像の有する全ての画素に対して行なわれることにより、マルチスケール網膜法の処理対象は適切なダイナミックレンジを有する画像に補正される。なお、以下においては補正後のマルチスケール網膜処理結果MSRout(x, y)を「補正後マルチスケール網膜処理結果IMSRi(x, y)」とも称する。
【0016】
マルチスケール網膜法では、N種類のスケールの各々に対し、マルチスケール網膜処理結果を求めるための演算が必要である。マルチスケール網膜処理結果を求めるには、(2)式、(3)式、(5)式および(6)式による演算が、処理対象画像の有する全ての画素に対して行なう必要があり、膨大な演算量が必要となる。
【0017】
そこで、マルチスケール網膜法における演算量を削減する技術が、特開2001−78025(特許文献1)に開示されている。
【0018】
IMSRi(x, y)=Gain × MSRout(x, y) + Offset ・・・(6)
【特許文献1】特開2001−78025号公報
【非特許文献1】Daniel J.Jobson, Z.Rahman, and G.A.Woodell :"Properties and Performance of a Center/Surround Retinex," IEEE Transactions on Image Processing, vol.6, pp.451-462, March 1997.
【非特許文献2】Daniel J.Jobson, Z.Rahman, and G.A.Woodell :"A Multiscale Retinex for Bridging the Gap Between Color Images and the Human Observation of Scenes," IEEE Transactions on Image Processing, vol.6, pp.965-976, July 1997.
【発明の開示】
【発明が解決しようとする課題】
【0019】
特開2001−78025(特許文献1)に開示されている技術は、静止画像に対して行なうものである。そのため、動画像に対し、マルチスケール網膜法のような高度な輝度補正処理をリアルタイムで行なうには、特開2001−78025(特許文献1)に開示されている技術を利用することによる演算量の削減よりも、さらなる演算量の削減が必要となる。
【0020】
本発明は、上述の問題点を解決するためになされたものであって、その目的は、動画像に対し、リアルタイムで高度な輝度補正処理を行なうことが可能な輝度補正装置を提供することである。
【0021】
本発明の他の目的は、動画像に対し、リアルタイムで高度な輝度補正処理を行なうことが可能な輝度補正装置としてコンピュータを機能させることができるプログラムを提供することである。
【課題を解決するための手段】
【0022】
上記の課題を解決するために、この発明のある局面に従うと、輝度補正装置は、各々が所定期間毎に順次表示されることにより動画像となる、第1番目から第n(n:自然数)番目まで予め順序付けられた複数の画像の輝度を補正する。この輝度補正装置は、複数の画像の各々の輝度を補正するための補正値を算出する補正値演算部と、補正値演算部が第(n−m)番目(m:nより小さい自然数)の画像に基づいて算出した補正値を利用して第n番目の画像の輝度を補正する輝度補正部とを備える。
【0023】
好ましくは、輝度補正部は、補正値演算部が(n−m)番目の画像に基づいて算出した、補正値を利用して第n番目から第(n+p)番目(p:m以下の自然数)の画像の輝度を補正する。
【0024】
好ましくは、輝度補正部が第n番目から第(n+p)番目の画像の輝度を補正する間、補正値演算部は(n+p+1)番目以降の画像を補正するための補正値を、第n番目から第(n+p)番目の画像のいずれかに基づいて算出する。
【0025】
好ましくは、複数の画像の各々は、複数の画素から構成され、複数の画素は、所定間隔毎に配列された複数の直接演算対象画素と、複数の間接演算対象画素とを含み、補正値演算部は、複数の直接演算対象画素の各々に対し、直接演算対象画素を含む領域である直接演算対象領域の内部の複数の直接演算対象領域内画素の輝度値に基づいて補正値を算出し、複数の間接演算対象画素の各々に対しては、間接演算対象画素の近傍の少なくとも2つの直接演算対象画素に基づいて補正値を算出する。
【0026】
好ましくは、補正値演算部は、複数の直接演算対象領域内画素の一部である複数の直接演算対象領域内間引き画素の輝度値に基づいて補正値を算出し、複数の直接演算対象領域内間引き画素のうち、直接演算対象画素との距離が所定距離以内である直接演算対象領域内間引き画素は、隣合う画素の間隔が所定距離より短い小間隔になるよう複数の画素から選択された画素であり、複数の直接演算対象領域内間引き画素のうち、直接演算対象画素との距離が所定距離より長い直接演算対象領域内間引き画素は、隣合う画素の間隔が小間隔より大きくなるよう複数の画素から選択された画素である。
【0027】
この発明の他の局面に従うと、プログラムは、各々が所定期間毎に順次表示されることにより動画像となる、第1番目から第n(n:自然数)番目まで予め順序付けられた複数の画像の輝度を補正する輝度補正装置として、記憶部を備えるコンピュータを機能させるためのプログラムである。このプログラムはコンピュータに、コンピュータの記憶部に格納されているデータを読み出して、複数の画像の各々の輝度を補正するための補正値を算出するステップと、補正値を算出するステップが第(n−m)番目(m:nより小さい自然数)の画像に基づいて算出した補正値を利用して第n番目の画像の輝度を補正するステップとを実行させる。
【0028】
好ましくは、画像の輝度を補正するステップは、補正値を算出するステップが(n−m)番目の画像に基づいて算出した、補正値を利用して第n番目から第(n+p)番目(p:m以下の自然数)の画像の輝度を補正する。
【0029】
好ましくは、画像の輝度を補正するステップが第n番目から第(n+p)番目の画像の輝度を補正する間、補正値を算出するステップは(n+p+1)番目以降の画像を補正するための補正値を、第n番目から第(n+p)番目の画像のいずれかに基づいて算出する。
【0030】
好ましくは、複数の画像の各々は、複数の画素から構成され、複数の画素は、所定間隔毎に配列された複数の直接演算対象画素と、複数の間接演算対象画素とを含み、補正値を算出するステップは、複数の直接演算対象画素の各々に対し、直接演算対象画素を含む領域である直接演算対象領域の内部の複数の直接演算対象領域内画素の輝度値に基づいて補正値を算出し、複数の間接演算対象画素の各々に対しては、間接演算対象画素の近傍の少なくとも2つの直接演算対象画素に基づいて補正値を算出する。
【0031】
補正値を算出するステップは、複数の直接演算対象領域内画素の一部である複数の直接演算対象領域内間引き画素の輝度値に基づいて補正値を算出し、複数の直接演算対象領域内間引き画素のうち、直接演算対象画素との距離が所定距離以内である直接演算対象領域内間引き画素は、隣合う画素の間隔が所定距離より短い小間隔になるよう複数の画素から選択された画素であり、複数の直接演算対象領域内間引き画素のうち、直接演算対象画素との距離が所定距離より長い直接演算対象領域内間引き画素は、隣合う画素の間隔が小間隔より大きくなるよう複数の画素から選択された画素である。
【発明の効果】
【0032】
本発明に係る輝度補正装置によると、動画像の第n番目の画像の輝度を補正するために使用する補正値は、第(n−m)番目の画像に基づいて算出する。そして、第(n−m)番目の画像に基づいて算出した補正値を利用して第n番目の画像の輝度を補正する。したがって、輝度補正装置は、動画像に対し、補正値を算出するのに膨大な演算が必要な高度な輝度補正処理をリアルタイムで行なうことができる。
【0033】
本発明に係るプログラムによると、コンピュータを、動画像の第n番目の画像の輝度を補正するために使用する補正値は、第(n−m)番目の画像に基づいて算出し、第(n−m)番目の画像に基づいて算出した補正値を利用して第n番目の画像の輝度を補正する輝度補正装置として機能させることができる。したがって、輝度補正装置として、コンピュータを機能させるためのプログラムは、動画像に対し、補正値を算出するのに膨大な演算が必要な高度な輝度補正処理をリアルタイムで実行することができる。
【発明を実施するための最良の形態】
【0034】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【0035】
図1は、輝度補正装置を利用したシステムの一例としての輝度補正システム10000のブロック図を示す。
【0036】
図1を参照して、輝度補正システム10000は、カメラ1000と、輝度補正装置2000と、画像表示部3000とを備える。
【0037】
カメラ1000は、動画または静止画を撮影し、アナログ映像信号またはデジタル映像信号に変換して、輝度補正装置2000へ出力する。以下においては、アナログ映像信号およびデジタル映像信号を総括的に映像信号とも称する。
【0038】
輝度補正装置2000は、前述したマルチスケール網膜法による輝度補正処理を行なう。以下においては、輝度補正装置2000で処理される映像信号に基づく画像を「処理対象画像」とも称する。
【0039】
輝度補正装置2000は、データ入力部2100と、輝度補正処理部2200と、画像処理部2300と、データ出力部2400とを含む。
【0040】
データ入力部2100は、カメラ1000から出力された映像信号を受け、輝度補正処理部2200へ出力するためのインターフェースである。
【0041】
輝度補正処理部2200は、データ入力部2100から出力された映像信号に対し後述する輝度補正処理を行ない、画像処理部2300へ出力する。
【0042】
画像処理部2300は、輝度補正処理部2200から出力された映像信号に対し所定の画像処理を行ない、データ出力部2400へ出力する。
【0043】
データ出力部2400は、画像処理部2300から出力された映像信号を受け、画像表示部3000へ出力するためのインターフェースである。
【0044】
画像表示部3000は、データ出力部2400から出力された映像信号に基づいて画像を表示する。画像表示部3000は、液晶ディスプレイ(LCD(Liquid Crystal Display))、CRT(Cathode Ray Tube)、FED(Field Emission Display)、PDP(Plasma Display Panel)、有機ELディスプレイ(Organic Electro luminescence Display)、ドットマトリクス等その他の画像表示方式の表示機器のいずれであってもよい。
【0045】
なお、輝度補正システム10000は、上記構成に限定されることなくその構成は任意である。たとえば、カメラ1000の内部に輝度補正処理部2200を設けるような構成であってもよい。また、画像表示部3000の内部に輝度補正処理部2200を設けるような構成であってもよい。
【0046】
図2は、輝度補正処理部2200のブロック図を示す。
【0047】
図2を参照して、輝度補正処理部2200は、同期分離回路2210と、画像処理プロセッサ2700と、画像処理プロセッサ2800と、画像データ記憶部2230, 2240と、データ記憶部2260と、データ通信部2270とを備える。
【0048】
同期分離回路2210は、データ入力部から出力された映像信号IMGを、画像信号RGBと、同期信号HVSIGとに分離して、画像処理プロセッサ2700、2800へ出力する。なお、同期信号HVSIGは、水平同期信号と垂直同期信号と画像信号に同期したクロック信号とを含んだ信号である。
【0049】
データ記憶部2260は、データを一時的に記憶可能なRAM(Random Access Memory)、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、SDRAM(Synchronous DRAM)、ダブルデータレートモードという高速なデータ転送機能を持ったSDRAMであるDDR−SDRAM(Double Data Rate SDRAM)、Rambus社が開発した高速インターフェース技術を採用したDRAMであるRDRAM(Rambus Dynamic Random Access Memory)、Direct−RDRAM(Direct Rambus Dynamic Random Access Memory)、その他のデータを記憶保持可能な構成を有する回路のいずれであってもよい。データ記憶部2260は、画像処理プロセッサ2800によってアクセスされる。
【0050】
画像データ記憶部2230は、データ記憶部2260と比較して、画像処理プロセッサ2800の代わりに、画像処理プロセッサ2700によってアクセスされる点が異なる。それ以外の構成および機能は、データ記憶部2260と同様なので詳細な説明は繰り返さない。
【0051】
画像データ記憶部2240は、データ記憶部2260と比較して、画像処理プロセッサ2800の代わりに、画像処理プロセッサ2700によってアクセスされる点が異なる。それ以外の構成および機能は、データ記憶部2260と同様なので詳細な説明は繰り返さない。
【0052】
なお、本実施の形態において、画像処理プロセッサ2700は、画像データ記憶部2230および画像データ記憶部2240といった、2つの画像データ記憶部にアクセスする構成に限定されるものではなく、その構成は任意である。たとえば、画像データ記憶部が高速にアクセスが可能なもの(たとえば、DDR−SDRAM)であれば、画像処理プロセッサ2700は、1つの画像データ記憶部のみにアクセスする構成でもよい。
【0053】
また、本実施の形態においては、画像データ記憶部2230および画像データ記憶部2240は、画像処理プロセッサ2700の外部に設けられている構成としているが、その構成は任意である。たとえば、画像データ記憶部2230および画像データ記憶部2240は、画像処理プロセッサ2700に内蔵されていてもよい。
【0054】
データ通信部2270は、RS−232C(Recommended Standard 232 version C)、RS−422(Recommended Standard 422)、USB(Universal Serial Bus)1.1、USB2.0、その他シリアル転送を行なう通信用インターフェースのいずれであってもよい。
【0055】
また、データ通信部2270は、セントロニクス仕様、IEEE1284(Institute of Electrical and Electronic Engineers 1284)、その他パラレル転送を行なう通信用インターフェースのいずれであってもよい。
【0056】
また、データ通信部2270は、IEEE1394、その他SCSI規格を利用した通信用インターフェースのいずれであってもよい。
【0057】
また、データ通信部2270は、IrDA(Infrared Data Association)1.0、IrDA1.1、IrDA1.2、その他赤外線を利用した近距離のデータ通信を行なう通信用インターフェースのいずれであってもよい。
【0058】
また、データ通信部2270は、イーサネット(登録商標)、無線LANの規格であるIEEE802.11a、IEEE802.11b、IEEE802.11g、その他有線または無線のLAN技術を利用してデータ通信を行なう通信用インターフェースのいずれであってもよい。
【0059】
データ通信部2270は、輝度補正処理部2200または輝度補正装置2000の外部に設けられた制御PC4000とデータの授受を行なう。
【0060】
制御PC4000は、データ通信部2270を介して、画像処理プロセッサ2700および画像処理プロセッサ2800へ制御プラグラムや設定データ等のデータを送信する。なお、本発明において、データ通信部2270とデータの授受をするものは、制御PC4000に限定されるものではない。制御PC4000の代わりに、たとえば、可変抵抗またはプッシュボタンなどのインターフェースをもった制御装置であってもよい。
【0061】
図3は、画像処理プロセッサ2800の内部の詳細なブロック図を示す。
【0062】
図3を参照して、画像処理プロセッサ2800は、プログラミングすることができるLSI(Large Scale Integration)であるFPGA(Field Programmable Gate Array)、特定の用途のために設計、製造される集積回路であるASIC(Application Specific Integrated Circuit)、画像処理専用LSI、マイクロプロセッサ(Microprocessor)、その他の演算機能を有する回路のいずれであってもよい。
【0063】
画像処理プロセッサ2800は、補正値演算部2810と、バッファ2830と、アドレス生成部2840と、メモリ制御部2850と、パラメータ設定部2820とを含む。
【0064】
バッファ2830は、同期分離回路2210から出力された画像信号RGBに基づくデータの一部、たとえば、動画像の1フレーム(静止画像)の1ライン分の画像データを一時的に保持する機能を有する。なお、バッファ2830は、動画像の1フレーム分の画像データを一時的に保持する機能を有してもよい。
【0065】
アドレス生成部2840は、同期信号HVSIGが入力される毎に動作するカウンタ(図示せず)を内部に有する。アドレス生成部2840は、同期信号HVSIGが入力される毎に、カウンタを動作させ、データ記憶部2260にデータを記憶させるのに必要なアドレスを生成し、メモリ制御部2850へ出力する。
【0066】
メモリ制御部2850は、バッファ2830が一時的に記憶しているデータを、アドレス生成部2840から入力されたアドレスに基づいて、データ記憶部2260に書込む。また、メモリ制御部2850は、所定の時間毎にデータ記憶部2260に記憶されているデータを読み出して、補正値演算部2810へ出力する。
【0067】
パラメータ設定部2820は、データ通信部2270から伝達されたデータに基づいて補正値演算部2810が使用するパラメータ(設定値)等の変更を行なう。
【0068】
補正値演算部2810は、演算部2814、データ一時記憶部2812、データ記憶部2816を有する。
【0069】
データ一時記憶部2812は、データ記憶部2260と同様な構成を有し、データを一時的に記憶する回路である。
【0070】
データ記憶部2816は、読み出し専用記憶装置であるROM(Read Only Memory)、記憶の消去・書き込みを何度でも行えるEPROM(Erasable Programmable Read Only Memory)、電気的に内容を書き換えることができるEEPROM(Electronically Erasable and Programmable Read Only Memory)、紫外線を使って記憶内容の消去・再書き込みを何度でも行えるUV−EPROM(Ultra-Violet Erasable Programmable Read Only Memory)、その他のデータを記憶可能な構成を有する回路のいずれであってもよい。
【0071】
データ記憶部2816は、後述する周辺関数データLD,SDおよび制御プログラムを予め記憶している。
【0072】
演算部2814は、データ一時記憶部2812をワークメモリとして利用する。また、演算部2814は、データ記憶部2816に記憶されている制御プログラムに従って、メモリ制御部2850から出力されたデータに基づいて、後述する正規化係数算出処理および補正値算出処理を行なう。
【0073】
正規化係数算出処理では、後述する補正値算出処理で使用する正規化係数を算出する処理を行なう。補正値算出処理では、前述したマルチスケール網膜法により画像の輝度を適切に補正するための補正値を算出する。
【0074】
また、詳細は後述するが、演算部2814は、補正値算出処理により算出した補正値を画像処理プロセッサ2700内に設けられた後述する補正値記憶部2710へ書込む。
【0075】
図4は、画像処理プロセッサ2700の内部の詳細なブロック図を示す。
【0076】
図4を参照して、画像処理プロセッサ2700は、前述した画像処理プロセッサ2800と同様な機能を有するプロセッサである。なお、本実施の形態においては、輝度補正処理部2200内に2つの画像処理プロセッサを設けている構成としているが、その構成は任意である。たとえば、画像処理プロセッサが非常に高速なもの、または、十分な回路規模および十分な入出力ピン数を有するものであれば、2つではなく、1つでもよい。
【0077】
画像処理プロセッサ2700は、バッファ2730と、アドレス生成部2740と、メモリ制御部2750と、バッファ2760と、データ記憶部2780と、補正値記憶部2710と、パラメータ設定部2720と、輝度補正部2770と、バッファ2790と、バッファ2792と、同期信号生成部2794とを含む。
【0078】
バッファ2730は、前述したバッファ2830と同様な構成および機能を有するので詳細な説明は繰り返さない。
【0079】
アドレス生成部2740は、同期信号HVSIGが入力される毎に動作するカウンタ(図示せず)を内部に有する。アドレス生成部2740は、同期信号HVSIGが入力される毎に、カウンタを動作させ、画像データ記憶部2230または画像データ記憶部2240にデータを記憶させるのに必要なアドレスを生成し、メモリ制御部2750へ出力する。
【0080】
メモリ制御部2750は、前述した画像データ記憶部2230および画像データ記憶部2240に対しデータの書込み動作、データの読出し動作を行なう。
【0081】
画像データ記憶部2230は、1フレームの画像データを記憶可能な記憶領域2232,2234を有する。
【0082】
画像データ記憶部2240は、1フレームの画像データを記憶可能な記憶領域2242,2244を有する。
【0083】
メモリ制御部2750は、バッファ2730が一時的に記憶しているデータを、アドレス生成部2740から入力されたアドレスに基づいて、1フレーム分の画像単位毎に、画像データ記憶部2230と、データ記憶部2240とを利用し、交互にデータの書込み対象を切替える。
【0084】
たとえば、メモリ制御部2750が、あるフレームの画像データを画像データ記憶部2230へ書込んだ場合、メモリ制御部2750は、次のフレームの画像データをデータ記憶部2240へ書込む。このように、記憶部を2つ設け、データの書込みの対象を所定の単位(この場合は、1フレームの画像データ)毎に変えることにより、高速でデータを処理することが可能となる。
【0085】
メモリ制御部2750が、画像データを画像データ記憶部2230に書込むときは、記憶領域2232または記憶領域2234がデータの書込み対象の領域となる。
【0086】
一方、メモリ制御部2750が、画像データをデータ記憶部2240に書込むときは、記憶領域2242または記憶領域2244がデータの書込み対象の領域となる。
【0087】
また、メモリ制御部2750は、画像データ記憶部2230および画像データ記憶部2240のうち、1フレームの画像データの書込みが終了した記憶部内の記憶領域から1フレーム(静止画像)の1画素分の画像データを読み出して、バッファ2760へ出力する。
【0088】
バッファ2760は、メモリ制御部2750から出力された画像信号RGBに基づくデータの一部、たとえば、1フレームの1画素分のデータを一時的に保持する機能を有する。
【0089】
データ記憶部2780は、前述したデータ記憶部2816と同様な構成および機能を有する。また、データ記憶部2780は、log演算変換データを予め記憶している。ここで、log演算変換データは、予め計算していた複数種類のlog演算結果のデータである。
【0090】
補正値記憶部2710は、1フレームの画像に使用するデータを記憶可能な記憶領域2712,2714を有する。詳細は後述するが、前述した演算部2814は、1フレームの画像に使用するデータ毎に、記憶領域2712と、記憶領域2714とを利用して、交互にデータの書込み対象を切替える。
【0091】
たとえば、演算部2814が、あるフレームに使用するデータを記憶領域2712へ書込んだ場合、演算部2814は、次のフレームに使用するデータを記憶領域2714へ書込む。
【0092】
パラメータ設定部2720は、データ通信部2270から伝達されたデータに基づいて輝度補正部2770が使用するパラメータ(設定値)等の変更を行なう。
【0093】
輝度補正部2770は、演算部2771と、補間処理部2772と、輝度処理部2773と、ノイズ処理部2775と、色補正部2774とを有する。
【0094】
詳細は後述するが、演算部2771は、バッファ2760に記憶されているデータを読み出して、データ記憶部2780に記憶されているlog演算変換データを利用して、演算処理を行なって、演算結果のデータを輝度処理部2773へ出力する。
【0095】
詳細は後述するが、補間処理部2772は、補正値記憶部2710内の記憶領域2712および記憶領域2714のうち、1フレームの画像に使用するデータの書込みが終了した記憶領域内からデータを読み出して、後述する補間処理を行なって、補間処理の結果のデータを輝度処理部2773へ出力する。
【0096】
詳細は後述するが、輝度処理部2773は、演算部2771から出力される演算結果のデータと、補間処理部2772から出力されるデータとに基づいて、1フレーム(静止画像)の1画素に対して、輝度処理を行なう。
【0097】
ノイズ処理部2775は、輝度処理部2773により輝度処理された画素に対して、たとえば、所定の閾値以上に輝度が変化されたとき、輝度の変化を閾値以内に収まるように処理を行なう。
【0098】
色補正部2774は、たとえば、ノイズ処理部2775により輝度処理された輝度値に基づく色度が、所定の閾値以上であるとき、色度を所定の閾値以内に収まるように処理を行なう。色補正部2774は、処理を行なった後のデータをバッファ2790へ出力する。
【0099】
バッファ2790は、色補正部2774から出力された、1画素分のデータを一時的に保持する機能を有する。
【0100】
そして、メモリ制御部2750が、バッファ2790に記憶されたデータを読出し、画像データ記憶部2230および画像データ記憶部2240のうち、前述した輝度補正部2770が演算処理を行なう際に使用したデータを読み出さなかった画像データ記憶部内の記憶領域にデータを書込む。
【0101】
輝度補正部2770が演算処理を、1フレームの画像内の画素すべてに行ない、画像データ記憶部2230および画像データ記憶部2240のうちのいずれかの記憶領域に1フレーム分の演算処理後の画像データ(以下においては、「演算処理済画像データ」とも称する)の書込みが終了すると、メモリ制御部2750は、当該記憶領域から演算処理済画像データを読出し、バッファ2792へ出力する。
【0102】
バッファ2792は、メモリ制御部2750から出力されたデータを、1フレーム(静止画像)の1ライン分の画像データを一時的に保持する機能を有する。なお、バッファ2792は、1フレーム分の画像データを一時的に保持する機能を有してもよい。
【0103】
同期信号生成部2794は、バッファ2792に1ライン分の画像データが記憶される毎に、同期信号OHVSIGを出力する。同期信号生成部2794が、同期信号OHVSIGを出力すると同時に、バッファ2792は、記憶している補正後の画像データ(以下においては、「補正後画像データ」とも称する)CRRGBを出力する。
【0104】
図5は、複数のブロックに分割された画像の状態を示す図である。
【0105】
図5(a)は、輝度補正装置2000で処理される処理対象画像100を示す図である。
【0106】
図5(a)を参照して、処理対象画像100は、たとえば、横640ドット、縦480ドットの画像であるとする。処理対象画像100は、縦および横のサイズが同じで、各々が同一のサイズの複数のブロックに分割され、当該複数のブロック毎に前述したマルチスケール網膜法による演算処理が行なわれる。
【0107】
図5(b)は、処理対象画像100を複数のブロックに分割したうちの1つのブロック分割画像100nを示す図である。詳細は後述するが、補正値算出処理により算出される補正値は、ブロック分割画像100n毎に算出される。
【0108】
図5(b)を参照して、ブロック分割画像100nは、説明を分かりやすくするために、たとえば、横4ドット、縦4ドットからなる16個の画素を有するものとする。
【0109】
図6は、前述した注目画素からの距離に応じて変化する周辺関数の値を示す図である。
【0110】
図6(a)は、(2)式に、x、yの値を代入したときの周辺関数の値を視覚化した図を示す。
【0111】
図6(a)を参照して、x軸、y軸は、注目画素からの距離(単位はピクセル)を示す。z軸は、(2)式にx、yの値を代入したときの周辺関数の値を示す。なお、図6(a)における、注目画素の座標は、(0,0)である。図6(a)によると、周辺関数の値は、注目画素からの距離が離れるに従って指数関数的に低下していることが分かる。
【0112】
図6(b)は、図6(a)をx、y面から見た状態を示す。
【0113】
図6(b)を参照して、周辺関数の値は、注目画素160からの距離に応じて、低下する。なお、本実施の形態による周辺関数を計算する領域(以下においては「周辺関数算出領域」とも称する)120は、横、縦のサイズが等しい正方形の領域を右に45度回転させた領域とする。周辺関数算出領域120の最長部の長さは、400ピクセルとする。なお、周辺関数算出領域の形は、ひし形に限定されることなく、円であってもよい。
【0114】
図6(c)は、図6(a)のグラフを直線で近似した図である。以下においては、当該近似した図を、「周辺関数近似モデル図」とも称する。なお、周辺関数近似モデル図に基づく周辺関数の値は予め計算された値(以下においては、「算出済周辺関数値」とも称する)であり、周辺関数算出領域120内の注目画素からの相対座標値の各々に対応付けてデータ記憶部2816に記憶されている。なお、データ記憶部2816には、後述するスモール領域(周辺関数算出領域)140のサイズおよび後述するラージ領域(周辺関数算出領域)120のサイズにそれぞれ基づく、2種類の算出済周辺関数値が記憶されている。これにより、周辺関数を計算する処理が必要なくなり、補正値を求めるための計算量を大きく削減できる。
【0115】
図6(d)は、図6(c)をx、y面から見た状態を示す。なお、周辺関数近似モデル図は、縦、横に線対称の形をしているので(図6(d)参照)、データ記憶部2816には、周辺関数近似モデル図に基づく算出済周辺関数値全ての4分の1のみを記憶させておいてもよい。この場合でも、注目画素からの相対座標値の全てに対し、対応する周辺関数の値を読み出すことができる。
【0116】
図7は、注目画素160からの距離による周辺関数算出領域を変化させた状態を示す図である。
【0117】
図7を参照して、本実施の形態においては、マルチスケール網膜法による演算処理を行なうので、注目画素160からの距離によって、2つのサイズの周辺関数算出領域を使用する。なお、周辺関数算出領域は、3つ以上のサイズを使用してもよい。
【0118】
周辺関数算出領域140の最長部の長さは、一例として160ピクセルである。なお、以下においては、周辺関数算出領域140を「スモール領域140」とも称する。
【0119】
周辺関数算出領域120の最長部の長さは、一例として400ピクセルである。なお、以下においては、周辺関数算出領域120を「ラージ領域120」とも称する。
【0120】
図8は、注目画素160に対して補正値を計算する際に使用する周辺画素を有する領域を示す図である。以下においては、補正値を計算する際に使用する周辺画素を「補正値算出用周辺画素」とも称する。なお、補正値算出用周辺画素の数は、注目画素160の座標値によって異なる。
【0121】
図8を参照して、スモール領域140に対する補正値(以下においては、「スモール領域補正値」とも称する)を計算する際、処理対象画像100のうち、スモール領域140に囲まれた斜線で示される領域142内の複数の画素(以下においては、「スモール領域内周辺画素」とも称する)各々の輝度値を使用する。
【0122】
また、ラージ領域120に対する補正値(以下においては、「ラージ領域補正値」とも称する)を計算する際、処理対象画像100のうち、ラージ領域120に囲まれた縦線で示される領域122および領域142内の複数の画素(以下においては、「ラージ領域内周辺画素」とも称する)各々の輝度値を使用する。注目画素160に対する補正値は、スモール領域補正値と、ラージ領域補正値とを加算した値となる。
【0123】
なお、スモール領域内周辺画素およびラージ領域内周辺画素の数は、注目画素160の座標によって変化する。たとえば、注目画素160の座標が、処理対象画像100の中央に位置したとき、スモール領域内周辺画素およびラージ領域内周辺画素の数は最大となる。
【0124】
本実施の形態では、マルチスケール網膜法における演算量を削減するために、補正値を算出する際、スモール領域内画素およびラージ領域内画素の全てではなく、適度に間引いた一部の画素を使用することにより演算量の削減を図る。
【0125】
図6(a)に示したように、周辺関数の値は、注目画素との距離が離れている画素ほど小さくなる。周辺関数の値が小さければ、補正値の値は小さくなり、輝度補正の影響が少なくなる。したがって、注目画素からの距離が離れるにしたがって、間引きの度合いを大きくするように、補正値算出用周辺画素を選択する。
【0126】
図9は、補正値算出用周辺画素を示す図である。
【0127】
図9を参照して、スモール領域140内においては、補正値算出用周辺画素は、隣合う2つの画素の間隔が、たとえば、16ピクセルになるようにスモール領域内周辺画素から選択した画素(以下においては、「スモール領域内間引き画素」とも称する)である。
【0128】
したがって、スモール領域内間引き画素のうちのスモール領域内周辺画素を用いて、前述の(2)式、(3)式、(5)式による演算を行なうことにより、注目画素160に対し、スモール領域補正値を算出することができる。
【0129】
また、ラージ領域120内においては、補正値算出用周辺画素は、隣合う2つの画素の間隔が、たとえば、16ピクセルより大きい32ピクセルになるようにラージ領域内周辺画素から選択した画素(以下においては、「ラージ領域内間引き画素」とも称する)である。
【0130】
したがって、ラージ領域内間引き画素のうちのラージ領域内周辺画素を用いて、前述の(2)式、(3)式、(5)式による演算を行なうことにより、注目画素160に対し、ラージ領域補正値を算出することができる。
【0131】
そして、スモール領域補正値とラージ領域補正値とを加算することにより注目画素160に対する補正値を算出することができる。以上説明した補正値の演算処理を補正値演算処理とも称する。
【0132】
なお、補正値算出用周辺画素は、前述したように、注目画素との距離が所定距離以内という条件または所定距離より長いという条件に基づいて選択した画素に限定されない。たとえば、注目画素160からの距離が離れるにつれて、補正値算出用周辺画素は、隣合う2つの画素の間隔が広くなるように選択した画素であってもよい。なお、隣合う2つの画素の間隔を変化させると、周辺関数の形状も画素の間隔に応じて変化する。
【0133】
図10は、所定のサイズのブロック毎に算出する補正値を利用して、補正値を算出していない画素の補正値を算出する補間処理を説明するための図である。なお、補間処理は、補間処理部2772により行なわれる。
【0134】
図10を参照して、ブロック分割画像101,102,103の各々は、横4ドット、縦4ドットからなる16個の画素を有する。後述する補正値算出処理によって算出される補正値は、処理対象画像100の複数のブロック分割画像の各々に対し、1つの画素についてのみ求められる。以下においては、当該1つの画素を「直接演算対象画素」とも称する。たとえば、ブロック分割画像101の直接演算対象画素は、画素101.1となる。
【0135】
また、複数のブロック分割画像の各々が有する複数の画素のうち、直接演算対象画素以外の画素を「間接演算対象画素」とも称する。たとえば、ブロック分割画像101の間接演算対象画素は、画素101.2,101.3,101.4,101.6となる。
【0136】
次に、補間処理を行なう前に行なう補正値の算出の一例を説明する。まず、ブロック分割画像101,102,103の各々が有する直接演算対象画素に対し、前述した補正値演算処理を行なう。この場合、直接演算対象画素は、画素101.1,102.1,103.1である。画素101.1内の“10”、画素102.1内の“12”、画素103.1内の“6”は、それぞれ、補正値演算処理により算出した補正値を示す。
【0137】
そして、補正値演算処理により算出した補正値を利用して間接演算対象画素の補正値を算出する処理が補間処理である。たとえば、画素101.3(間接演算対象画素)に対し、補正値を算出するには、画素101.3の近傍の少なくとも2つの直接演算対象画素(この場合、画素101.2,102.1)の補正値(“10”、“12”)を加算して、使用した補正値の数(この場合、“2”)で除算する。その結果、画素101.3(間接演算対象画素)の補正値を算出することができる。
【0138】
また、たとえば、画素101.2(間接演算対象画素)に対し、補正値を算出するには、画素101.2の近傍の直接演算対象画素または間接演算対象画素(この場合、画素101.1,101.3)の補正値(“10”、“11”)を加算して、使用した補正値の数(この場合、“2”)で除算する。その結果、画素101.2(間接演算対象画素)の補正値を算出することができる。
【0139】
なお、間接演算対象画素の補正値を算出するときに使用する画素は、近傍の2つの画素でなく、近傍の3つ以上の画素であってもよい。また、間接演算対象画素の補正値を算出する方法は、前述の方法に限定されない。
【0140】
以上、静止画像に対する補正値の算出方法を説明してきたが、次に、動画像に対し輝度補正処理(以下においては、「動画像輝度補正処理」とも称する)を行なう方法について説明する。たとえば、30分の1秒毎に表示される静止画像から構成される動画像に対して、すべての静止画像に対しリアルタイムで補正値を計算するには、前述した演算方法を使用し、かつ、現在の最高レベルの演算速度を有する演算装置を用いたとしても実現困難である。
【0141】
そこで、動画像に対しリアルタイムで輝度補正を実現可能な方法を以下に説明する。具体的には、人間の目の特性を利用して、一度算出した補正値を、輝度の変化に気づかない範囲で複数のフレームに連続して使用する。
【0142】
図11は、動画像輝度補正処理を説明するための図である。
【0143】
図11を参照して、動画像輝度補正処理において、前述した補正値の演算処理は、動画像を構成する全ての静止画像(フレーム)に対して行なうのではなく、数フレームに1度補正値を計算し、補正値の計算中は、算出済みの補正値を複数のフレームの輝度補正処理に連続して使用するようにする。以下においては、1フレームの補正値を算出するのに必要な時間を「補正値算出必要時間」とも称する。
【0144】
たとえば、時刻t4〜t7における処理対象画像100a.16〜100a.30の15フレームの輝度補正処理には、補正値c1を使用するとする。
【0145】
この場合、補正値c1は、時刻t4の前には算出し終えている必要がある。そのため、補正値c1を算出するのに要する時間(補正値算出必要時間)を予め測定しておき、補正値c1を最初に使用するフレーム(処理対象画像100a.16)を処理し始める時刻t4から補正値算出必要時間分より前の時刻に処理されるフレーム(この場合、処理対象画像100a.1)を使用して補正値を求めるようにする。
【0146】
そして、時刻t8以降の処理対象画像100a.31,100a.32・・・に対しては、時刻t8から補正値算出必要時間分より前の時刻のフレーム(この場合、処理対象画像100a.16)を使用して求めた補正値c2を使用する。
【0147】
時刻t1〜t4の期間は、補正値c1を算出するための演算処理が行なわれる補正値算出処理実行期間T1である。時刻t4〜t8の期間は、補正値c2を算出するための演算処理が行なわれる補正値算出処理実行期間T2である。時刻t8以降は、補正値c3を算出するための演算処理が行なわれる補正値算出処理実行期間T3である。
【0148】
以上のような方法により、動画像に対し、リアルタイムで高度な輝度補正処理を行なうことが可能となる。
【0149】
次に、動画像に対しリアルタイムで輝度補正処理を行なうときの輝度補正処理部2200の動作を、図2、図3、図4、図8、図9、図10、図11を用いて説明する。
【0150】
まず、図11の動画像を構成する処理対象画像100a.1〜100a.32のうち、処理対象画像100a.1が同期分離回路2210によって、画像信号RGBと、同期信号HVSIGとに分離され、画像処理プロセッサ2700および画像処理プロセッサ2800へ入力される。
【0151】
このとき、画像処理プロセッサ2700は、すでに算出された補正値が記憶されている画像データ記憶部から当該補正値を読み出して、処理対象画像100a.1の輝度補正処理を行ない、同期信号OHVSIGを出力すると同時に、輝度補正処理後の処理対象画像100a.1のデータを前述した補正後画像データCRRGBとして出力する。
【0152】
一方、画像処理プロセッサ2800は、処理対象画像100a.1を使用して補正値を算出して、当該補正値を補正値記憶部2710へ書込む。補正値記憶部2710へ処理対象画像100a.1に基づいた補正値が書込まれる時刻は、時刻t4より前となる。
【0153】
具体的には、まず、バッファ2830、アドレス生成部2840、メモリ制御部2850、データ記憶部2260の動作により、データ記憶部2260に、処理対象画像100a.1の画像データ(R,G,B各データ)が一時的に記憶される。そして、演算部2814により、正規化係数算出処理が行なわれる。
【0154】
図12は、正規化係数算出処理のフローチャートを示す。
【0155】
図12を参照して、ステップS110では、処理対象画像100a.1における正規化係数を算出する画素の座標値L(たとえば、L(0,0))の設定が行なわれる。ここで、正規化係数とは、補正値を算出するために使用される係数である。また、正規化係数は、図8、図9で説明したように、注目画素160の座標値によって変化する補正値算出用周辺画素の数による補正値の変化をなくすための係数である。なお、正規化係数は、処理対象画像の有する全ての画素にそれぞれ対応付けて算出される。
【0156】
以下においては、スモール領域140に対する補正値を算出するための正規化係数を「正規化係数SK」と称する。以下においては、ラージ領域120に対する補正値を算出するための正規化係数を「正規化係数LK」と称する。その後、ステップS120の処理が行なわれる。
【0157】
ステップS120では、(2)式、(3)式に基づいて、正規化係数SKおよび正規化係数LKの計算が行なわれる。その後、ステップS130の処理が行なわれる。
【0158】
ステップS130では、ステップS120により算出された正規化係数をデータ一時記憶部2812に記憶させる。その後、ステップS140の処理が行なわれる。
【0159】
ステップS140では、処理対象画像(この場合、処理対象画像100a.1)の有する全ての画素に対して正規化係数の計算処理が終了したかどうか判定する。ステップS140により、処理対象画像の有する全ての画素に対して正規化係数の計算処理が終了していないと判定されると、再度ステップS110、S120,S130の処理が行なわれる。一方、ステップS140により、処理対象画像の有する全ての画素に対して正規化係数の計算処理が終了したと判定されると、この正規化係数算出処理は終了し、リターンする。
【0160】
以上の正規化係数算出処理により、処理対象画像内の全ての画素の各々の補正値を算出するための正規化係数SK,LKが算出され、データ一時記憶部2812に記憶される。
【0161】
演算部2814は、正規化係数算出処理が終了すると、補正値算出処理を行なう。
【0162】
図13は、補正値算出処理のフローチャートを示す。
【0163】
図13を参照して、ステップS200では、データ記憶部2260に記憶された画像データ(処理対象画像100a.1の画像データ)が、メモリ制御部2850により演算部2814に転送される。その後、ステップS210の処理が行なわれる。
【0164】
ステップS210では、ステップS200により読み出されたR,G,B形式の画像データを、たとえば、HSV形式に変換する。なお、R,G,B形式の画像データを、変換する画像形式は、HSV形式に限定されることなく、たとえば、HSL(HSI)方式であってもよい。その後、ステップS220の処理が行なわれる。
【0165】
ステップS220では、注目画素160の座標値N(たとえば、N(16,0))の設定が行なわれる。その後、ステップS230の処理が行なわれる。
【0166】
ステップS230では、補正値算出用周辺画素(たとえば、図9の画素160.1)の座標値Z(たとえば、N(0,0))の設定が行なわれる。その後、ステップS240の処理が行なわれる。
【0167】
ステップS240では、ステップS230により設定された座標値Zがスモール領域140の内部にあるか否かが判定される。ステップS230により設定された座標値Zがスモール領域140の内部にあると判定されると、ステップS242の処理が行なわれる。一方、ステップS230により設定された座標値Zがスモール領域140の内部にないと判定されると、後述するステップS252の処理が行なわれる。
【0168】
ステップS242では、データ記憶部2816から、注目画素160を原点としたときの座標値Zの相対座標値に対応した、周辺関数データLD,SDの読出しが行なわれる。ここで、周辺関数データLDとは、ラージ領域120のサイズおよび図6(c)の周辺関数近似モデル図に基づく算出済周辺関数値である。ここで、周辺関数データSDとは、スモール領域140のサイズおよび図6(c)の周辺関数近似モデル図に基づく算出済周辺関数値である。その後、ステップS244の処理が行なわれる。
【0169】
ステップS244では、ラージ領域120に対して、式(5)内のFn(x, y)* Ii(x, y)の部分の演算が行なわれる。なお、以下においては、ラージ領域120に対してのFn(x, y)* Ii(x, y)を「変数LCR」と称する。変数LCRにはLCR+LD×VSの演算結果が代入される。ここで、“LCR”の初期値は“0”である。“LD”はステップS242により読み出された周辺関数データLDである。VSは座標値Zの補正値算出用周辺画素の輝度値である。その後、ステップS246の処理が行なわれる。
【0170】
ステップS246では、スモール領域140に対して、式(5)内のFn(x, y)* Ii(x, y)の部分の演算が行なわれる。なお、以下においては、スモール領域140に対してのFn(x, y)* Ii(x, y)を「変数SCR」と称する。変数SCRにはSCR+SD×VSの演算結果が代入される。ここで、“SCR”の初期値は“0”である。“SD”はステップS242により読み出された周辺関数データSDである。VSは座標値Zの補正値算出用周辺画素の輝度値である。その後、ステップS260の処理が行なわれる。
【0171】
ステップS240により、ステップS230により設定された座標値Zがスモール領域140の内部にないと判定されると、ステップS252の処理が行なわれる。
【0172】
ステップS252では、データ記憶部2816から、注目画素160を原点としたときの座標値Zの相対座標値に対応する、周辺関数データLDの読出しが行なわれる。その後、ステップS254の処理が行なわれる。
【0173】
ステップS254では、前述したステップS244と同様な処理が行なわれるので詳細な説明は繰り返さない。その後、ステップS260の処理が行なわれる。
【0174】
ステップS260では、ラージ領域120内の全ての補正値算出用周辺画素に対し、ステップS244,S246またはステップS254の計算が終了したか否かが判定される。ステップS260により、ラージ領域120内の全ての補正値算出用周辺画素に対し、ステップS244,S246またはステップS254の計算が終了していないと判定されると、前述したステップS230,S240,S242,S244,S246またはステップS230,S240,S252,S254の処理が繰返し行なわれる。
【0175】
その結果、ステップS260により、ラージ領域120内の全ての補正値算出用周辺画素に対し、ステップS244,S246またはステップS254の計算が終了したと判定されると、ステップS270の処理が行なわれる。
【0176】
ステップS270では、ステップS220により設定された注目画素160の座標値Nに対応する正規化係数SK,LKがデータ一時記憶部2812から読み出される。その後、ステップS272の処理が行なわれる。
【0177】
ステップS272では、LACR=LK×LCRの演算が行なわれる。ここで、“LK”はステップS270により読み出された正規化係数LKである。“LCR”は、ステップS272の処理が行なわれるときの、変数LCRの値である。その後、ステップS274の処理が行なわれる。
【0178】
ステップS274では、SACR=SK×SCRの演算が行なわれる。ここで、“SK”はステップS270により読み出された正規化係数SKである。“SCR”は、ステップS274の処理が行なわれるときの、変数SCRの値である。その後、ステップS276の処理が行なわれる。
【0179】
ステップS276では、LACRおよびSACRのLOG演算が行なわれる。ここで、“LACR”はステップS272により計算された値である。“SACR”はステップS274により計算された値である。その後、ステップS278の処理が行なわれる。
【0180】
ステップS278では、ステップ276により計算された2つの値(log(LACR)、log(SACR))の加算処理(log(LACR)+log(SACR))を行なうことにより、処理対象画像(処理対象画像100a.1)内の座標値Nの補正値が算出される。その後、ステップS279の処理が行なわれる。
【0181】
ステップS279では、ステップS278により算出された処理対象画像内の座標値Nの補正値が、補正値記憶部2710内の記憶領域2712および記憶領域2714のいずれかに書込まれる。その後、ステップS280の処理が行なわれる。
【0182】
ステップS280では、処理対象画像内の全ての画素のうち計算が必要な画素(直接演算対象画素(図10参照))全てに対し計算が終了したか否かが判定される。ステップS280により、処理対象画像内の全ての画素のうち計算が必要な画素(直接演算対象画素)全てに対し計算が終了したと判定されるまで、前述したステップS220〜S279の処理が繰返し行なわれる。その結果、ステップS280により、処理対象画像内の全ての画素のうち計算が必要な画素(直接演算対象画素)全てに対し計算が終了したと判定されると、この補正値算出処理は終了し、リターンする。
【0183】
このとき、補正値記憶部2710内の記憶領域2712および記憶領域2714のいずれかには、処理対象画像(処理対象画像100a.1)内の全ての直接演算対象画素にそれぞれ対応付けた複数の補正値が記憶されている。なお、処理対象画像100a.1に対する補正値算出処理が終了する時刻は、図11の時刻t4より前である。
【0184】
時刻t4において、画像処理プロセッサ2700内のメモリ制御部2750は、画像データ記憶部2230および画像データ記憶部2240のうち、1フレームの画像データ(この場合、処理対象画像100a.16の画像データ)の書込みが終了した記憶部内の記憶領域から1フレーム(静止画像)の1画素分の画像データを読み出して、バッファ2760へ出力する。
【0185】
バッファ2760は、メモリ制御部2750から出力された画像信号RGBに基づくデータの一部、たとえば、1フレーム(静止画像)の1画素分のデータを一時的に保持する。バッファ2760に画像データが記憶されると、以下に説明する輝度補正処理が行なわれる。なお、輝度補正処理は、前述の補正値算出処理により算出された、処理対象画像100a.1に対する補正値(補正値c1)を使用して、連続する処理対象画像100a.16〜100a.30に対して行なわれる(図11参照)。
【0186】
図14は、輝度補正処理のフローチャートを示す。
【0187】
図14を参照して、ステップS300では、演算部2771により画像データの読出し処理が行なわれる。具体的には、演算部2771が、バッファ2760に記憶されている1画素分のデータを読み出す。なお、バッファ2760に記憶されている1画素分のデータが、演算部2771により読み出されると、メモリ制御部2750は、読み出された1画素分の画像データの次の1画素分の画像データを読み出して、バッファ2760へ出力する。その後、ステップS310の処理が行なわれる。
【0188】
ステップS310では、演算部2771が、ステップS300により読み出されたR,G,B形式の画像データを、たとえば、HSV形式に変換する。なお、R,G,B形式の画像データを、変換する画像形式は、HSV形式に限定されることなく、たとえば、HSL(HSI)方式であってもよい。その後、ステップS320の処理が行なわれる。
【0189】
ステップS320では、演算部2771が輝度補正対象となる画素の座標値M(たとえば、M(0,0))の設定を行なう。その後、ステップS322の処理が行なわれる。
【0190】
ステップS322では、演算部2771がデータ記憶部2780に記憶されているlog演算変換データを利用して、ステップS310で変換した画像データHSVの輝度データVのlog演算を行なう。以下においては、当該log演算の結果を「log演算結果T」とも称する。演算部2771はlog演算結果Tを輝度処理部2773へ出力する。同時に、演算部2771は演算処理していない画像データHSVも輝度処理部2773へ出力する。その後、ステップS330の処理が行なわれる。
【0191】
ステップS330では、補間処理部2772がステップS320で設定された輝度補正対象となる画素の座標値Mに対応する補正値があるか否かを判定する。具体的には、補間処理部2772が、前述の補正値算出処理により補正値記憶部2710内の記憶領域2712および記憶領域2714のいずれかに書込まれた複数の補正値のうち、座標値Mに対応する補正値があるか否かを判定する。
【0192】
ステップS330により、ステップS320で設定された輝度補正対象となる画素の座標値Mに対応する補正値があると判定されると、ステップS340の処理が行なわれる。一方、ステップS330により、ステップS320で設定された輝度補正対象となる画素の座標値Mに対応する補正値がないと判定されると、ステップS350の処理が行なわれる。
【0193】
ステップS340では、補間処理部2772が、前述の補正値算出処理により補正値記憶部2710内の記憶領域2712および記憶領域2714のいずれかに書込まれた複数の補正値のうち、座標値Mに対応する補正値を読み出す。そして、補間処理部2772は、読み出した補正値を輝度処理部2773へ出力する。その後、ステップS360の処理が行なわれる。
【0194】
ステップS350では、前述した補間処理(図10参照)による補正値の生成が補間処理部2772により行なわれる。補間処理部2772は、生成した補正値を輝度処理部2773へ出力する。その後、ステップS360の処理が行なわれる。
【0195】
ステップS360では、輝度処理部2773が、演算部2771から出力されるlog演算結果Tと、補間処理部2772から出力される補正値とに基づいて、式(5)のマルチスケール網膜処理結果MSRout(x, y)を算出する。マルチスケール網膜処理結果MSRout(x, y)は、S322により算出されたlog演算結果TからステップS340で読み出した補正値またはステップ350で生成した補正値を減算することにより求めることができる。その後、ステップS362の処理が行なわれる。
【0196】
ステップS362では、輝度処理部2773が、式(6)により補正後マルチスケール網膜処理結果IMSRi(x, y)を算出する。その後、ステップS364の処理が行なわれる。
【0197】
ステップS364では、輝度処理部2773が、所定の係数に基づいて、輝度の補正を行なう。具体的には、輝度処理部2773が、演算部2771から出力された輝度データVと、ステップ362により算出した補正後マルチスケール網膜処理結果IMSRi(x, y)とに基づいて、(1−α)・V+α・IMSRi(x, y)の演算を行なう。αは、補正をかける強さを示す係数であり、“0”〜“1”の範囲の値をとる。たとえば、αが“0”ならば、座標値Mの画素に対して、輝度補正を行なわないことになる。輝度処理部2773は、演算結果をノイズ処理部2775へ出力する。同時に、輝度処理部2773は演算処理していない画像データHSVのうちの画像データHSもノイズ処理部2775へ出力する。その後、ステップS370の処理が行なわれる。
【0198】
ステップS370では、輝度処理部2773の演算による輝度値が所定の閾値以上であるとき、ノイズ処理部2775が輝度値を所定の閾値以内に収まるように処理を行なう。同時に、ノイズ処理部2775は演算処理していない画像データHSも色補正部2774へ出力する。その後、ステップS375の処理が行なわれる。
【0199】
ステップS375では、輝度処理部2775により輝度処理された輝度値に基づく色度が、所定の閾値以上であるとき、色補正部2774が色度を所定の閾値以内に収まるように処理を行なう。その後、ステップS380の処理が行なわれる。
【0200】
ステップS380では、色補正部2774がHSV形式の画像データをR,G,B形式に変換する。なお、S310において、R,G,B形式の画像データが、たとえば、HSL(HSI)方式に変換されたのであれば、ステップS380では、色補正部2774がHSL(HSI)形式の画像データをR,G,B形式に変換する。
【0201】
そして、色補正部2774が、S380により処理が行なわれた後のデータをバッファ2790へ出力する。バッファ2790は、色補正部2774から出力された、1画素分のデータを一時的に保持する機能を有する。
【0202】
そして、メモリ制御部2750が、バッファ2790に記憶されたデータを読出し、画像データ記憶部2230および画像データ記憶部2240のうち、前述した輝度補正部2770が演算処理を行なう際に使用したデータを読み出さなかった画像データ記憶部内の記憶領域にデータを書込む。その後、ステップS390の処理が行なわれる。
【0203】
ステップS390では、画像内の全ての画素に対し、前述したステップS300〜S380の処理が行なわれたか否かが判定される。具体的には、演算部2771により、画像内の全ての画素に対し、画像データの読出し処理が終了したか否かが判定される。演算部2771により、画像内の全ての画素に対し、画像データの読出し処理が終了したと判定されるまでは、前述したステップS300〜S380の処理が繰返し行なわれる。
【0204】
ステップ390において、演算部2771により、画像内の全ての画素に対し、画像データの読出し処理が終了したと判定されると、この輝度補正処理は終了し、リターンする。なお、処理対象画像100a.16に対する輝度補正処理が終了する時刻は、図11のt5より前である。
【0205】
このとき、画像データ記憶部2230および画像データ記憶部2240のうちのいずれかの記憶領域に1フレーム分の演算処理後の演算処理済画像データの書込みが終了している。その後、メモリ制御部2750は、演算処理済画像データが書込まれた記憶領域から演算処理済画像データを読出し、バッファ2792へ出力する。
【0206】
バッファ2792は、メモリ制御部2750から出力されたデータを、1フレーム(静止画像)の1ライン分の画像データを一時的に保持する。
【0207】
同期信号生成部2794は、バッファ2792に1ライン分の画像データが記憶される毎に、同期信号OHVSIGを出力する。同期信号生成部2794が、同期信号OHVSIGを出力すると同時に、バッファ2792は、記憶している補正後の補正後画像データ(演算処理済画像データ)CRRGBを出力する。
【0208】
その後、連続する処理対象画像100a.17〜100a.30の各々に対しても、前述したのと同様に輝度補正処理が行なわれる。処理対象画像100a.16〜100a.30に対し輝度補正処理が行なわれている間、処理対象画像100a.16に対して、前述した補正値算出処理が行なわれ、時刻t8の前には、当該補正値算出処理が終了する。
【0209】
以上説明したように、動画像のあるフレーム(処理対象画像100a.16)の輝度を補正するのに使用する補正値(補正値c1)は、あるフレーム(処理対象画像100a.16)より、補正値(補正値c1)を算出するのに要する時間より前に処理するフレーム(処理対象画像100a.1)を使用して算出する。そして、補正値(補正値c1)を使用して、あるフレーム(処理対象画像100a.16)の輝度を補正する。
【0210】
これにより、動画像に対し、補正値を算出するのに膨大な演算が必要な高度な輝度補正処理をリアルタイムで行なうことができる。
【0211】
また、一度算出した補正値(補正値c1)を、連続する複数のフレーム(処理対象画像100a.16〜100a.30)の各々に使用して、輝度補正処理を行なう。
【0212】
これにより、連続する複数のフレームの輝度補正処理を行なっている時間を有効に利用して補正値算出処理をすることができ、動画像に対し、補正値を算出するのに膨大な演算が必要な高度な輝度補正処理をリアルタイムで行なうことができる。
【0213】
また、一度算出した補正値(補正値c1)を、連続する複数のフレーム(処理対象画像100a.16〜100a.30)の各々に使用して輝度補正処理を行なっている期間、当該連続する複数のフレームの次のフレームの輝度補正処理に使用する補正値を算出する。
【0214】
これにより、連続する複数のフレームの輝度補正処理を行なっている時間を有効に利用して補正値算出処理をすることができ、動画像に対し、補正値を算出するのに膨大な演算が必要な高度な輝度補正処理をリアルタイムで行なうことができる。
【0215】
また、処理対象画像の有する全ての画素ではなく、一部の画素(直接演算対象画素)のみに対し、膨大な演算が必要な補正値算出処理を行ない、それ以外の画素(間接演算対象画素)の各々に対しては、近傍の少なくとも2つの画素に基づいて補正値算出する。
【0216】
これにより、1フレーム(処理対象画像)の全ての画素の補正値を算出する時間を大幅に削減することができる。
【0217】
また、膨大な演算が必要な補正値算出処理を行なう画素である直接演算対象画素の補正値は、当該直接演算対象画素を含む領域である直接演算対象領域(ラージ領域120、スモール領域140)内の全ての画素ではなく、所定の規則で間引いて選択した複数の画素に基づいて算出する。
【0218】
所定の規則は、直接演算対象画素との距離が所定距離以内にある画素は、隣合う画素の間隔が所定距離より短い小間隔になるという規則である。
【0219】
また、所定の規則は、直接演算対象画素との距離が所定距離より離れている位置にある画素は、隣合う画素の間隔が小間隔より大きくなるという規則である。
【0220】
これにより、直接演算対象画素の補正値を求めるために必要な画素の数を削減することができるので、演算量を大きく削減することができる。
【0221】
なお、本実施の形態における輝度補正システムでは、輝度補正値装置2000の代わりに高速な処理速度を有するパーソナルコンピュータ(PC)を用いてもよい。
【0222】
図15は、パーソナルコンピュータ2000aを利用したシステムの一例としての輝度補正システム20000のブロック図を示す。
【0223】
図15を参照して、輝度補正システム20000は、図1の輝度補正システム10000と比較して、輝度補正値装置2000の代わりにパーソナルコンピュータ2000aを使用する点が異なる。それ以外の構成は、輝度補正システム10000と同様なので詳細な説明は繰り返さない。
【0224】
パーソナルコンピュータ2000aは、高速な演算処理が可能なマイクロプロセッサ2200aと、データを一時的に記憶可能なメモリ2300aと、ハードディスク2400aとを備える。
【0225】
ハードディスク2400aには、マイクロプロセッサ2000aに所定の処理を行なわせる画像処理プログラム2500aが記憶されている。
【0226】
画像処理プログラム2500aは、パーソナルコンピュータ2000a(マイクロプロセッサ2000a)に前述した正規化係数算出処理、補正値算出処理、輝度補正処理、輝度補正装置2000が行なうその他の処理を実行させるためのプログラムである。
【0227】
マイクロプロセッサ2000aは、ハードディスク2400aから画像処理プログラム2500aを読み込んで、メモリ2300aをワークメモリとして使用し、前述した正規化係数算出処理、補正値算出処理、輝度補正処理、輝度補正装置2000が行なうその他の処理を実行する。すなわち、画像処理プログラム2500aは、パーソナルコンピュータ2000aを輝度補正装置2000として機能させるためのプログラムである。
【0228】
以上のように、パーソナルコンピュータ2000aに前述した正規化係数算出処理、補正値算出処理、輝度補正処理、輝度補正装置2000が行なうその他の処理を実行させることにより、輝度補正システム10000と同様な効果を得ることができる。
【0229】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0230】
【図1】輝度補正装置を利用したシステムの一例としての輝度補正システムのブロック図を示す。
【図2】輝度補正処理部のブロック図を示す。
【図3】画像処理プロセッサの内部の詳細なブロック図を示す。
【図4】画像処理プロセッサの内部の詳細なブロック図を示す。
【図5】複数のブロックに分割された画像の状態を示す図である。
【図6】前述した注目画素からの距離に応じて変化する周辺関数の値を示す図である。
【図7】注目画素からの距離による周辺関数算出領域を変化させた状態を示す図である。
【図8】注目画素に対して補正値を計算する際に使用する周辺画素を有する領域を示す図である。
【図9】補正値算出用周辺画素を示す図である。
【図10】所定のサイズのブロック毎に算出する補正値を利用して、補正値を算出していない画素の補正値を算出する補間処理を説明するための図である。
【図11】動画像輝度補正処理を説明するための図である。
【図12】正規化係数算出処理のフローチャートを示す。
【図13】補正値算出処理のフローチャートを示す。
【図14】輝度補正処理のフローチャートを示す。
【図15】パーソナルコンピュータを利用したシステムの一例としての輝度補正システムのブロック図を示す。
【符号の説明】
【0231】
2000,2200 輝度補正装置、2000a パーソナルコンピュータ、2230, 2240,2260 データ記憶部、2700,2800 画像処理プロセッサ、2710 補正値記憶部、2770 輝度補正部、2810 補正値演算部、2771,2814 演算部、2772 補間処理部、2773 輝度処理部、2816 データ記憶部、10000,20000 輝度補正システム。
【特許請求の範囲】
【請求項1】
各々が所定期間毎に順次表示されることにより動画像となる、第1番目から第n(n:自然数)番目まで予め順序付けられた複数の画像の輝度を補正する輝度補正装置であって、
前記複数の画像の各々の輝度を補正するための補正値を算出する補正値演算部と、
前記補正値演算部が第(n−m)番目(m:nより小さい自然数)の画像に基づいて算出した前記補正値を利用して前記第n番目の画像の輝度を補正する輝度補正部とを備える、輝度補正装置。
【請求項2】
前記輝度補正部は、前記補正値演算部が前記(n−m)番目の画像に基づいて算出した、前記補正値を利用して前記第n番目から第(n+p)番目(p:m以下の自然数)の画像の輝度を補正する、請求項1に記載の輝度補正装置。
【請求項3】
前記輝度補正部が前記第n番目から前記第(n+p)番目の画像の輝度を補正する間、前記補正値演算部は前記(n+p+1)番目以降の画像を補正するための前記補正値を、前記第n番目から前記第(n+p)番目の画像のいずれかに基づいて算出する、請求項2に記載の輝度補正装置。
【請求項4】
前記複数の画像の各々は、複数の画素から構成され、
前記複数の画素は、所定間隔毎に配列された複数の直接演算対象画素と、複数の間接演算対象画素とを含み、
前記補正値演算部は、前記複数の直接演算対象画素の各々に対し、前記直接演算対象画素を含む領域である直接演算対象領域の内部の複数の直接演算対象領域内画素の輝度値に基づいて前記補正値を算出し、前記複数の間接演算対象画素の各々に対しては、前記間接演算対象画素の近傍の少なくとも2つの直接演算対象画素に基づいて前記補正値を算出する、請求項1に記載の輝度補正装置。
【請求項5】
前記補正値演算部は、前記複数の直接演算対象領域内画素の一部である複数の直接演算対象領域内間引き画素の輝度値に基づいて前記補正値を算出し、
前記複数の直接演算対象領域内間引き画素のうち、前記直接演算対象画素との距離が所定距離以内である直接演算対象領域内間引き画素は、隣合う画素の間隔が所定距離より短い小間隔になるよう前記複数の画素から選択された画素であり、前記複数の直接演算対象領域内間引き画素のうち、前記直接演算対象画素との距離が前記所定距離より長い直接演算対象領域内間引き画素は、隣合う画素の間隔が前記小間隔より大きくなるよう前記複数の画素から選択された画素である、請求項4に記載の輝度補正装置。
【請求項6】
各々が所定期間毎に順次表示されることにより動画像となる、第1番目から第n(n:自然数)番目まで予め順序付けられた複数の画像の輝度を補正する輝度補正装置として、記憶部を備えるコンピュータを機能させるためのプログラムであって、前記プログラムは前記コンピュータに、
前記コンピュータの前記記憶部に格納されているデータを読み出して、
前記複数の画像の各々の輝度を補正するための補正値を算出するステップと、
前記補正値を算出するステップが第(n−m)番目(m:nより小さい自然数)の画像に基づいて算出した前記補正値を利用して前記第n番目の画像の輝度を補正するステップとを実行させる、プログラム。
【請求項7】
前記画像の輝度を補正するステップは、前記補正値を算出するステップが前記(n−m)番目の画像に基づいて算出した、前記補正値を利用して前記第n番目から第(n+p)番目(p:m以下の自然数)の画像の輝度を補正する、請求項6に記載のプログラム。
【請求項8】
前記画像の輝度を補正するステップが前記第n番目から前記第(n+p)番目の画像の輝度を補正する間、前記補正値を算出するステップは前記(n+p+1)番目以降の画像を補正するための前記補正値を、前記第n番目から前記第(n+p)番目の画像のいずれかに基づいて算出する、請求項7に記載のプログラム。
【請求項9】
前記複数の画像の各々は、複数の画素から構成され、
前記複数の画素は、所定間隔毎に配列された複数の直接演算対象画素と、複数の間接演算対象画素とを含み、
前記補正値を算出するステップは、前記複数の直接演算対象画素の各々に対し、前記直接演算対象画素を含む領域である直接演算対象領域の内部の複数の直接演算対象領域内画素の輝度値に基づいて前記補正値を算出し、前記複数の間接演算対象画素の各々に対しては、前記間接演算対象画素の近傍の少なくとも2つの直接演算対象画素に基づいて前記補正値を算出する、請求項6に記載のプログラム。
【請求項10】
前記補正値を算出するステップは、前記複数の直接演算対象領域内画素の一部である複数の直接演算対象領域内間引き画素の輝度値に基づいて前記補正値を算出し、
前記複数の直接演算対象領域内間引き画素のうち、前記直接演算対象画素との距離が所定距離以内である直接演算対象領域内間引き画素は、隣合う画素の間隔が所定距離より短い小間隔になるよう前記複数の画素から選択された画素であり、前記複数の直接演算対象領域内間引き画素のうち、前記直接演算対象画素との距離が前記所定距離より長い直接演算対象領域内間引き画素は、隣合う画素の間隔が前記小間隔より大きくなるよう前記複数の画素から選択された画素である、請求項9に記載のプログラム。
【請求項1】
各々が所定期間毎に順次表示されることにより動画像となる、第1番目から第n(n:自然数)番目まで予め順序付けられた複数の画像の輝度を補正する輝度補正装置であって、
前記複数の画像の各々の輝度を補正するための補正値を算出する補正値演算部と、
前記補正値演算部が第(n−m)番目(m:nより小さい自然数)の画像に基づいて算出した前記補正値を利用して前記第n番目の画像の輝度を補正する輝度補正部とを備える、輝度補正装置。
【請求項2】
前記輝度補正部は、前記補正値演算部が前記(n−m)番目の画像に基づいて算出した、前記補正値を利用して前記第n番目から第(n+p)番目(p:m以下の自然数)の画像の輝度を補正する、請求項1に記載の輝度補正装置。
【請求項3】
前記輝度補正部が前記第n番目から前記第(n+p)番目の画像の輝度を補正する間、前記補正値演算部は前記(n+p+1)番目以降の画像を補正するための前記補正値を、前記第n番目から前記第(n+p)番目の画像のいずれかに基づいて算出する、請求項2に記載の輝度補正装置。
【請求項4】
前記複数の画像の各々は、複数の画素から構成され、
前記複数の画素は、所定間隔毎に配列された複数の直接演算対象画素と、複数の間接演算対象画素とを含み、
前記補正値演算部は、前記複数の直接演算対象画素の各々に対し、前記直接演算対象画素を含む領域である直接演算対象領域の内部の複数の直接演算対象領域内画素の輝度値に基づいて前記補正値を算出し、前記複数の間接演算対象画素の各々に対しては、前記間接演算対象画素の近傍の少なくとも2つの直接演算対象画素に基づいて前記補正値を算出する、請求項1に記載の輝度補正装置。
【請求項5】
前記補正値演算部は、前記複数の直接演算対象領域内画素の一部である複数の直接演算対象領域内間引き画素の輝度値に基づいて前記補正値を算出し、
前記複数の直接演算対象領域内間引き画素のうち、前記直接演算対象画素との距離が所定距離以内である直接演算対象領域内間引き画素は、隣合う画素の間隔が所定距離より短い小間隔になるよう前記複数の画素から選択された画素であり、前記複数の直接演算対象領域内間引き画素のうち、前記直接演算対象画素との距離が前記所定距離より長い直接演算対象領域内間引き画素は、隣合う画素の間隔が前記小間隔より大きくなるよう前記複数の画素から選択された画素である、請求項4に記載の輝度補正装置。
【請求項6】
各々が所定期間毎に順次表示されることにより動画像となる、第1番目から第n(n:自然数)番目まで予め順序付けられた複数の画像の輝度を補正する輝度補正装置として、記憶部を備えるコンピュータを機能させるためのプログラムであって、前記プログラムは前記コンピュータに、
前記コンピュータの前記記憶部に格納されているデータを読み出して、
前記複数の画像の各々の輝度を補正するための補正値を算出するステップと、
前記補正値を算出するステップが第(n−m)番目(m:nより小さい自然数)の画像に基づいて算出した前記補正値を利用して前記第n番目の画像の輝度を補正するステップとを実行させる、プログラム。
【請求項7】
前記画像の輝度を補正するステップは、前記補正値を算出するステップが前記(n−m)番目の画像に基づいて算出した、前記補正値を利用して前記第n番目から第(n+p)番目(p:m以下の自然数)の画像の輝度を補正する、請求項6に記載のプログラム。
【請求項8】
前記画像の輝度を補正するステップが前記第n番目から前記第(n+p)番目の画像の輝度を補正する間、前記補正値を算出するステップは前記(n+p+1)番目以降の画像を補正するための前記補正値を、前記第n番目から前記第(n+p)番目の画像のいずれかに基づいて算出する、請求項7に記載のプログラム。
【請求項9】
前記複数の画像の各々は、複数の画素から構成され、
前記複数の画素は、所定間隔毎に配列された複数の直接演算対象画素と、複数の間接演算対象画素とを含み、
前記補正値を算出するステップは、前記複数の直接演算対象画素の各々に対し、前記直接演算対象画素を含む領域である直接演算対象領域の内部の複数の直接演算対象領域内画素の輝度値に基づいて前記補正値を算出し、前記複数の間接演算対象画素の各々に対しては、前記間接演算対象画素の近傍の少なくとも2つの直接演算対象画素に基づいて前記補正値を算出する、請求項6に記載のプログラム。
【請求項10】
前記補正値を算出するステップは、前記複数の直接演算対象領域内画素の一部である複数の直接演算対象領域内間引き画素の輝度値に基づいて前記補正値を算出し、
前記複数の直接演算対象領域内間引き画素のうち、前記直接演算対象画素との距離が所定距離以内である直接演算対象領域内間引き画素は、隣合う画素の間隔が所定距離より短い小間隔になるよう前記複数の画素から選択された画素であり、前記複数の直接演算対象領域内間引き画素のうち、前記直接演算対象画素との距離が前記所定距離より長い直接演算対象領域内間引き画素は、隣合う画素の間隔が前記小間隔より大きくなるよう前記複数の画素から選択された画素である、請求項9に記載のプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2006−33595(P2006−33595A)
【公開日】平成18年2月2日(2006.2.2)
【国際特許分類】
【出願番号】特願2004−211715(P2004−211715)
【出願日】平成16年7月20日(2004.7.20)
【出願人】(598142988)株式会社シンセシス (16)
【出願人】(504275915)
【Fターム(参考)】
【公開日】平成18年2月2日(2006.2.2)
【国際特許分類】
【出願日】平成16年7月20日(2004.7.20)
【出願人】(598142988)株式会社シンセシス (16)
【出願人】(504275915)
【Fターム(参考)】
[ Back to top ]