(57)【要約】【課題】リングバッファ専用の記憶領域を不要とし、メモリを有効利用する。【解決手段】画像処理装置は、少なくとも、元画像データの記憶領域と該元画像に対する画像処理後の画像データを記憶する処理後の記憶領域とを有するＲＡＭ３２と、所定の画像処理を施す画像変換部４３、画像補正部４４、及び画素数変換部４６と、所定の画像処理のための作業領域を、処理済みの画像データが未格納である記憶領域と読み出し済みの画像データが格納されていた記憶領域とにＲＡＭ３２利用状況に基づいて確保し、元画像データの記憶領域に格納されている元画像データを、所定のベルト単位で逐次読み出して画像処理部に供給し、所定の画像処理が施された画像データを、作業領域を介して、処理後の記憶領域に逐次格納する画像データ転送部４５、４７とを備えている。【選択図】図２
2014120961.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも、元画像データを記憶する第１の領域と前記元画像に対する画像処理後の画像データを記憶する第２の領域とを有する記憶手段と、
所定の画像処理を施す画像処理手段と、
前記記憶手段の第１の領域に格納されている元画像データを、所定の分割単位で逐次読み出して前記画像処理手段に供給し、前記画像処理手段によって画像処理された画像データを前記記憶手段の第２の領域に逐次格納する過程で、前記画像処理手段による所定の画像処理のための作業領域を、前記第２の領域内の処理済みの画像データが未格納である領域と前記第１の領域内の読み出し済みの画像データが格納されていた領域とに、前記記憶手段の利用状況に基づいて確保する画像データ転送手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記画像データ転送手段は、
前記所定の画像処理を行うための作業領域を、前記記憶手段の利用状況に基づく所定のタイミングで、前記第２の領域内の処理済みの画像データが未格納である領域から、前記第１の領域内の読み出し済みの画像データが格納されていた領域へと切り替える
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記画像データ転送手段は、
前記第１の領域内の読み出し済みの画像データが格納されていた領域のサイズが前記所定の画像処理で必要とする作業領域のサイズ以上になるまでの間、前記所定の画像処理を行うための作業領域を、前記第２の領域内の処理済みの画像データが未格納である領域に確保し、前記第１の領域内の読み出し済みの画像データが格納されていた領域のサイズが前記所定の画像処理で必要とする作業領域のサイズ以上になった後の所定タイミングで、前記所定の画像処理を行うための作業領域を、前記第１の領域内の読み出し済みの画像データが格納されていた領域へと切り替える
ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記画像データ転送手段は、
前記第１の領域内の読み出し済みの画像データが格納されていた領域のサイズが前記所定の画像処理で必要とする作業領域のサイズ以上になった後、前記第２の領域内の処理済みの画像データが未格納である領域のサイズが前記所定の画像処理で必要とする作業領域のサイズ未満になるまでの間の所定タイミングで、前記所定の画像処理を行うための作業領域を、前記第１の領域内の読み出し済みの画像データが格納されていた領域へと切り替える
ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記画像データ転送手段は、
前記第１の領域内の読み出し済みの画像データが格納されていた領域のサイズが前記所定の画像処理で必要とする作業領域のサイズ以上になったタイミングで、前記所定の画像処理を行うための作業領域を、前記第１の領域内の読み出し済みの画像データが格納されていた領域へと切り替える
ことを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記画像処理手段は、
前記第１の領域に格納されている元画像データに対して所定の分割単位で第１の画像処理を行う第１の画像処理手段と、
この第１の画像処理手段によって前記第１の画像処理が施された後の画像データに対して所定の分割単位で第２の画像処理を行う第２の画像処理手段と
を備え、
前記作業領域は、前記第１の画像処理手段による第１の画像処理結果を一時的に格納する作業領域である
ことを特徴とする請求項１乃至５のいずれかに記載の画像処理装置。
【請求項７】
メモリ内の第１の領域に格納されている元画像データを、所定の分割単位で逐次読み出すステップと、
前記所定の分割単位で逐次読み出される元画像データに対して所定の画像処理を施すステップと、
前記所定の画像処理のための作業領域を、前記第２の領域内の処理済みの画像データが未格納である領域と前記第１の領域内の読み出し済みの画像データが格納されていた領域とに、前記メモリの利用状況に基づいて確保するステップと、
前記所定の画像処理が施された画像データを、前記作業領域を介して前記メモリの第２の領域に逐次格納するステップと
を含むことを特徴とする画像処理方法。
【請求項８】
コンピュータに、
メモリ内の第１の領域に格納されている元画像データを、所定の分割単位で逐次読み出す機能、
前記所定の分割単位で逐次読み出される元画像データに対して所定の画像処理を施す機能、
前記所定の画像処理のための作業領域を、前記第２の領域内の処理済みの画像データが未格納である領域と前記第１の領域内の読み出し済みの画像データが格納されていた領域とに、前記メモリの利用状況に基づいて確保する機能、
前記所定の画像処理が施された画像データを、前記作業領域を介して前記メモリの第２の領域に逐次格納する機能
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及びプログラムに関する。
【背景技術】
【０００２】
従来より、デジタルカメラや、携帯電話等の撮影機能を有する画像処理装置では、画像を生成する場合、撮像素子から取り込んだベイヤデータ（元画像データ）に対して、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）変換、ＹＵＶデータへの変換、シェーディング補正や、エッジ強調などの画像補正、ノイズリダクション、歪曲補正、拡大・縮小などの各処理を行っている。
【０００３】
上述したような各処理を行う場合に、画像全体を処理しようとすると、各処理回路が非常に大きくなってしまうため、画像を横方向に所定のライン数ごとに分割し、分割した画像データごとに中間的な画像処理を含む各種画像処理を行っている。このとき、画像処理装置では、画像処理の過程における中間的な画像データを一時的に保持しておくために、メモリ上に所定の領域を確保し、該領域をリングバッファとして用いる技術が知られている（例えば、特許文献１、２参照）。
【０００４】
リングバッファは、メモリを有効に使うため、中間的な画像データをより少ない領域の使用にとどめるための手法である。メモリは、プログラム、スタック、プログラム処理のためのデータ、ＣＣＤから取り込んだベイヤデータ、表示データなどのために使用される。このため、大きな領域が必要な画像データの使用量を少なくすることで、他で必要な領域が大きく取れることになる。このため、画像処理などの処理速度をアップさせることができるという利点がある。
【０００５】
図９は、従来技術によるメモリ利用状況を説明するための概念図である。例えば、ＪＰＥＧ変換モジュールは、ベイヤデータを直接処理することができないため、また、サイズの変更、色調整などのために、一時的にベイヤデータ１をＹＵＶデータ２に変換し、そのＹＵＶデータを２ＪＰＥＧデータ３に変換する。この一時的に必要なＹＵＶデータ２をリングバッファ４に巡回的に格納することで、リングバッファ４を使用しない場合に比べ、メモリ上の画像データの使用量を少なくしている。リングバッファ４は、使用するデータ量に関係なく、固定された一部の領域のみを使用するものである。データ量が一部の領域を超えてしまう場合に、その領域の先頭に戻り、領域を巡回的に使用するためリングバッファと呼ばれている。
【０００６】
このため、リングバッファ４へのデータ入力側、リングバッファ４からのデータ出力側における、２つのモジュールのデータ処理速度が異なる場合には、読み出しが行われていない領域へのデータの上書きや、書き込みされていない領域からのデータ読み込みが行われてしまう可能性がある。そこで、データ入力側のモジュールがデータ出力側を制御するか、データ出力側のモジュールがデータ入力側を制御することで、未書き込み領域の読み出しを行わせないようにしたり、読み込みが終わっていない領域への新規書き込みを行わせないようにしたりしている。制御するモジュールに対し、制御されるモジュールは、処理終了ラインを通知し、その情報と自身の処理終了ラインとリングバッファのライン数とにより、ＲＡＭアクセスの制御を行う。
【０００７】
図１０は、従来技術において、データ出力側モジュールと入力側モジュールとの動作制御方法を示すブロック図である。データ出力側モジュール１２は、自身が必要なライン数までリングバッファ１１へのデータ書き込みが行われると、リングバッファ１１からデータ読み込みを開始する。その後、データ出力側モジュール１２の処理速度が入力側より遅い場合には、読み込んでいないデータが上書きされないように、データ出力側モジュール１２からデータ入力側モジュール１０に対してデータ書き込みを停止するように制御する（データ書き込み制御）。逆に、データ出力側モジュール１２の処理速度がデータ入力側モジュール１０より速い場合には、書き込み終わっていないラインのデータ読み込みをしないように、データ入力側モジュー１０ルからデータ出力側モジュール１２による読み込みを制御する（データ書き込み終了ライン通知）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−８６４９７号公報
【特許文献２】特開２００７−８８８０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記従来技術では、図１１に示すように、元画像データの記憶領域２０、処理後の画像データの記憶領域２１以外に、中間データを一時的に保持するために、メモリの一部にリングバッファのための記憶領域２２を、別途確保しなければならないという問題があった。また、画像サイズの拡大、処理経路の増加に伴い、リングバッファ２２のために必要とされるメモリ容量が増大するという問題があった。
【００１０】
そこで本発明は、リングバッファ専用の記憶領域を不要とし、メモリを有効利用することができる画像処理装置、画像処理方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
この発明は、少なくとも、元画像データを記憶する第１の領域と前記元画像に対する画像処理後の画像データを記憶する第２の領域とを有する記憶手段と、所定の画像処理を施す画像処理手段と、前記記憶手段の第１の領域に格納されている元画像データを、所定の分割単位で逐次読み出して前記画像処理手段に供給し、前記画像処理手段によって画像処理された画像データを前記記憶手段の第２の領域に逐次格納する過程で、前記画像処理手段による所定の画像処理のための作業領域を、前記第２の領域内の処理済みの画像データが未格納である領域と前記第１の領域内の読み出し済みの画像データが格納されていた領域とに、前記記憶手段の利用状況に基づいて確保する画像データ転送手段とを備えることを特徴とする画像処理装置である。
【００１２】
この発明は、メモリ内の第１の領域に格納されている元画像データを、所定の分割単位で逐次読み出すステップと、前記所定の分割単位で逐次読み出される元画像データに対して所定の画像処理を施すステップと、前記所定の画像処理のための作業領域を、前記第２の領域内の処理済みの画像データが未格納である領域と前記第１の領域内の読み出し済みの画像データが格納されていた領域とに、前記メモリの利用状況に基づいて確保するステップと、前記所定の画像処理が施された画像データを、前記作業領域を介して前記メモリの第２の領域に逐次格納するステップとを含むことを特徴とする画像処理方法である。
【００１３】
この発明は、コンピュータに、メモリ内の第１の領域に格納されている元画像データを、所定の分割単位で逐次読み出す機能、前記所定の分割単位で逐次読み出される元画像データに対して所定の画像処理を施す機能、前記所定の画像処理のための作業領域を、前記第２の領域内の処理済みの画像データが未格納である領域と前記第１の領域内の読み出し済みの画像データが格納されていた領域とに、前記メモリの利用状況に基づいて確保する機能、前記所定の画像処理が施された画像データを、前記作業領域を介して前記メモリの第２の領域に逐次格納する機能を実行させることを特徴とするプログラムである。
【発明の効果】
【００１４】
この発明によれば、リングバッファ用の記憶領域を不要とし、メモリを有効利用することができるという利点が得られる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態によるデジタルカメラの略構成を示すブロック図である。
【図２】本実施形態によるＡＳＩＣ３１の構成を示すブロック図である。
【図３】本実施形態によるメモリ利用状況を説明するための概念図である。
【図４】本実施形態による画像データ転送部４５の動作を説明するためのフローチャートである。
【図５】本実施形態の画像データ転送部４５によるベルト単位でのＲＡＭ３２の使用例を示す概念図である。
【図６】本実施形態による画像データ転送部４７の動作を説明するためのフローチャートである。
【図７】本実施形態の画像データ転送部４７によるベルト単位でのＲＡＭ３２の使用例を示す概念図である。
【図８】本実施形態の画像データ転送部４７によるベルト単位でのＲＡＭ３２の使用例を示す概念図である。
【図９】従来技術によるメモリ利用状況を説明するための概念図である。
【図１０】従来技術において、データ出力側モジュールと入力側モジュールとの動作制御方法を示すブロック図である。
【図１１】従来技術でのメモリ利用状態を示す模式図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態を、図面を参照して説明する。
【００１７】
Ａ．実施形態の構成
図１は、本発明の実施形態によるデジタルカメラの略構成を示すブロック図である。図において、ＣＰＵ３０は、所定のプログラムを実行することにより、後述する当該デジタルカメラの各部の動作（撮影、画像処理など）を制御する。ＡＳＩＣ３１は、後述するＣＣＤ３３から入力したベイヤデータに対して、ＹＵＶデータ変換、エッジ強調やシェーディング補正などの画像補正、画像の拡大や縮小を行う。また、ＡＳＩＣ３１は、後述するＣＣＤ３３から入力された画像データに対して各種画像処理等を施してＬＣＤ３５に表示する。
【００１８】
ＲＡＭ３２は、ＣＰＵ３０や、ＡＳＩＣ３１の動作に係る各種パラメータや、撮像された画像データ、該画像データに対して画像処理を施した後の画像データなどを保存するとともに、画像処理での途中結果を一時保存する。ＣＣＤ３３は、レンズ等の光学系を通して結像された画像を電気信号として取り込み、撮像画像データ（以下、元画像データ、またはベイヤデータという）としてＡＳＩＣ３１に供給する。
【００１９】
ＲＯＭ３４は、ＣＰＵ３９、ＡＳＩＣ３１で実行される所定のプログラムや、動作パラメータなどを記憶する。ＬＣＤ３５は、各種メニュー画面や、メニュー画面での各種設定項目、動作パラメータ、撮影時のスルー画像、撮影された元画像データなどを表示する。キーボード３６は、各種撮影パラメータ、動作モードを設定・指定するためのボタンや、シャッタボタンなどからなる。電源部３７は、各種バッテリ（一次電池、二次電池など）からなり、上述した各部を動作させるための電源を供給する。
【００２０】
次に、図２は、本実施形態によるＡＳＩＣ３１の構成を示すブロック図である。図において、ＡＳＩＣ３１は、ＤＭＡＣ（Ｄｙｎａｍｉｃ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）４０、メモリ制御部４１、ＣＣＤ制御部４２、画像変換部４３、画像補正部４４、画像データ転送部４５、画素数変換部４６、画像データ転送部４７、キーボード制御部４８、及びＬＣＤ制御部４９からなる。
【００２１】
ＤＭＡＣ４０は、ＣＰＵ３０を介さずに、メモリ制御部４１を用いてＲＡＭ３２や、ＲＯＭ３４に直接アクセスし、元画像データの保存や、読み込み、あるいは、後述する各種画像処理部への引き渡しなどを制御する。メモリ制御部４１は、ＤＭＡＣ４０による制御の下、直接、ＲＡＭ３２や、ＲＯＭ３４にアクセスして、ＤＭＡＣ４０とＲＡＭ３２や、ＲＯＭ３４との間でデータの受け渡しを行う。ＣＣＤ制御部４２は、ＣＣＤ３３を駆動制御し、ＣＣＤ３３で取り込んだ元画像データをＤＭＡＣ４０に供給する。
【００２２】
画像変換部４３は、画像データ転送部４５を介して供給される元画像データをＹＵＶデータに変換し、画像補正部４４に供給する。画像補正部４４は、供給される画像データに対して、エッジ強調や、シェーディング補正などの画像補正を行い、画像転送部４５に供給する。画像データ転送部４５は、上記画像変換部４３、画像補正部４４、がＲＡＭ３２との間で画像データの入出力を行う場合に、ＤＭＡＣ４０との間で転送処理を制御する。このとき、画像補正部４４による画像補正後の中間データは、後述するリングバッファＡ、Ｂに一時的に格納される。
【００２３】
画素数変換部４６は、供給される画像データの拡大や、縮小を行う。画像データ転送部４７は、上記画素数変換部４６がＲＡＭ３との間で画像データの入出力を行う場合に、ＤＭＡＣ４０との間で転送処理を制御する。このとき、後述するリングバッファＡ、Ｂに一時的に格納された、画像補正部４４による画像補正後の中間データが画素数変換部４６に供給される。キーボード制御部４８は、キーボード３６の入力（スキャン）を制御する。ＬＣＤ制御部４９は、ＤＭＡＣ４０から供給される元画像データや、画像処理が施された画像データなどのＬＣＤ３５への表示を制御する
【００２４】
図３は、本実施形態によるメモリ利用状況を説明するための概念図である。本実施形態では、処理後の画像データの記憶領域５１の未使用領域を、リングバッファＡの記憶領域５２として、画像処理前の元画像データの記憶領域５０の利用可能領域を、リングバッファＡの記憶領域５２として、画像処理の進捗状況に基づく所定のタイミングで切り替えながら用いることを特徴としている。すなわち、画像処理が進むにつれて、元画像データは使用済みとなるので、元画像データの記憶領域５０には、利用可能な記憶領域が発生することになる。また、処理後の画像データの記憶領域５１には、画像処理が進むにつれて、処理後の画像データが記憶されていくが、画像処理の初期においては未使用領域がある。そこで、本実施形態では、画像処理が開始されると、まず、処理後の画像データの記憶領域５１の未使用領域の一部を、リングバッファＡの記憶領域５２として用い、その後、所定のタイミングで、元画像データの記憶領域５０の一部を、リングバッファＢの記憶領域５３として用いるように切り替えるようなっている。本実施形態では、元画像データの記憶領域５０に作業領域として十分な利用可能な記憶領域が確保できる程度に画像処理が進んだタイミングでリングバッファＡからリングバッファＢへと切り替える。
【００２５】
なお、本実施形態におけるリングバッファＡ、Ｂは、移動しながら作業領域を確保していくバッファであり、巡回的に使用される、いわゆるリングバッファではないが、従来技術において、画像処理途中の中間データを一時的に保持するために用いたリングバッファに相当する作業領域として機能するので、以下の説明においてもリングバッファということにする。但し、本実施形態のリングバッファＡ、Ｂは、上述したように、従来のリングバッファのように専用にメモリ上に確保されたものでなく、元画像データの記憶領域５０の読み出し済みの画像データが格納されていた領域、あるいは処理後の画像データの記憶領域５１の未使用領域を切り替えて用いる点で異なる。
【００２６】
Ｂ．実施形態の動作
次に、上述した実施形態の動作について説明する。
図４は、本実施形態による画像データ転送部４５の動作を説明するためのフローチャートである。また、図５は、本実施形態の画像データ転送部４５によるベルト単位でのＲＡＭ３２の使用例を示す概念図である。また、図６は、本実施形態による画像データ転送部４７の動作を説明するためのフローチャートである。図７（ａ）〜（ｄ）、及び図８（ａ）〜（ｄ）は、本実施形態の画像データ転送部４７によるベルト単位でのＲＡＭ３２の使用例を示す概念図である。
【００２７】
なお、以下の説明では、ベイヤデータは、１６ｂｉｔ／ｐｉｘ、中間データ、及び画像拡大縮小後の最終データは、ＹＹＵＶデータの１６ｂｉｔ／ｐｉｘとする。また、入力画像サイズは、３２０ｘ２４０、出力画像サイズは、入力画像を４倍した６４０ｘ４８０とする。また、中間画像は、３２０ｘ２４０のＹＹＵＶデータの１６ｂｉｔ／ｐｉｘで、３２０ｘ６０ピクセル分のリングバッファＡを確保するものとする。
【００２８】
画像データ転送部４５は、リングバッファＡの開始アドレスを算出し、リングバッファ変更信号をディセーブル（無効）として出力し、最初はリングバッファＡを使用する（ステップＳ１０）。図６（ａ）に示すように、入力画像の先頭アドレスを０ｘ００００００００、出力画像の先頭アドレスを０ｘ０００２５８００とする。また、リングバッファＡのサイズは、（３２０×６０×１６）／８＝３８４００（１６進で０ｘ００００９６００）バイトになる。リングバッファＡの開始アドレスは、出力画像の先頭アドレス＋出力画像のデータサイズ−リングバッファのサイズ＝０ｘ０００２５８００＋０ｘ０００ＢＢ８００−０ｘ００００９６００＝０ｘ０００Ｄ７Ａ００となる。
【００２９】
次に、画像データ転送部４５は、処理内容に応じてベルトのライン数を算出する（ステップＳ１２）。各処理部が処理できるベルトのライン数はＭＡＸ３２ラインとする。各処理部ともにＭＡＸで使用すると仮定すると、画像データ転送部４５が処理するベルトのライン数は、入力側、出力側ともに３０ラインとなり、画像データ転送部４７が処理するベルトのライン数は、入力側が１５ライン、出力側は拡大されて３０ラインとなる。
【００３０】
次に、画像データ転送部４５は、入力画像の読み込み中にリングバッファを変更してもいいリングバッファ変更アドレスＡＤＤＲａ（＝開始アドレス＋リングバッファサイズ）を算出する（ステップＳ１４）。この場合、リングバッファ変更アドレスＡＤＤＲａ＝入力開始アドレス＋リングバッファサイズ＝０ｘ００００９６００となる。次に、画像データ転送部４５は、ベルト単位入力開始アドレスＡＤＤＲｂを算出する（ステップＳ１６）。この場合、最初のベルトであるので、ベルト単位入力開始アドレスＡＤＤＲｂ＝０ｘ００００００００になる。
【００３１】
次に、画像データ転送部４５は、ＡＤＤＲａ＞ＡＤＤＲｂであるか否かを判断する（ステップＳ１８）。ここでは、ＡＤＤＲａ＞ＡＤＤＲｂであるので（ステップＳ１８のＹＥＳ）、画像データ転送部４５は、ベルト単位出力開始アドレスを算出し、該ベルト単位出力開始アドレスに従って、ベルト単位でのデータ入出力を行うとともに、出力したライン数の算出する（ステップＳ２４）。具体的には、第１ベルト目の場合、ベルト単位出力開始アドレスは、リングバッファＡの開始アドレス「０ｘ０００Ｄ７Ａ００」となる。画像データ転送部４５は、元画像データの３０ライン分（図５の０ｘ００００００００〜０ｘ００００４Ｂ００の第１ベルト）を画像変換部４３へ供給し、画像補正部４４からの出力データ（３０ライン分）を、図６（ａ）に示すように、処理後の画像データの記憶領域５１に設定されたリングバッファＡの記憶領域５２（０ｘ０００Ｄ７Ａ００〜）に出力する。出力ライン数は３０ラインとなる。
【００３２】
次に、画像データ転送部４５は、全ての処理が終了したか否かを判断し（ステップＳ２６）、終了していない場合には（ステップＳ２６のＮＯ）、ステップＳ１６に戻り、上述した処理を繰り返し、第２ベルト目に対する処理を行う。第２ベルトの場合には、ステップＳ１６で、ベルト単位入力開始アドレスＡＤＤＲｂに３０ライン分加算し、ベルト単位入力開始アドレスＡＤＤＲｂ＝０ｘ００００４Ｂ００になる（図６（ｂ）参照、第２ベルト）。この場合、第１ベルトと同様に、ＡＤＤＲａ＞ＡＤＤＲｂと判断されるので（ステップＳ１８のＹＥＳ）、画像データ転送部４５は、ステップＳ２４で、ベルト単位出力開始アドレスを算出し（０ｘ０００Ｄ７Ａ００＋３０ライン＝０ｘ０００Ｃ５００）、該ベルト単位出力開始アドレスに従って、元画像データの３０ライン分（０ｘ００００４Ｂ００〜の第２ベルト）を画像変換部４３へ供給し、画像補正部４４からの出力データ（３０ライン分）を、図６（ｂ）に示すように、処理後の画像データの記憶領域５１に設定されたリングバッファＡの記憶領域５２（０ｘ０００Ｃ５００〜）に出力する。出力ライン数は６０ラインとなる。
【００３３】
次に、画像データ転送部４５は、再び、ステップＳ１６に戻り、上述した処理を繰り返し、第３ベルト目に対する処理を行う。第３ベルト目の処理では、図６（ｃ）に示すように、ベルト単位入力開始アドレスＡＤＤＲｂ＝０ｘ００００９６００になり、ＡＤＤＲａ＝ＡＤＤＲｂとなるので（ステップＳ１８のＮＯ）、画像データ転送部４５は、リングバッファ変更信号がイネーブルであるか否かを判断する（ステップＳ２０）。この場合、先のステップＳ１０で、リングバッファ変更信号はディセーブル（無効）であるので（ステップＳ２０のＮＯ）、画像データ転送部４５は、出力したライン数６０を変更ライン数ＬＮｃとして出力するとともに、リングバッファ変更信号をイネーブルにして画像データ転送部４７に出力し、リングバッファＢに変更する（ステップＳ２３）。
【００３４】
次に、画像データ転送部４５は、ステップＳ２４で、ベルト単位出力開始アドレスを算出する。ここからは、リングバッファＢを用いるので、ベルト単位出力開始アドレス＝０ｘ００００００００となり、該ベルト単位出力開始アドレスに従って、元画像データの３０ライン分（０ｘ００００９６００〜の第３ベルト）を画像変換部４３へ供給し、画像補正部４４からの出力データ（３０ライン分）を、図６（ｃ）に示すように、元画像データの記憶領域５０の空き領域に設定されたリングバッファＢの記憶領域５３（０ｘ０００００００〜）に出力する。出力ライン数は９０ラインとなる。
【００３５】
次に、画像データ転送部４５は、再び、ステップＳ１６に戻り、上述した処理を繰り返し、第４ベルト目に対する処理を行う。第４ベルト目の処理では、図６（ｄ）に示すように、ベルト単位入力開始アドレスＡＤＤＲｂ＝０ｘ０００１２Ｃ００になり、ＡＤＤＲａ＜ＡＤＤＲｂとなり（ステップＳ１８のＮＯ）、この場合、先のステップＳ２２で、リングバッファ変更信号はイネーブル（有効）であるので（ステップＳ２０のＹＥＳ）、画像データ転送部４５は、ステップＳ２４で、ベルト単位出力開始アドレスを算出する。この場合、リングバッファＢを用いるので、ベルト単位出力開始アドレス＝０ｘ００００４Ｂ００となり、該ベルト単位出力開始アドレスに従って、元画像データの３０ライン分（０ｘ０００１２Ｃ００〜の第４ベルト）を画像変換部４３へ供給し、画像補正部４４からの出力データ（３０ライン分）を、図６（ｄ）に示すように、元画像データの記憶領域５０の空き領域に設定されたリングバッファＢの記憶領域５３（０ｘ０００４Ｂ００〜）に出力する。出力ライン数は１２０ラインとなる。
【００３６】
その後、画像データ転送部４５は、元画像データを読出して画像変換部４３に供給するとともに、画像補正部４４からの処理済みの中間データを、元画像データの記憶領域５０の空き領域に設定されたリングバッファＢに格納するという処理を最終ベルトまで繰り返す。そして、元画像データの全てに対して処理が終了すると（ステップＳ２６のＹＥＳ）、当該処理を終了する。
【００３７】
一方、画像データ転送部４７は、まず、処理内容によりベルトのライン数を算出する（ステップＳ３０）。本実施形態では、上述したように、画像データ転送部４７が処理するベルトのライン数は、入力側が１５ライン、出力側は拡大されて３０ラインとなる。次に、画像データ転送部４７は、リングバッファＡ、またはＢに入力データがあるか否かを判断する（ステップＳ３２）。そして、入力データがない場合には（ステップＳ３２のＮＯ）、ステップＳ３２に戻り、入力データがあるまで待機する。
【００３８】
一方、リングバッファＡ、またはＢに入力データがある場合には（ステップＳ３２のＹＥＳ）、画像データ転送部４７は、リングバッファ変更信号がイネーブルであるか否かを判断する（ステップＳ３４）。例えば、前述した画像データ転送部４５の処理においては、第１ベルトから第２ベルトまでは、リングバッファ変更信号はディセーブルである。このように、リングバッファ変更信号がディセーブルである場合には（ステップＳ３４のＮＯ）、画像データ転送部４７は、リングバッファＡを使用するバッファとして選択する（ステップＳ４０）。次に、画像データ転送部４７は、リングバッファＡから中間データを入力して画素数変換部４６に供給し、画素数変換部４６からの画像データを処理後の画像データの記憶領域５１に格納し、入力したライン数ＬＮｄを算出する（ステップＳ４２）。
【００３９】
具体的には、画像データ転送部４７は、図７（ａ）に示すように、処理後の画像データの記憶領域５１に設定された、リングバッファＡの記憶領域５２（０ｘ０００Ｄ７Ａ００）から第１ベルトの中間データ（１５ライン）を画素数変換部４６に供給し、画素数変換部４６からの拡大処理されたデータ（３０ライン：第１ベルトの前半）を、処理後の画像データの記憶領域５１（０ｘ０００２５８００〜）に格納する。このとき、入力ベルトは１５ラインなので、入力したライン数ＬＮｄ＝１５になる。
【００４０】
次に、画像データ転送部４７は、全ての処理が終了したか否かを判断し（ステップＳ４４）、終了していない場合には（ステップＳ４４のＮＯ）、ステップＳ３２に戻り、上述した処理を繰り返す。この場合も、リングバッファ変更信号はディセーブルであるので、画像データ転送部４７は、図７（ｂ）に示すように、処理後の画像データの記憶領域５１に設定された、リングバッファＡの記憶領域５２から次の中間データ（１５ライン）を画素数変換部４６に供給し、画素数変換部４６からの拡大処理された画像データ（３０ライン：第１ベルトの後半）を、処理後の画像データの記憶領域５１（０ｘ０００２Ａ３００〜）に格納する。このとき、入力ベルトは１５ラインなので、入力したライン数ＬＮｄ＝３０になる。
【００４１】
以下、同様にして、画像データ転送部４７は、図７（ｃ）に示すように、処理後の画像データの記憶領域５１に設定された、リングバッファＡの記憶領域５２から次の中間データ（１５ライン：第２ベルトの前半）を画素数変換部４６に供給し、画素数変換部４６からの拡大処理された画像データ（３０ライン：第２ベルトの前半）を、処理後の画像データの記憶領域５１（０ｘ０００２ＥＥ００〜）に格納する。このとき、入力ベルトは１５ラインなので、入力したライン数ＬＮｄ＝４５になる。
【００４２】
さらに、画像データ転送部４７は、図７（ｄ）に示すように、処理後の画像データの記憶領域５１に設定された、リングバッファＡの記憶領域５２から次の中間データ（１５ライン：第２ベルトの後半）を画素数変換部４６に供給し、画素数変換部４６からの拡大処理された画像データ（３０ライン：第２ベルトの後半）を、処理後の画像データの記憶領域５１（０ｘ０００２ＥＥ００〜）に格納する。このとき、入力ベルトは１５ラインなので、入力したライン数ＬＮｄ＝６０になる。
【００４３】
なお、各画像データ転送部４５、４７は、非同期で動作しているため、上述した処理の間に、リングバッファ変更信号がイネーブルになるが、画像データ転送部４５の変更ライン数ＬＮｃは６０ラインであるため、ＬＮｄ＜ＬＮｃとなり、リングバッファの変更は行われない。
【００４４】
そして、図７（ｄ）に示す段階、すなわち、第２ベルトの後半に対する処理が終了した時点で、入力したライン数ＬＮｄ＝６０になり、ＬＮｄ＜ＬＮｃでなくなるので（ステップＳ３６のＮＯ）、リングバッファＢを使用するように切り替える（ステップＳ３８）。リングバッファＢの開始アドレスは、入力される元画像の先頭アドレスになるため、０ｘ００００００００になる。次に、画像データ転送部４７は、リングバッファＢから中間データを入力して画素数変換部４６に供給し、画素数変換部４６からの画像データを処理後の画像データの記憶領域５１に格納し、入力したライン数ＬＮｄを算出する（ステップＳ４２）。
【００４５】
具体的には、画像データ転送部４７は、図８（ａ）に示すように、元画像データの記憶領域５０に設定された、リングバッファＢの記憶領域５３（０ｘ００００００００）から次の中間データ（１５ライン：第３ベルトの前半）を画素数変換部４６に供給し、画素数変換部４６からの拡大処理された画像データ（３０ライン：第３ベルトの前半）を、処理後の画像データの記憶領域５１に格納する。このとき、入力ベルトは１５ラインなので、入力したライン数ＬＮｄ＝７５になる。
【００４６】
次に、画像データ転送部４７は、この場合も、リングバッファ変更信号はイネーブルであり、ＬＮｄ＞ＬＮｃであるので、画像データ転送部４７は、図８（ｂ）に示すように、元画像データの記憶領域５０に設定された、リングバッファＢの記憶領域５３から次の中間データ（１５ライン：第３ベルトの後半）を画素数変換部４６に供給し、画素数変換部４６からの拡大処理された画像データ（３０ライン：第３ベルトの後半）を、処理後の画像データの記憶領域５１に格納する。このとき、入力ベルトは１５ラインなので、入力したライン数ＬＮｄ＝９０になる。
【００４７】
以下、同様にして、画像データ転送部４７は、図８（ｃ）に示すように、元画像データの記憶領域５０に設定された、リングバッファＢの記憶領域５３から次の中間データ（１５ライン：第３ベルトの前半）を画素数変換部４６に供給し、画素数変換部４６からの拡大処理された画像データ（３０ライン：第４ベルトの前半）を、処理後の画像データの記憶領域５１に格納する。このとき、入力ベルトは１５ラインなので、入力したライン数ＬＮｄ＝１０５になる。
【００４８】
さらに、画像データ転送部４７は、図８（ｄ）に示すように、元画像データの記憶領域５０に設定された、リングバッファＢの記憶領域５３から次の中間データ（１５ライン：第４ベルトの後半）を画素数変換部４６に供給し、画素数変換部４６からの拡大処理された画像データ（３０ライン：第４ベルトの後半）を、処理後の画像データの記憶領域５１に格納する。このとき、入力ベルトは１５ラインなので、入力したライン数ＬＮｄ＝１２０になる。
【００４９】
その後、画像データ転送部４７は、元画像データの記憶領域５０に設定された、リングバッファＢから中間データを読出して画素数変換部４６に供給するとともに、画素数変換部４６からの画像データを、処理後の画像データの記憶領域５１に格納するという処理を最終ベルトまで繰り返す。そして、全てに対して処理が終了すると（ステップＳ４４のＹＥＳ）、当該処理を終了する。
【００５０】
上述した実施形態によれば、使用する前の元画像データの記憶領域５０の読み出し済みの利用可能領域、及び処理済みの画像データの記憶領域５１の未使用領域に、ＲＡＭ３２の利用状況に応じてリングバッファに用いる記憶領域を確保するようにしたので、入出力画像データの記憶領域とは別に必要であったリングバッファ専用の記憶領域が不要となり、メモリを有効利用することができる。
【００５１】
また、本実施形態によれば、ＲＡＭ３２の利用状況に基づく所定のタイミングで、処理済みの画像データの記憶領域５１の未格納である記憶領域に確保したリングバッファＡから、元画像データの記憶領域５０の読み出し済みの画像データが格納されていた記憶領域に確保したリングバッファＢへと切り替えるようにしたので、画像処理によるメモリ使用に支障をきたすことなく、リングバッファ専用の記憶領域を不要とし、メモリを有効利用することができる。
【００５２】
また、本実施形態によれば、元画像データの記憶領域５０における空き領域のサイズが、画像処理で必要とする作業領域のサイズ以上になるまでは、処理後の画像データ５１の記憶領域に確保したリングバッファＡを作業領域として用い、元画像データの記憶領域５０における空き領域のサイズが、画像処理で必要とする作業領域のサイズ以上になった後の所定タイミングで、元画像データの記憶領域５０に確保したリングバッファＢへと切り替えるようにしたので、画像処理によるメモリ使用に支障をきたすことなく、リングバッファ専用の記憶領域を不要とし、メモリを有効利用することができる。
【００５３】
また、本実施形態によれば、元画像データの記憶領域５０における空き領域のサイズが、画像処理で必要とする作業領域のサイズ以上になった後、処理後の画像データ５１の記憶領域に確保したリングバッファＡのサイズが画像処理で必要とする作業領域のサイズ未満になるまでの間の所定タイミングで、画像処理を行うための作業領域を、元画像データの記憶領域５０における空き領域へと切り替えるようにしたので、画像処理によるメモリ使用に支障をきたすことなく、リングバッファ専用の記憶領域を不要とし、メモリを有効利用することができる。
【００５４】
また、本実施形態によれば、元画像データの記憶領域５０における空き領域のサイズが、画像処理で必要とする作業領域のサイズ以上になったタイミングで、画像処理を行うための作業領域を、元画像データの記憶領域５０における空き領域へと切り替えるようにしたので、画像処理によるメモリ使用に支障をきたすことなく、リングバッファ専用の記憶領域を不要とし、メモリを有効利用することができる。
【００５５】
また、本実施形態によれば、画像変換部４３と画像補正部４４による画像処理後の中間データを一時的に格納する作業領域として、処理後の画像データの記憶領域５１に確保したリングバッファＡと元画像データの記憶領域５０に確保したリングバッファＢとを用いるようにしたので、画像処理によるメモリ使用に支障をきたすことなく、リングバッファ専用の記憶領域を不要とし、メモリを有効利用することができる。
【００５６】
なお、本実施形態において、画像データ転送部４５、４７の処理内容の違いにより双方に処理速度に違いがあると、画像データ転送部４５の処理が待ち合わず、画像データ転送部４７に対する中間データの準備が遅れる可能性がある。本実施形態では、リングバッファＡ、Ｂの容量を調整することで、画像データ転送部４５、４７の処理速度の違いを吸収することが可能である。但し、何らかの理由で双方の処理速度の違いを吸収できない場合には、画像データ転送部４７による処理（リングバッファＡ、Ｂからのデータの読み込み）を待機させる必要が生じる。このような場合には、例えば、画像データ転送部４５によるベルト単位での処理が終了する度に（リングバッファＡ、Ｂに格納した後）、終了した旨を画像データ転送部４７に通知するようにしてもよい。画像データ転送部４７は、画像データ転送部４５からあるベルトに対する処理が終了した旨の通知を受信すると、処理が終了したベルトに対する処理を実行すればよい。あるいは、画像データ転送部４５、４７の処理進捗状況を管理する管理手段を別途設け、該管理手段で画像データ転送部４５、及び画像転送部４７による処理の進捗程度を調整するようにしてもよい。
【００５７】
以上、この発明のいくつかの実施形態について説明したが、この発明は、これらに限定されるものではなく、特許請求の範囲に記載された発明とその均等の範囲を含むものである。
以下に、本願出願の特許請求の範囲に記載された発明を付記する。
【００５８】
（付記１）
付記１に記載の発明は、少なくとも、元画像データを記憶する第１の領域と前記元画像に対する画像処理後の画像データを記憶する第２の領域とを有する記憶手段と、所定の画像処理を施す画像処理手段と、前記記憶手段の第１の領域に格納されている元画像データを、所定の分割単位で逐次読み出して前記画像処理手段に供給し、前記画像処理手段によって画像処理された画像データを前記記憶手段の第２の領域に逐次格納する過程で、前記画像処理手段による所定の画像処理のための作業領域を、前記第２の領域内の処理済みの画像データが未格納である領域と前記第１の領域内の読み出し済みの画像データが格納されていた領域とに、前記記憶手段の利用状況に基づいて確保する画像データ転送手段とを備えることを特徴とする画像処理装置である。
【００５９】
（付記２）
付記２に記載の発明は、前記画像データ転送手段は、前記所定の画像処理を行うための作業領域を、前記記憶手段の利用状況に基づく所定のタイミングで、前記第２の領域内の処理済みの画像データが未格納である領域から、前記第１の領域内の読み出し済みの画像データが格納されていた領域へと切り替えることを特徴とする付記１に記載の画像処理装置である。
【００６０】
（付記３）
付記３に記載の発明は、前記画像データ転送手段は、前記第１の領域内の読み出し済みの画像データが格納されていた領域のサイズが前記所定の画像処理で必要とする作業領域のサイズ以上になるまでの間、前記所定の画像処理を行うための作業領域を、前記第２の領域内の処理済みの画像データが未格納である領域に確保し、前記第１の領域内の読み出し済みの画像データが格納されていた領域のサイズが前記所定の画像処理で必要とする作業領域のサイズ以上になった後の所定タイミングで、前記所定の画像処理を行うための作業領域を、前記第１の領域内の読み出し済みの画像データが格納されていた領域へと切り替えることを特徴とする付記２に記載の画像処理装置である。
【００６１】
（付記４）
付記４に記載の発明は、前記画像データ転送手段は、前記第１の領域内の読み出し済みの画像データが格納されていた領域のサイズが前記所定の画像処理で必要とする作業領域のサイズ以上になった後、前記第２の領域内の処理済みの画像データが未格納である領域のサイズが前記所定の画像処理で必要とする作業領域のサイズ未満になるまでの間の所定タイミングで、前記所定の画像処理を行うための作業領域を、前記第１の領域内の読み出し済みの画像データが格納されていた領域へと切り替えることを特徴とする付記３に記載の画像処理装置である。
【００６２】
（付記５）
付記５に記載の発明は、前記画像データ転送手段は、前記第１の領域内の読み出し済みの画像データが格納されていた領域のサイズが前記所定の画像処理で必要とする作業領域のサイズ以上になったタイミングで、前記所定の画像処理を行うための作業領域を、前記第１の領域内の読み出し済みの画像データが格納されていた領域へと切り替えることを特徴とする付記４に記載の画像処理装置である。
【００６３】
（付記６）
付記６に記載の発明は、前記画像処理手段は、前記第１の領域に格納されている元画像データに対して所定の分割単位で第１の画像処理を行う第１の画像処理手段と、この第１の画像処理手段によって前記第１の画像処理が施された後の画像データに対して所定の分割単位で第２の画像処理を行う第２の画像処理手段とを備え、前記作業領域は、前記第１の画像処理手段による第１の画像処理結果を一時的に格納する作業領域であることを特徴とする付記１乃至５のいずれかに記載の画像処理装置である。
【００６４】
（付記７）
付記７に記載の発明は、メモリ内の第１の領域に格納されている元画像データを、所定の分割単位で逐次読み出すステップと、前記所定の分割単位で逐次読み出される元画像データに対して所定の画像処理を施すステップと、前記所定の画像処理のための作業領域を、前記第２の領域内の処理済みの画像データが未格納である領域と前記第１の領域内の読み出し済みの画像データが格納されていた領域とに、前記メモリの利用状況に基づいて確保するステップと、前記所定の画像処理が施された画像データを、前記作業領域を介して前記メモリの第２の領域に逐次格納するステップとを含むことを特徴とする画像処理方法である。
【００６５】
（付記８）
付記８に記載の発明は、コンピュータに、メモリ内の第１の領域に格納されている元画像データを、所定の分割単位で逐次読み出す機能、前記所定の分割単位で逐次読み出される元画像データに対して所定の画像処理を施す機能、前記所定の画像処理のための作業領域を、前記第２の領域内の処理済みの画像データが未格納である領域と前記第１の領域内の読み出し済みの画像データが格納されていた領域とに、前記メモリの利用状況に基づいて確保する機能、前記所定の画像処理が施された画像データを、前記作業領域を介して前記メモリの第２の領域に逐次格納する機能を実行させることを特徴とするプログラムである。
【符号の説明】
【００６６】
３０  ＣＰＵ
３１  ＡＳＩＣ
３２  ＲＡＭ
３３  ＣＣＤ
３４  ＲＯＭ
３５  ＬＣＤ
３６  キーボード
３７  電源部
４０  ＤＭＡＣ
４１  メモリ制御部
４２  ＣＣＤ制御部
４３  画像変換部
４４  画像補正部
４５  画像データ転送部
４６  画素数変換部
４７  画像データ転送部
４８  キーボード制御部
４９  ＬＣＤ制御部
５０  元画像データの記憶領域
５１  処理後の画像データの記憶領域
５２  リングバッファＡの記憶領域
５３  リングバッファＢの記憶領域
【図１】
2014120961.tif 000003
【図２】
2014120961.tif 000004
【図３】
2014120961.tif 000005
【図４】
2014120961.tif 000006
【図５】
2014120961.tif 000007
【図６】
2014120961.tif 000008
【図７】
2014120961.tif 000009
【図８】
2014120961.tif 000010
【図９】
2014120961.tif 000011
【図１０】
2014120961.tif 000012
【図１１】
2014120961.tif 000013