(57)【要約】【課題】ＣＰＵの負荷を軽減することにより高速な画像補完を実現可能な画像処理装置を提供すること。【解決手段】画像処理装置１は、第１の画像を構成する画素データ及び第２の画像を構成する画素データを記憶する画像メモリ１０（第１の記憶部）と、バッファメモリ４０（第２の記憶部）と、所定の画像補完方法に基づいて、第２の画像を構成する各画素データに対応する第１の画像を構成する各画素データの列方向の座標及び行方向の座標を計算する処理を行うＣＰＵ２０（計算処理部）と、データ転送装置３０（データ転送処理部）と、を含む。データ転送装置３０は、ＣＰＵ２０が計算した列方向の座標及び行方向の座標により特定される各画素データを画像メモリ１０から読み出してバッファメモリ４０に転送する読み出し処理と、バッファメモリ４０に格納された画素データを第２の画像を構成する画素データとして画像メモリ１０に転送する書き込み処理を行う。【選択図】図３
2011259511.tif 000002
【特許請求の範囲】
【請求項１】
第１の画像を縮小又は拡大して第２の画像を生成する処理を行う画像処理装置であって、
前記第１の画像を構成する画素データ及び前記第２の画像を構成する画素データを記憶する第１の記憶部と、
第２の記憶部と、
所定の画像補完方法に基づいて、前記第２の画像を構成する各画素データに対応する前記第１の画像を構成する各画素データの列方向の座標及び行方向の座標を計算する処理を行う計算処理部と、
前記列方向の座標及び前記行方向の座標により特定される各画素データを第１の記憶部から読み出して前記第２の記憶部に転送する読み出し処理と、前記第２の記憶部に格納された画素データを前記第２の画像を構成する画素データとして前記第１の記憶部に転送する書き込み処理を行うデータ転送処理部と、を含むことを特徴とする画像処理装置。
【請求項２】
請求項１において、
前記データ転送処理部は、
前記行方向の座標が同一の画素データ毎に前記読み出し処理及び前記書き込み処理を行うことを特徴とする画像処理装置。
【請求項３】
請求項２において、
前記計算処理部は、
前記データ転送処理部が前記行方向の座標が同一の画素データの読み出し処理を終了する毎に次回の読み出し処理の対象となる画素データの行方向の座標を特定するための情報を前記データ転送処理部に送信し、
前記データ転送処理部は、
前記行方向の座標を特定するための情報に基づいて前記読み出し処理を行うことを特徴とする画像処理装置。
【請求項４】
請求項２又は３において、
前記データ転送処理部は、
読み出し処理の対象となる前記行方向の座標が同一の画素データの当該行方向の座標が前回読み出し処理の対象であった画素データの行方向の座標と同じである場合には、前記読み出し処理を行わずに前記書き込み処理を行うことを特徴とする画像処理装置。
【請求項５】
請求項２乃至４のいずれかにおいて、
前記第２の記憶部は、
前記データ転送処理部が読み出した前記行方向の座標が同一の画素データを格納するためのバッファを２つ以上含み、
前記データ転送処理部は、
前記読み出し処理において、読み出し処理の対象となる前記行方向の座標が同一の画素データの当該行方向の座標が前回読み出し処理の対象であった画素データの行方向の座標と異なる場合には、前記読み出し処理の対象となる前記行方向の座標が同一の画素データを、前回読み出し処理の対象であった画素データが格納されているバッファと異なるバッファに転送し、前記書き込み処理において前回読み出し処理の対象であった画素データを前記第１の記憶部に転送することを特徴とする画像処理装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
第３の記憶部を含み、
前記計算処理部は、
前記列方向の座標を特定するための情報を前記第３の記憶部に格納し、
前記データ転送処理部は、
前記第３の記憶部に格納された前記列方向の座標を特定するための情報に基づいて前記読み出し処理を行うことを特徴とする画像処理装置。
【請求項７】
請求項６において、
前記計算処理部は、
前記行方向の座標を特定するための情報を前記第３の記憶部に格納し、
前記データ転送処理部は、
前記第３の記憶部に格納された前記行方向の座標を特定するための情報に基づいて前記読み出し処理を行うことを特徴とする画像処理装置。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記画像補完方法は最近傍法であることを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に関する。
【背景技術】
【０００２】
従来より、画像の補完技術として最近傍法や線形補完法が知られている。例えば、最近傍法は、最も基本的な手法で処理が単純であるため補完精度は低いが比較的高速な補完を実現することができる。そのため、高精度が必要とされない程度の縮小方向の補完や、低速な演算装置等の状況下では最近傍法による画像補完が有効である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３００３７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、これらの補完技術に基づく従来の画像処理装置では、画像メモリから元画像を読み込んで補完後の画像に必要な画素の座標を計算し、計算した座標の画素データにより補完後の画像を生成して画像メモリに書き込む処理をＣＰＵが行っている。そのため、元画像や補完後の画像が大きい場合は画像メモリに対して画素データを読み書きする回数や座標計算の回数も増えるためＣＰＵの負荷が増大し、装置全体としての高速処理を実現することが難しかった。
【０００５】
本発明は、以上のような問題点に鑑みてなされたものであり、ＣＰＵの負荷を軽減することにより高速な画像補完を実現可能な画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
（１）本発明は、第１の画像を縮小又は拡大して第２の画像を生成する処理を行う画像処理装置であって、前記第１の画像を構成する画素データ及び前記第２の画像を構成する画素データを記憶する第１の記憶部と、第２の記憶部と、所定の画像補完方法に基づいて、前記第２の画像を構成する各画素データに対応する前記第１の画像を構成する各画素データの列方向の座標及び行方向の座標を計算する処理を行う計算処理部と、前記列方向の座標及び前記行方向の座標により特定される各画素データを第１の記憶部から読み出して前記第２の記憶部に転送する読み出し処理と、前記第２の記憶部に格納された画素データを前記第２の画像を構成する画素データとして前記第１の記憶部に転送する書き込み処理を行うデータ転送処理部と、を含むことを特徴とする。
【０００７】
所定の画像補完方法は、例えば、最近傍法であってもよい。
【０００８】
本発明によれば、第１の記憶部に対する画素データの読み出し処理と書き込み処理をデータ転送処理部が行うので、計算処理部がこれらの処理を行う必要がない。そのため、計算処理部の負荷が大幅に低減し座標計算処理を高速に行うことができる。
【０００９】
また、本発明によれば、計算処理部による座標計算処理とデータ転送処理部による画素データの転送処理（読み出し処理と書き込み処理）を並行して行うことができるので、高速な画像補完を実現することができる。
【００１０】
また、本発明によれば、計算処理部は第２の画像を構成する各画素データに対応する第１の画像を構成する各画素データの列方向の座標及び行方向の座標を計算し、データ転送処理部は、計算処理部が計算した列方向の座標及び行方向の座標により特定される各画素データを第１の記憶部から読み出して第２の記憶部に転送する。すなわち、第１の画像を縮小して第２の画像を生成する場合には第１の画像のすべての画素データを読み出すことなく、第２の画像を生成するために必要な画素データのみを第１の記憶部から読み出すことができる。従って、第１の画像の画素データの読み出し処理を高速化することができるので高速な画像補完を実現することができる。
【００１１】
（２）本発明の画像処理装置は、前記データ転送処理部は、前記行方向の座標が同一の画素データ毎に前記読み出し処理及び前記書き込み処理を行うことを特徴とする。
【００１２】
本発明によれば、第２の画像を構成する各画素データに対応する第１の画像を構成する各画素データのうち、列方向の座標が同一の画素データの読み出し処理を行い、当該列方向の座標が同一の画素データを第２の画像の１行分の画素データとして書き込み処理を行う。従って、第２の画像を構成する１行分の画素データ毎に読み出し処理及び書き込み処理を行うことができる。
【００１３】
（３）本発明の画像処理装置は、前記計算処理部は、前記データ転送処理部が前記行方向の座標が同一の画素データの読み出し処理を終了する毎に次回の読み出し処理の対象となる画素データの行方向の座標を特定するための情報を前記データ転送処理部に送信し、前記データ転送処理部は、前記行方向の座標を特定するための情報に基づいて前記読み出し処理を行うことを特徴とする。
【００１４】
（４）本発明の画像処理装置は、前記データ転送処理部は、読み出し処理の対象となる前記行方向の座標が同一の画素データの当該行方向の座標が前回読み出し処理の対象であった画素データの行方向の座標と同じである場合には、前記読み出し処理を行わずに前記書き込み処理を行うことを特徴とする。
【００１５】
本発明によれば、第２の画像を構成する１行分の画素データに対応する第１の画像を構成する画素データと同一の画素データが前回の読み出し処理によりすでに第２の記憶部に格納されている場合には読み出し処理を行わないようにすることができる。すなわち、不要な読み出し処理を省くことにより高速な画像補完を実現することができる。
【００１６】
（５）本発明の画像処理装置は、前記第２の記憶部は、前記データ転送処理部が読み出した前記行方向の座標が同一の画素データを格納するためのバッファを２つ以上含み、前記データ転送処理部は、前記読み出し処理において、読み出し処理の対象となる前記行方向の座標が同一の画素データの当該行方向の座標が前回読み出し処理の対象であった画素データの行方向の座標と異なる場合には、前記読み出し処理の対象となる前記行方向の座標が同一の画素データを、前回読み出し処理の対象であった画素データが格納されているバッファと異なるバッファに転送し、前記書き込み処理において前回読み出し処理の対象であった画素データを前記第１の記憶部に転送することを特徴とする。
【００１７】
本発明によれば、第１の記憶部から読み出した画素データを、第１の記憶部に転送する画素データを格納するバッファと常に異なるバッファに格納することができる。すなわち、データ転送処理部は、書き込み処理において必要となる画素データを上書きすることなく読み出し処理を並行して行うことができる。従って、高速な画像補完を実現することができる。
【００１８】
（６）本発明の画像処理装置は、第３の記憶部を含み、前記計算処理部は、前記列方向の座標を特定するための情報を前記第３の記憶部に格納し、前記データ転送処理部は、前記第３の記憶部に格納された前記列方向の座標を特定するための情報に基づいて前記読み出し処理を行うことを特徴とする。
【００１９】
本発明によれば、計算処理部があらかじめ列方向の座標を計算して第３の記憶部に記憶させておくことができる。すなわち、データ転送処理部は、第３の記憶部に格納された情報に基づいて、必要な画素の読み出し処理を行うことができる。従って、計算処理部は行方向の座標の計算のみを行えばよくなるため計算処理部の負荷を低減することができるので、高速な画像補完を実現することができる。
【００２０】
（７）本発明の画像処理装置は、前記計算処理部は、前記行方向の座標を特定するための情報を前記第３の記憶部に格納し、前記データ転送処理部は、前記第３の記憶部に格納された前記行方向の座標を特定するための情報に基づいて前記読み出し処理を行うことを特徴とする。
【００２１】
本発明によれば、計算処理部があらかじめ行方向の座標と列方向の座標を計算して第３の記憶部に記憶させておくことができる。すなわち、データ転送処理部は、第３の記憶部に格納された情報に基づいて、計算処理部から独立して必要な画素の読み出し処理を行うことができる。従って、計算処理部は、データ転送処理部によるデータ転送処理の間、座標計算を行う必要がなく計算処理部の負荷を大幅に低減することができる。
【００２２】
（８）本発明の画像処理装置は、前記画像補完方法は最近傍法であることを特徴とする。
【００２３】
最近傍法によれば補完座標を生成するための特別な計算を行う必要がないので、本発明によれば、第１の記憶部ら読み出して第２の記憶部に転送した画素データを、第２の画像を構成する画素データとして第１の記憶部に転送して書き込む処理を行うだけで、簡単かつ高速に第２の画像を生成することができる。
【図面の簡単な説明】
【００２４】
【図１】最近傍法による縮小画像の生成について説明するための図。
【図２】最近傍法による拡大画像の生成について説明するための図。
【図３】本実施の形態の画像処理装置の機能ブロック図の一例。
【図４】画像メモリの構成例について説明するための図。
【図５】バッファメモリの構成例について説明するための図。
【図６】座標メモリの構成例について説明するための図。
【図７】データ転送装置の構成例について説明するための図。
【図８】ＣＰＵの処理のフローチャートの第１の例を示す図。
【図９】データ転送装置の処理のフローチャートの第１の例を示す図。
【図１０】列座標特定情報記憶領域に書き込まれた列座標特定情報の一例。
【図１１】列座標特定情報記憶領域に書き込まれた列座標特定情報の一例。
【図１２】ＣＰＵの処理のフローチャートの第２の例を示す図。
【図１３】データ転送装置の処理のフローチャートの第２の例を示す図。
【発明を実施するための形態】
【００２５】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【００２６】
１．最近傍法
図１及び図２は、最近傍法による縮小画像及び拡大画像の生成についてそれぞれ説明するための図である。
【００２７】
図１は、横方向（列方向）に４０列、縦方向（行方向）に４０行の１６００個の画素により構成される画像１００（第１の画像に相当し、以下、元画像という）を、横方向（列方向）に３０列、縦方向（行方向）に３０行の９００個の画素により構成される画像１１０（第２の画像に相当し、以下、縮小画像という）に縮小する場合の一例であり、図２は、図１と同じ元画像１００を、５０列５０行の２５００個の画素により構成される画像１２０（第２の画像に相当し、以下、拡大画像という）に拡大する場合の一例である。元画像又は縮小画像を構成する各画素の位置は、縦方向の座標（以下、行座標という）と横方向の座標（以下、列座標という）によって特定される。例えば、縮小画像の０行目の画素の各座標は（０，０）、（１，０）、（２，０）、（３，０）、（４，０）、（５，０）、（６，０）、・・・、（２９，０）である。
【００２８】
最近傍法では、元画像を構成する画素において、縮小画像又は拡大画像を構成する各画素に最も近い座標の画素を選択することにより、縮小画像又は拡大画像を生成する。例えば、図１の場合、例えば縮小画像の０行目の画素の行座標及び列座標を４０／３０倍（４／３倍）して得られる座標（０，０）、（４／３，０）、（８／３，０）、（４，０）、（１６／３，０）、（２０／３，０）、（８，０）、・・・、（１１６／３，０）を最も近い整数の座標に変換することにより、元画像の対応する画素の座標（０，０）、（１，０）、（３，０）、（４，０）、（５，０）、（７，０）、（８，０）、・・・、（３９，０）を得る。すなわち、元画像における座標（０，０）、（１，０）、（３，０）、（４，０）、（５，０）、（７，０）、（８，０）、・・・、（３９，０）の画素が、縮小画像における座標（０，０）、（１，０）、（２，０）、（３，０）、（４，０）、（５，０）、（６，０）、・・・、（２９，０）の画素として選択される。
【００２９】
見方を変えれば、縮小画像における０行目の３０画素は、元画像における０行目の４０画素のうち、列座標が２、６、・・・、３８の画素（すなわち、列座標が４ｎ＋２（ｎは０〜９の整数）の画素）を間引くことにより生成することができる。縮小画像における他の行の３０画素についても、元画像における対応する行の４０画素のうち、列座標が４ｎ＋２（ｎは０〜９の整数）の画素を間引くことにより生成することができる。同様に、縮小画像における各列の３０画素についても、元画像における対応する列の４０画素のうち、行座標が４ｎ＋２（ｎは０〜９の整数）の画素を間引くことにより生成することができる。結局、最近傍法によれば、４０×４０の元画像の座標（４ｎ＋２，ｋ）（ｎは０〜９の整数、ｋは０〜３９の整数）の画素及び座標（ｋ，４ｎ＋２）（ｋは０〜３９の整数、ｎは０〜９の整数）の画素を間引くことにより３０×３０の縮小画像を生成することができる。
【００３０】
同様に、図２の場合、例えば拡大画像の０行目の画素の行座標及び列座標を４０／５０倍（４／５倍）して得られる座標（０，０）、（４／５，０）、（８／５，０）、（１２／５，０）、（１６／５，０）、（４，０）、（２４／５，０）、（２８／５，０）、（３２／５，０）、（３６／５，０）、（８，０）、・・・、（１９６／５，０）を最も近い整数の座標に変換することにより、元画像の対応する画素の座標（０，０）、（１，０）、（２，０）、（２，０）、（３，０）、（４，０）、（５，０）、（６，０）、（６，０）、（７，０）、（８，０）、・・・、（３９，０）を得る。すなわち、元画像における座標（０，０）、（１，０）、（２，０）、（２，０）、（３，０）、（４，０）、（５，０）、（６，０）、（６，０）、（７，０）、（８，０）、・・・、（３９，０）の画素が、拡大画像における座標（０，０）、（１，０）、（２，０）、（３，０）、（４，０）、（５，０）、（６，０）、（７，０）、（８，０）、（９，０）、（１０，０）、・・・、（４９，０）の画素として選択される。
【００３１】
見方を変えれば、拡大画像における０行目の５０画素は、元画像における０行目の４０画素のうち、列座標が２、６、・・・、３８の画素（すなわち、列座標が４ｎ＋２（ｎは０〜９の整数）の画素）を複製することにより生成することができる。拡大画像における他の行の５０画素についても、元画像における対応する行の４０画素のうち、列座標が４ｎ＋２（ｎは０〜９の整数）の画素を複製することにより生成することができる。同様に、拡大画像における各列の５０画素についても、元画像における対応する列の４０画素のうち、行座標が４ｎ＋２（ｎは０〜９の整数）の画素を複製することにより生成することができる。結局、最近傍法によれば、４０×４０の元画像の座標（４ｎ＋２，ｋ）（ｎは０〜９の整数、ｋは０〜３９の整数）の画素及び座標（ｋ，４ｎ＋２）（ｋは０〜３９の整数、ｎは０〜９の整数）の画素を複製することにより５０×５０の拡大画像を生成することができる。
【００３２】
２．画像処理装置
図３は、本実施の形態の画像処理装置の機能ブロック図の一例である。
【００３３】
画像処理装置１は、画像メモリ１０、ＣＰＵ２０、データ転送装置３０、バッファメモリ４０を含んで構成されており、さらに座標メモリ５０を含んでいてもよい。画像メモリ１０、ＣＰＵ２０、データ転送装置３０、バッファメモリ４０、座標メモリ５０はバス６０（データバス、アドレスバス等）に接続されている。
【００３４】
画像メモリ１０は、第１の記憶部として機能し、第１の画像（元画像）を構成する画素データ及び第２の画像（縮小画像又は拡大画像）を構成する画素データを記憶する。
【００３５】
バッファメモリ４０は、第２の記憶部として機能する。バッファメモリ４０は、データ転送装置３０が読み出した行方向の座標が同一の画素データを格納するためのバッファを２つ以上含むように構成されていてもよい。
【００３６】
ＣＰＵ２０は、計算処理部として機能し、所定の画像補完方法に基づいて、第２の画像を構成する各画素データに対応する第１の画像を構成する各画素データの列方向の座標及び行方向の座標を計算する処理を行う。所定の画像補完方法は、図１及び図２で説明した最近傍法であってもよい。
【００３７】
データ転送装置３０は、データ転送処理部として機能し、ＣＰＵ２０が計算した列方向の座標及び行方向の座標により特定される各画素データを画像メモリ１０から読み出してバッファメモリ４０に転送する読み出し処理と、バッファメモリ４０に格納された画素データを第２の画像を構成する画素データとして画像メモリに転送する書き込み処理を行う。
【００３８】
データ転送装置３０は、行方向の座標が同一の画素データ毎に読み出し処理及び書き込み処理を行うようにしてもよい。この場合、ＣＰＵ２０は、データ転送装置３０が行方向の座標が同一の画素データの読み出し処理を終了する毎に次回の読み出し処理の対象となる画素データの行方向の座標を特定するための情報をデータ転送装置３０に送信し、データ転送装置３０は行方向の座標を特定するための情報に基づいて読み出し処理を行うようにしてもよい。
【００３９】
また、データ転送装置３０は、読み出し処理の対象となる行方向の座標が同一の画素データの当該行方向の座標が前回読み出し処理の対象であった画素データの行方向の座標と同じである場合には、読み出し処理を行わずに書き込み処理を行うようにしてもよい。
【００４０】
また、データ転送装置３０は、読み出し処理において、読み出し処理の対象となる行方向の座標が同一の画素データの当該行方向の座標が前回読み出し処理の対象であった画素データの行方向の座標と異なる場合には、読み出し処理の対象となる行方向の座標が同一の画素データを、前回読み出し処理の対象であった画素データが格納されているバッファと異なるバッファに転送し、書き込み処理において前回読み出し処理の対象であった画素データを画像メモリ１０に転送するようにしてもよい。
【００４１】
座標メモリ５０は、第３の記憶部として機能する。画像処理装置１が座標メモリ５０を含む場合、ＣＰＵ２０は、列方向の座標を特定するための情報を座標メモリ５０に格納し、データ転送装置３０は、座標メモリ５０に格納された列方向の座標を特定するための情報に基づいて読み出し処理を行うようにしてもよい。また、ＣＰＵ２０は、さらに、行方向の座標を特定するための情報を座標メモリ５０に格納し、データ転送装置３０は、座標メモリ５０に格納された行方向の座標を特定するための情報に基づいて読み出し処理を行うようにしてもよい。
【００４２】
図４は、画像メモリ１０の構成例について説明するための図である。
【００４３】
画像メモリ１０は、元画像（第１の画像）を構成する画素データを記憶するための元画像記憶領域１２を含む。１つの画素データは、例えば、それぞれ１バイトのＲデータ、Ｇデータ、Ｂデータを含む３バイトデータとして構成される。図１で説明した４０×４０の画素により構成される元画像であれば、１６００個の画素データの各々が３バイトの記憶領域を必要とするので元画像記憶領域１２は少なくとも４．８ｋバイト必要である。そして、例えば、元画像の座標（０，０）の画素のＲデータ、座標（０，０）の画素のＧデータ、座標（０，０）の画素のＢデータ、座標（１，０）の画素のＲデータ、座標（１，０）の画素のＧデータ、座標（１，０）の画素のＢデータ、・・・の順に行方向を優先して元画像記憶領域１２に記憶されている。
【００４４】
また、画像メモリ１０は、補完画像（第２の画像に相当する縮小画像または拡大画像）を構成する画素データを記憶するための補完画像記憶領域１４を含む。図１で説明した３０×３０の画素により構成される縮小画像であれば、補完画像記憶領域１４は、９００個の画素データ（Ｒデータ、Ｇデータ、Ｂデータから成る３バイトデータ）を記憶するために少なくとも２．７ｋバイト必要である。一方、図２で説明した５０×５０の画素により構成される拡大画像であれば、補完画像記憶領域１４は、２５００個の画素データを記憶するために少なくとも７．５ｋバイト必要である。そして、例えば、元画像記憶領域１２と同様のアドレス順により、補完画像記憶領域１４において補完画像を構成する各画像データが格納される。
【００４５】
なお、元画像記憶領域１２、補完画像記憶領域１４のベースアドレス（図４ではそれぞれ００００Ｈ、４０００Ｈ）は、データ転送装置３０の内部レジスタ（それぞれ、元画像記憶領域ベースアドレス設定レジスタ、補完画像記憶領域ベースアドレス設定レジスタ）に所定の設定値を書き込むことにより可変に設定することができるようにしてもよい。
【００４６】
図５は、バッファメモリ４０の構成例について説明するための図である。
【００４７】
バッファメモリ４０は、補完画像を構成する１行分の画素データを一時的に格納するための記憶領域４２（バッファ０）を含む。図１で説明した３０×３０の画素により構成される縮小画像であれば、バッファ０は、１行分の３０個の画素データを格納するために９０バイト以上あればよい。また、図２で説明した５０×５０の画素により構成される拡大画像であれば、バッファ０は、１行分の５０個の画素データを格納するために１５０バイト以上あればよい。そして、例えば、補完画像のＸ行目の画素について、座標（０，Ｘ）の画素のＲデータ、Ｇデータ、Ｂデータ、座標（１，Ｘ）の画素のＲデータ、Ｇデータ、Ｂデータ、・・・の順にバッファ０に一時的に格納される。
【００４８】
バッファメモリ４０は、補完画像を構成する１行分の画素データを一時的に格納するための他の記憶領域４４（バッファ１）を含むようにしてもよい。すなわち、バッファメモリ４０はバッファ０とバッファ１のダブルバッファにより構成されていてもよい。バッファ１はバッファ０と同じ大きさの記憶領域に割り当てられる。そして、例えば、バッファ０に補完画像のＸ行目の画素データ（前回読み出し処理の対象であった１行分の画素データ）が格納されている場合には、バッファメモリ１にはＸ＋１行目の画素データ（今回読み出し処理の対象となる１行分の画素データ）が格納されるようにしてもよい。
【００４９】
このように、バッファメモリ４０が２つのバッファを有する（３つ以上のバッファを有していてもよい）ことにより、データ転送装置３０は、画像メモリ１０から補完画像のＸ行目の画素データに対応する元画像の１行分の画像データを読み出してバッファ０に格納した後、バッファ０に格納された画素データを画像メモリ１０に転送する書き込み処理を行いながら、画像メモリ１０から補完画像のＸ＋１行目の画素データに対応する元画像の１行分の画像データを読み出してバッファ１に格納する読み出し処理を同時に行うことができる。すなわち、バッファメモリ４０が２つ以上のバッファバンクを有することにより、より高速に補完画像を生成することができるようになる。
【００５０】
なお、バッファ０、バッファ１のベースアドレス（図５ではそれぞれ０００Ｈ、１００Ｈ）は、データ転送装置３０の内部レジスタ（それぞれ、バッファ０ベースアドレス設定レジスタ、バッファ１ベースアドレス設定レジスタ）に所定の設定値を書き込むことにより可変に設定することができるようにしてもよい。
【００５１】
図６は、座標メモリ５０の構成例について説明するための図である。
【００５２】
座標メモリ５０は、補完画像の１行分の各画素データに対応する元画像の各画素データの列座標を特定するための情報（列座標特定情報）を格納するための列座標特定情報記憶領域５２を含む。例えば、補完画像のＸ行目の画素について、座標（０，Ｘ）の画素（０列目の画素）に対する列座標特定情報、座標（１，Ｘ）の画素（１列目の画素）に対する列座標特定情報、・・・の順に列座標特定情報記憶領域５２に格納される。図１及び図２で説明したように、最近傍法によれば補完画像の１行分の画素に対応する元画像の各画素の列座標はすべての行で同じ値である。従って、図１で説明した３０×３０の画素により構成される縮小画像であれば、列座標特定情報記憶領域５２は、１行分の３０個の画素データに対する列座標特定情報を格納することができればよい。同様に、図２で説明した５０×５０の画素により構成される拡大画像であれば、列座標特定情報記憶領域５２は、１行分の５０個の画素データに対する列座標特定情報を格納することができればよい。
【００５３】
列座標特定情報記憶領域５２に、補完画像の１行分の画素に対する列座標特定情報をあらかじめ記憶させておくことにより、ＣＰＵ２０は読み出し対象の１行分の画像データの行座標を特定ための情報（行座標特定情報）をデータ転送装置３０に送信するだけで、データ転送装置３０は列座標特定情報記憶領域５２に記憶された列座標特定情報に基づいて補完画像の１行分の各画素を読み出すことができる。すなわち、ＣＰＵ２０がデータ送信装置３０に対して読み出し対象の各画素の列座標を送信する必要がないので、ＣＰＵ２０の負荷を軽減することができる。
【００５４】
さらに、座標メモリ５０は、補完画像の１列分の各画素データに対応する元画像の画素データの行座標特定情報を格納するための行座標特定情報記憶領域５４を含むようにしてもよい。例えば、補完画像のＸ列目の画素について、座標（Ｘ，０）の画素（０行目の画素）に対する行座標特定情報、座標（Ｘ，１）の画素（１行目の画素）に対する行座標特定情報、・・・の順に行座標特定情報記憶領域５４に格納される。図１及び図２で説明したように、最近傍法によれば補完画像の１列分の画素に対応する元画像の各画素の行座標はすべての列で同じ値である。従って、図１で説明した３０×３０の画素により構成される縮小画像であれば、行座標特定情報記憶領域５４は、１列分の３０個の画素データに対する行座標特定情報を格納することができればよい。同様に、図２で説明した５０×５０の画素により構成される拡大画像であれば、行座標特定情報記憶領域５４は、１列分の５０個の画素データに対する行座標特定情報を格納することができればよい。
【００５５】
行座標特定情報記憶領域５４に、補完画像の１列分の画素に対する行座標特定情報をあらかじめ記憶させておくことにより、ＣＰＵ２０はデータ送信装置３０に対して読み出し対象の各画素の列座標だけでなく行座標も送信する必要がなくなるので、ＣＰＵ２０の負荷をさらに軽減することができる。
【００５６】
なお、列座標特定情報は、元画像の所定の画素の列座標を基準とする相対座標であってもよい。例えば、図１の場合は、列座標特定情報は、元画像の座標（０，０）の画素を基準とすると０、１、３、４、５、７、８、・・・、３９であってもよい。図２の場合は、列座標特定情報は、元画像の座標（０，０）の画素を基準とすると０、１、２、２、３、４、５、６、６、７、８、・・・、３９であってもよい。また、列座標特定情報は、元画像の所定の画素の列座標を基準とする相対座標であってもよい。例えば、図１の場合は、列座標特定情報は、補完画像の１行において隣合う２つの画素に対応する元画像の２つの画素の列座標の差分であってもよい。例えば、図１の場合は、列座標特定情報は、０、１、３、４、５、７、８、・・・、３９の差分をとった０、１、２、１、１、２、１、・・・、２であってもよい。図２の場合は、列座標特定情報は、０、１、１、０、１、１、１、１、０、１、１、・・・、１であってもよい。行座標特定情報についても同様である。
【００５７】
なお、列座標特定情報記憶領域５２、行座標特定情報記憶領域５４のベースアドレス（図６ではそれぞれ０００Ｈ、８００Ｈ）は、データ転送装置３０の内部レジスタ（それぞれ、列座標特定情報記憶領域ベースアドレス設定レジスタ、行座標特定情報記憶領域ベースアドレス設定レジスタ）に所定の設定値を書き込むことにより可変に設定することができるようにしてもよい。
【００５８】
図７は、データ転送装置３０の構成例について説明するための図である。
【００５９】
例えば、データ転送装置３０は、制御レジスタ３１０、制御レジスタインターフェース部３２０、データ転送制御部３３０、アドレス計算部３４０、データ転送制御部３５０、データ転送制御部３６０、割り込み発生部３７０を含んで構成されている。
【００６０】
制御レジスタ３１０は、データ転送装置３０の動作を制御するレジスタ群である。例えば、制御レジスタ３１０は、データ転送制御部３３０、３５０及び３６０がＤＭＡ（Direct Memory Access）転送を行うための条件を設定するレジスタや元画像の１行分の画素数を設定するレジスタ（元画像１行分画素数設定レジスタ）等を含む。また、制御レジスタ３１０は、図４で説明した元画像記憶領域ベースアドレス設定レジスタ及び補完画像記憶領域ベースアドレス設定レジスタ、図５で説明したバッファ０ベースアドレス設定レジスタ及びバッファ１ベースアドレス設定、図６で説明した列座標特定情報記憶領域ベースアドレス設定レジスタ及び行座標特定情報記憶領域ベースアドレス設定レジスタを含んでいてもよい。
【００６１】
制御レジスタインターフェース部３２０は、バス６０を介してＣＰＵ２０から受け取った設定データを制御レジスタ３１０に設定する処理を行う。
【００６２】
データ転送制御部３３０は、制御レジスタ３１０に含まれるレジスタの設定値に基づいて座標メモリ５０からデータを読み出す処理を行う。具体的には、データ転送制御部３３０は、列座標特定情報記憶領域ベースアドレス設定レジスタの設定値に基づいて、座標メモリ５０の列座標特定情報記憶領域５２のベースアドレスから順にアドレスをインクリメントしながら列座標特定情報を読み出す。座標メモリ５０が行座標特定情報記憶領域５４も有する場合には、データ転送制御部３３０は、さらに、座標メモリ５０の行座標特定情報記憶領域ベースアドレス設定レジスタの設定値に基づいて、座標メモリ５０の行座標特定情報記憶領域５４のベースアドレスから順にアドレスをインクリメントしながら行座標特定情報を読み出す。データ転送制御部３３０は、例えば、座標メモリ５０の読み出しアドレスを格納するレジスタ（座標メモリ読み出しアドレスレジスタ）をインクリメントしながら座標メモリ５０にアクセスすることにより列座標特定情報の転送処理を行うことができる。
【００６３】
アドレス計算部３４０は、画像メモリ１０の読み出しアドレスを計算する処理を行う。具体的には、アドレス計算部３４０は、まず、データ転送制御部３３０が座標メモリから読み出した列座標特定情報から列座標ａを計算する。さらに、座標メモリ５０に行座標特定情報も格納されている場合には、データ転送制御部３３０が座標メモリから読み出した行座標特定情報から行座標ｂを計算する。一方、ＣＰＵ２０が行座標ｂを計算してデータ転送装置３０に送信する場合には、データ転送制御部３３０による行座標ｂの計算は不要である。そして、元画像記憶領域ベースアドレス設定レジスタの設定値ｃと元画像１行分画素数設定レジスタの設定値ｄに基づいて、元画像の座標（ａ,ｂ）の画素データが格納されている画像メモリ１０のアドレスをｃ＋３×（ｄ×ａ＋ｂ）の式により計算する（１画素のＲＧＢデータが３バイト分あるので係数３をかけている）。
【００６４】
データ転送制御部３５０は、制御レジスタ３１０に含まれるレジスタの設定値に基づいて画像メモリ１０から画素データを読み出してバッファメモリ４０に転送する処理を行う。具体的には、データ転送制御部３５０は、アドレス計算部３４０が計算したアドレスから元画像の画素データを読み出し、バッファ０ベースアドレス設定レジスタの設定値に基づいて、読み出した画素データをバッファ０の先頭から順に書き込む処理を１行分の画素データに対して行う。データ転送制御部３５０は、画像メモリ１０から次の１行分の画素データを読み出してバッファメモリ４０に転送する場合には、バッファ１ベースアドレス設定レジスタの設定値に基づいて、読み出した画素データをバッファ１の先頭から順に書き込む処理を行う。すなわち、データ転送制御部３５０は、前回書き込んだバッファと異なるバッファに切り替えながら１行分の画素データをバッファメモリ４０に書き込む処理を行う。データ転送制御部３５０は、例えば、画像メモリ１０の読み出しアドレスを格納するレジスタ（画像メモリ読み出しアドレスレジスタ）とバッファメモリ４０の書き込みアドレスを格納するレジスタ（バッファメモリ書き込みアドレスレジスタ）をそれぞれインクリメントしながら画像メモリ１０及びバッファメモリ４０にアクセスすることにより画素データの転送処理を行うことができる。
【００６５】
データ転送制御部３６０は、制御レジスタ３１０に含まれるレジスタの設定値に基づいてバッファメモリ４０からデータを読み出して画像メモリ１０に転送する処理を行う。具体的には、データ転送制御部３６０は、バッファ０ベースアドレス設定レジスタの設定値に基づいてバッファ０の先頭から順に１行分の画素データを読み出し、補完画像記憶領域ベースアドレス設定レジスタの設定値に基づいて、読み出した画素データを画像メモリ１０の補完画像記憶領域１４のベースアドレスから順にアドレスをインクリメントしながら書き込む処理を行う。データ転送制御部３６０は、バッファメモリ４０から次の１行分の画素データを読み出して画像メモリ１０に転送する場合には、バッファ１ベースアドレス設定レジスタの設定値に基づいてバッファ１のベースアドレスから順に１行分の画素データを読み出し、読み出した画素データを画像メモリ１０の補完画像記憶領域１４にアドレスをインクリメントしながら書き込む処理を行う。すなわち、データ転送制御部３６０は、前回読み出しを行ったバンクと異なるバンクに切り替えて１行分の画素データをバッファメモリ４０から読み出して画像メモリ１０の補完画像記憶領域１４に書き込む処理を行う。データ転送制御部３６０は、例えば、バッファメモリ４０の読み出しアドレスを格納するレジスタ（バッファメモリ読み出しアドレスレジスタ）と画像メモリ１０の書き込みアドレスを格納するレジスタ（画像メモリ書き込みアドレスレジスタ）をそれぞれインクリメントしながらバッファメモリ４０及び画像メモリ１０にアクセスすることにより画素データの転送処理を行うことができる。
【００６６】
割り込み発生部３７０は、ＣＰＵ１０に対して割り込みを発生させる処理を行う。具体的には、データ転送制御部３５０による画像メモリ１０からの画像データの読み出し処理の終了やデータ転送制御部３６０による画像メモリ１０への画素データの書き込み処理の終了により割り込みを発生させる。
【００６７】
このように、本実施の形態の画像処理装置によれば、ＣＰＵ２０を介さずにデータ転送装置３０のデータ転送制御部３３０、３５０及び３６０において専用ハードウェアによる画素データのＤＭＡ転送を直接的に行うことができるので、ＣＰＵの負荷を大幅に軽減するとともに画像処理の高速化を達成することができる。
【００６８】
図８はＣＰＵ２０の処理のフローチャートの第１の例を示す図であり、図９はこれに対応するデータ転送装置３０の処理のフローチャートの第１の例を示す図である。図８、図９は、座標メモリ５０には列座標特定情報記憶領域５２のみが割り当てられている場合のフローチャートである。また、バッファメモリ４０はバッファ０、バッファ１のダブルバッファ構成であるものとして説明する。
【００６９】
まず、ＣＰＵ２０は、補完画像の各行に含まれる画素に対応する元画像の画素の列座標を計算する（図８のステップＳ１０）。例えば、図１で説明した縮小画像を最近傍法により生成する場合は、列座標の計算結果として０、１、３、４、５、７、８、・・・、３９が得られる。また、例えば、図２で説明した拡大画像を最近傍法により生成する場合は、列座標の計算結果として０、１、２、２、３、４、５、６、６、７、８、・・・、３９の列が得られる。そして、ＣＰＵ２０はこの列座標を特定するための列座標特定情報を座標メモリ５０の列座標特定情報記憶領域５２に書き込む。図１０及び図１１に、図１及び図２の場合に列座標特定情報記憶領域５２に書き込まれた列座標特定情報の一例をそれぞれ示す。
【００７０】
次に、ＣＰＵ２０は、補完画像の最初の行に対応する元画像の行の行座標を計算する（図８のステップＳ１２）。例えば、図１で説明した縮小画像や図２で説明した拡大画像を最近傍法により生成する場合、行座標の計算結果として０が得られる。
【００７１】
次に、ＣＰＵ２０は、データ転送装置３０に対してステップＳ１２で計算した行座標に対応する元画像の行（例えば、０行目）の画素データを画像メモリ１０から読み出す処理の開始を指示する（図８のステップＳ１４）。ここで、ＣＰＵ２０は、ステップＳ１２で計算した行座標の情報をデータ転送装置２０に送信する。
【００７２】
データ転送装置３０は、ＣＰＵ２０による読み出し処理の開始指示があるまで待機状態にあり（図９のステップＳ４０でＮｏの場合）、読み出し処理の開始指示があると（ステップＳ４０でＹｅｓの場合）ＣＰＵ２０から受け取った行座標の情報（例えば０）に基づいて、画像メモリ１０から１行分の画素データ（例えば０行目の画素データ）を読み出す処理を行う（図９のステップＳ４２）。例えば、図１で説明した縮小画像を生成する場合、ＣＰＵ２０のステップＳ１０における処理により座標メモリ５０の列座標特定情報記憶領域５２の先頭から０、１、３、４、５、７、８、・・・、３９の列座標が格納されているので（図１０参照）、データ転送制御部３３０は、座標メモリ読み出しアドレスレジスタに列座標特定情報記憶領域５２のベースアドレス（０００Ｈ）をセットして、まず座標メモリ５０の０００Ｈアドレスから列座標０を読み出す処理を行う。そして、データ転送制御部３５０は、アドレス計算部３４０が計算したアドレス値（００００Ｈ）を画像メモリ読み出しアドレスレジスタにセットして元画像の（０，０）座標の画素のＲデータを読み出す処理を行う。さらに、データ転送制御部３５０は、バッファメモリ書き込みアドレスレジスタにバッファメモリ４０のバッファ０のベースアドレス（０００Ｈ）をセットし、画像メモリ１０から読み出した画素データ（（０，０）座標の画素のＲデータ）をバッファメモリ５０のバッファ０（０００Ｈアドレス）に書き込む処理を行う。次に、データ転送制御部３５０は、画像メモリ読み出しアドレスレジスタをインクリメントして画像メモリ１０の０００１Ｈアドレスから元画像の（０，０）座標の画素のＧデータを読み出し、バッファメモリ書き込みアドレスレジスタをインクリメントして、画像メモリ１０から読み出した画素データ（（０，０）座標の画素のＧデータ）をバッファメモリ５０のバッファ０（００１Ｈアドレス）に書き込む処理を行う。同様に、データ転送制御部３５０は、元画像の（０，０）座標の画素のＢデータの転送処理を行う。次に、データ転送制御部３３０は、座標メモリ読み出しアドレスレジスタをインクリメントして、座標メモリ５０の００１Ｈアドレスから列座標１を読み出す処理を行い、データ転送制御部３５０は、（１，０）座標の画素データ（ＲＧＢデータ）の転送処理を同様に行う。以後、（３９，０）座標の画素データの転送処理が終了するまで、同様の処理が繰り返される。
【００７３】
データ転送装置３０は、元画像の０行目の画素データの読み出し処理を終了すると、割り込み発生部３７０によりＣＰＵ２０に対して割り込み（読み出し終了割り込み）を発生し（図９のステップＳ４４）、ＣＰＵ２０による書き込み処理の開始指示があるまで待機状態になる（図９のステップＳ４６でＮｏの場合）。
【００７４】
次に、ＣＰＵ２０は、データ転送装置３０による読み出し終了割り込みを検出すると（図８のステップＳ１６でＹｅｓの場合）、補完画像の最終行に対応する元画像の行の行座標計算が終了したか否かを判断し（図８のステップＳ１８）、終了していない場合（ステップＳ１８でＮｏの場合）は補完画像の次の行に対応する元画像の行の行座標を計算する。例えば、図１で説明した縮小画像や図２で説明した拡大画像を最近傍法により生成する場合、行座標の計算結果として１が得られる。
【００７５】
次に、ＣＰＵ２０は、データ転送装置３０に対してステップＳ２０で計算した行座標に対応する元画像の行（例えば、１行目）の画素データを画像メモリ１０から読み出す処理及びデータ転送装置３０がステップ４２で読み出した１行分の画素データを画像メモリ１０に書き込む処理の開始を指示する（図８のステップＳ２２）。ここで、ＣＰＵ２０は、ステップＳ２０で計算した行座標の情報をデータ転送装置２０に送信する。
【００７６】
データ転送装置３０は、ＣＰＵ２０による書き込み処理の開始指示（ステップＳ４６でＹｅｓの場合）及び読み出し処理の開始指示（ステップＳ４８でＹｅｓの場合）を受けて、まず、ＣＰＵ２０から受け取った行座標の情報（例えば１）が前回ＣＰＵ２０から受け取った行座標と一致するか否かを判断する（図９のステップＳ５０）。
【００７７】
２つの行座標が一致しない場合（ステップＳ５０でＮｏの場合）は、データ転送装置３０は、バッファメモリ５０から画像メモリ１０に１行分の画素データ（例えば０行目の画素データ）を転送して書き込む処理と画像メモリ１０から１行分の画素データ（例えば１行目の画素データ）を読み出す処理を並行して行う（図９のステップＳ５２）。例えば、図１で説明した縮小画像を生成する場合、データ転送制御部３６０は、バッファメモリ読み出しアドレスレジスタに前回画素データを読み出したバッファ（バッファ０）のベースアドレス（０００Ｈ）をセットして、まずバッファメモリ４０の０００Ｈアドレスから補完画像の（０，０）座標の画素のＲデータを読み出す処理を行う。さらに、データ転送制御部３６０は、画像メモリ書き込みアドレスレジスタに画像メモリ１０の補完画像記憶領域１４のベースアドレス（４０００Ｈ）をセットし、バッファメモリ４０から読み出した画素データ（（０，０）座標の画素のＲデータ）を画像メモリ１０の補完画像記憶領域１４（４０００Ｈアドレス）に書き込む処理を行う。次に、データ転送制御部３６０は、バッファメモリ読み出しアドレスレジスタをインクリメントしてバッファメモリ４０の０００１Ｈアドレスから元画像の（０，０）座標の画素のＧデータを読み出し、画像メモリ書き込みアドレスレジスタをインクリメントして、バッファメモリ４０から読み出した画素データ（（０，０）座標の画素のＧデータ）を画像メモリ１０の補完画像記憶領域１４（４００１Ｈアドレス）に書き込む処理を行う。同様に、データ転送制御部３６０は、補完画像の（０，０）座標の画素のＢデータの転送処理を行う。以後、データ転送制御部３６０は、補完画像の（１，０）座標〜（２９，０）座標の画素データ（ＲＧＢデータ）の転送処理を同様に行う。データ転送処理部３６０による画像メモリ１０の補完画像記憶領域１４への補完画像の０行目の画素データの書き込み処理と並行して、データ転送処理部３５０は、画像メモリ１０の元画像記憶領域１２からの元画像の１行目の画素データ（補完画像の１行目の画素データに対応する）の読み出し処理を行う。この読み出し処理はステップＳ４２の読み出し処理と同様であるので説明を省略する。
【００７８】
データ転送装置３０は、補完画像の１行目の画素データの書き込み処理を終了すると割り込み発生部３７０によりＣＰＵ２０に対して割り込み（書き込み終了割り込み）を発生するとともに、元画像の１行目の画素データの読み出し処理を終了すると割り込み発生部３７０によりＣＰＵ２０に対して読み出し終了割り込みを発生し（図９のステップＳ５４）、ＣＰＵ２０による次の書き込み処理の開始指示があるまで待機状態になる（図９のステップＳ４６でＮｏの場合）。
【００７９】
ステップＳ５０において今回の行座標が前回の行座標と一致する場合（ステップＳ５０でＹｅｓの場合）は、今回の行座標による行の画素データは前回のステップＳ５２の処理によりバッファメモリ４０のバッファ０又はバッファ１にすでに格納されているため、データ転送装置３０は読み出し処理を行う必要がない。例えば、図２で説明した拡大画像を最近傍法により生成する場合は、拡大画像の２行目と３行目の画素データはともに元画像の２行目に含まれる同一の画素データであり、拡大画像の３行目の画素データに対応する画素データの読み出し指示を受けた時には元画像の２行目の画素データはすでにバッファメモリ４０（バッファ０）に格納されているので、画像メモリ１０から読み出す必要がない。同様に、拡大画像の７行目と８行目の画素データはともに元画像の６行目に含まれる同一の画素データであり、拡大画像の８行目の画素データに対応する画素データの読み出し指示を受けた時には元画像の６行目の画素データはすでにバッファメモリ４０（バッファ０）に格納されているので、画像メモリ１０から読み出す必要がない。そこで、データ転送装置３０は読み出し処理を行わずに、ＣＰＵ２０に対して読み出し終了割り込みを発生する（ステップＳ５８）。
【００８０】
そして、データ転送装置３０は、補完画素の１行分の画素データの画像メモリ１０への書き込み処理のみを行い（図９のステップＳ６０）、書き込み処理終了後に書き込み終了割り込みを発生する（図９のステップＳ６２）。ステップＳ６０における書き込み処理及びステップＳ６２における書き込み終了割り込みの発生処理は、ステップＳ５２における書き込み処理及びステップＳ５４における書き込み終了割り込みの発生処理と同様であるので説明を省略する。
【００８１】
さらに、データ転送装置３０は、データ転送終了フラグがセットされているか否かを判断し（図９のステップＳ６４）、データ転送終了フラグがセットされていない場合は（ステップＳ６４でＮｏの場合）、ＣＰＵ２０による次の書き込み処理の開始指示があるまで待機状態になる（図９のステップＳ４６でＮｏの場合）。
【００８２】
次に、ＣＰＵ２０は、データ転送装置３０による読み出し終了割り込みを検出し（図８のステップＳ２４でＹｅｓの場合）、かつ、書き込み終了割り込みを検出すると（図８のステップＳ２６でＹｅｓの場合）、補完画像の最終行に対応する元画像の行の行座標計算が終了したか否かを判断し（図８のステップＳ１８）、終了していない場合（ステップＳ１８でＮｏの場合）はステップＳ２０〜Ｓ２６の処理を繰り返す。これに対応して、データ転送装置３０は、ステップＳ４６〜Ｓ５４の処理又はステップＳ４６〜Ｓ６４の処理を繰り返す。
【００８３】
ＣＰＵ２０は、補完画像の最終行に対応する元画像の行の行座標計算を終了した場合（図８のステップＳ１８でＹｅｓの場合）、データ転送装置３０に対して、データ転送装置３０がステップ５２で読み出した１行分の画素データを画像メモリ１０に書き込む処理の開始を指示する（図８のステップＳ２８）。ここで、ステップＳ２２と異なり、ＣＰＵ２０が読み出し処理の開始指示を行わないのは、補完画素の最終行に対応する元画像の行の画素データは前回のステップＳ５２の処理によりバッファメモリ４０のバッファ０又はバッファ１にすでに格納されているため、読み出し処理を行う必要がないからである。言うまでもないが、ステップＳ２８においてＣＰＵ２０はデータ転送装置３０に対してダミーの読み出し処理の開始指示を行うようにしてもよい。
【００８４】
データ転送装置３０は、ＣＰＵ２０による書き込み処理の開始指示を受けるが（ステップＳ４６でＹｅｓの場合）、読み出し処理の開始指示を受けていないので（ステップＳ４８でＮｏの場合）、補完画素の最終行の画素データの画像メモリ１０への書き込み処理の開始指示であると判断し、データ転送終了フラグをセットする（図９のステップＳ５６）。
【００８５】
そして、データ転送装置３０は、補完画素の最終行の画素データの画像メモリ１０への書き込み処理を行い（ステップＳ６０）、書き込み処理終了後にＣＰＵ２０に対して書き込み終了割り込みを発生し（ステップＳ６２）、データ転送終了フラグがセットされていれば転送処理を終了する（ステップＳ６４でＹｅｓの場合）。
【００８６】
最後に、ＣＰＵ２０は、データ転送装置３０による書き込み終了割り込みを検出し（図８のステップＳ３０でＹｅｓの場合）、処理を終了する。
【００８７】
このように最近傍法によれば補完座標を生成するための特別な計算を行う必要がないので、本実施の形態の画像処理装置１によれば、前回画像メモリ１０の元画像記憶領域１２から読み出してバッファメモリ４０のバッファ０（又はバッファ１）に書き込んだ１行分の画素データをそのまま読み出して画像メモリ１０の補完画像記憶領域１４に書き込むことにより、簡単かつ高速に補完画像を生成することができる。
【００８８】
また、本実施の形態の画像処理装置によれば、画像メモリ１０に対する画素データの読み出し処理と書き込み処理をデータ転送装置３０が行うので、ＣＰＵ２０がこれらの処理を行う必要がない。そのため、ＣＰＵ２０の負荷が大幅に低減し座標計算処理を高速に行うことができる。
【００８９】
また、本実施の形態の画像処理装置によれば、ＣＰＵ２０による座標計算処理とデータ転送装置３０による画素データの転送処理（読み出し処理と書き込み処理）を並行して行うことができるので、高速な画像補完を実現することができる。
【００９０】
また、本実施の形態の画像処理装置によれば、ＣＰＵ２０は補完画像を構成する各画素データに対応する元画像を構成する各画素データの列座標及び行座標を計算し、データ転送装置３０は、ＣＰＵ２０が計算した列座標及び行座標により特定される各画素データを画像メモリ１０から読み出してバッファメモリ４０に転送する。すなわち、縮小画像を生成する場合には元画像のすべての画素データを読み出すことなく、縮小画像を生成するために必要な画素データのみを画像メモリ１０から読み出すことができる。従って、元画像の画素データの読み出し処理を高速化することができるので高速な画像補完を実現することができる。
【００９１】
また、本実施の形態の画像処理装置によれば、補完画像を構成する１行分の画素データに対応する元画像を構成する画素データと同一の画素データが前回の読み出し処理によりすでにバッファメモリ４０に格納されている場合には読み出し処理を行わないようにすることができる。すなわち、不要な読み出し処理を省くことにより高速な画像補完を実現することができる。
【００９２】
また、本実施の形態の画像処理装置によれば、画像メモリ１０から読み出した画素データを、画像メモリ１０に転送する画素データを格納するバッファと常に異なるバッファに格納することができる。すなわち、データ転送装置３０は、書き込み処理において必要となる画素データを上書きすることなく読み出し処理を並行して行うことができる。従って、高速な画像補完を実現することができる。
【００９３】
また、本実施の形態の画像処理装置によれば、ＣＰＵ２０があらかじめ列座標を計算して座標メモリ５０に記憶させておくことができる。すなわち、データ転送装置３０は、座標メモリ５０に格納された情報に基づいて、必要な画素の読み出し処理を行うことができる。従って、ＣＰＵ２０は行座標の計算のみを行えばよくなるためＣＰ２０の負荷を低減することができるので、高速な画像補完を実現することができる。
【００９４】
図１２はＣＰＵ２０の処理のフローチャートの第２の例を示す図であり、図１３はこれに対応するデータ転送装置３０の処理のフローチャートの第２の例を示す図である。図１２、図１３は、座標メモリ５０には列座標特定情報記憶領域５２に加えて行座標特定情報記憶領域５４も割り当てられている場合のフローチャートである。
【００９５】
まず、ＣＰＵ２０は、補完画像の各行に含まれる画素に対応する元画像の画素の列座標を計算する（図１２のステップＳ７０）。ステップＳ７０の処理は図８のステップＳ１０の処理と同様であるので説明を省略する。
【００９６】
次に、ＣＰＵ２０は、補完画像の各列に含まれる画素に対応する元画像の画素の行座標を計算する（図１２のステップＳ７０）。ステップＳ７０の処理は図８のステップＳ１０と同様の処理であるので説明を省略する。例えば、図１で説明した縮小画像を最近傍法により生成する場合は、行座標の計算結果として０、１、３、４、５、７、８、・・・、３９が得られる。また、例えば、図２で説明した拡大画像を最近傍法により生成する場合は、行座標の計算結果として０、１、２、２、３、４、５、６、６、７、８、・・・、３９の列が得られる。そして、ＣＰＵ２０はこの行座標を特定するための行座標特定情報を座標メモリ５０の行座標特定情報記憶領域５４に書き込む。
【００９７】
次に、ＣＰＵ２０は、データ転送装置３０に対して補完画像を生成するために必要な画素データの転送処理の開始を指示する（図１２のステップＳ７４）。
【００９８】
データ転送装置３０は、ＣＰＵ２０による転送処理の開始指示があるまで待機状態にあり（図１３のステップＳ８０でＮｏの場合）、転送処理の開始指示があると（ステップＳ８０でＹｅｓの場合）、座標メモリ５０に格納された列座標特定情報及び行座標特定情報に基づいて、画像メモリ１０から１行分の画素データ（例えば０行目の画素データ）を読み出す処理を行う（図１３のステップＳ８２）。例えば、図１で説明した縮小画像を生成する場合、ＣＰＵ２０のステップＳ７０及びＳ７２における処理により座標メモリ５０の列座標特定情報記憶領域５２及び行座標特定情報記憶領域５４の先頭からともに０、１、３、４、５、７、８、・・・、３９の列座標が格納されているので、データ転送制御部３３０は、座標メモリ読み出しアドレスレジスタに列座標特定情報記憶領域５２のベースアドレス（０００Ｈ）をセットして、座標メモリ５０の０００Ｈアドレスから列座標０を読み出す処理を行う。さらに、データ転送制御部３３０は、座標メモリ読み出しアドレスレジスタに行座標特定情報記憶領域５４のベースアドレス（８００Ｈ）をセットして、座標メモリ５０の８００Ｈアドレスから行座標０を読み出す処理を行う。アドレス計算部３４０は、列座標０及び行座標０から画像メモリ１０の読み出しアドレスを計算し、データ転送制御部３５０は、アドレス計算部３４０が計算したアドレス値（００００Ｈ）を画像メモリ読み出しアドレスレジスタにセットして元画像の（０，０）座標の画素のＲデータを読み出す処理を行う。以降は、図９のステップＳ４２の処理において説明した処理と同様の処理により１行分の画素データの読み出し処理を終了する。
【００９９】
次に、データ転送装置３０は、補完画像の最終行の画素データの画像メモリ１０への転送処理（書き込み処理）か否かを判断する（図１３のステップＳ８４）。データ転送装置３０は、最終行の画素データの転送処理が終了していない場合（ステップＳ８４でＮｏの場合）は、座標メモリ５０から行座標を読み出し、前回の行座標と一致するか否かを判断する（図１３のステップＳ８６）。
【０１００】
２つの行座標が一致しない場合（ステップＳ８６でＮｏの場合）は、データ転送装置３０は、バッファメモリ５０から画像メモリ１０に１行分の画素データ（例えば０行目の画素データ）を転送して書き込む処理と画像メモリ１０から１行分の画素データ（例えば１行目の画素データ）を読み出す処理を並行して行う（図１３のステップＳ８８）。ステップＳ８８における書き込み処理及び読み出し処理は、図９のステップＳ５２における書き込み処理及び図１３のステップＳ８２における読み出し処理と同様であるので説明を省略する。
【０１０１】
ステップＳ８６において今回の行座標が前回の行座標と一致する場合（ステップＳ８６でＹｅｓの場合）は、今回の行座標による行の画素データは前回のステップＳ８８の処理によりバッファメモリ４０のバッファ０又はバッファ１にすでに格納されているため、データ転送装置３０は読み出し処理を行う必要がない。そのため、データ転送装置３０は、補完画素の１行分の画素データの画像メモリ１０への書き込み処理のみを行う（図１３のステップＳ９２）。ステップＳ９２における書き込み処理は、図９のステップＳ５２における書き込み処理と同様であるので説明を省略する。
【０１０２】
さらに、データ転送装置３０は、データ転送終了フラグがセットされているか否かを判断し（図１３のステップＳ９４）、データ転送終了フラグがセットされていない場合は（ステップＳ９４でＮｏの場合）、ステップＳ８４〜Ｓ８８の処理又はステップＳ８４〜Ｓ９４の処理を繰り返す。データ転送装置３０は、補完画像の最終行の画素データの画像メモリ１０への転送処理（書き込み処理）である場合には（図１３のステップＳ８４でＹｅｓの場合）、データ転送終了フラグをセットする（図１３のステップＳ９０）。
【０１０３】
そして、データ転送装置３０は、補完画素の最終行の画素データの画像メモリ１０への書き込み処理を行い（ステップＳ９２）、書き込み処理終了後にデータ転送終了フラグがセットされていれば（ステップＳ９４でＹｅｓの場合）転送処理を終了し、ＣＰＵ２０に対して転送終了割り込みを発生する（図１３のステップＳ９６）。
【０１０４】
最後に、ＣＰＵ２０は、データ転送装置３０による転送終了割り込みを検出し（図１２のステップＳ７６でＹｅｓの場合）、処理を終了する。
【０１０５】
本実施の形態の画像処理装置によれば、ＣＰＵ２０があらかじめ行座標と列座標を計算して座標メモリ５０に記憶させておくことができる。すなわち、データ転送装置３０は、座標メモリ５０に格納された情報に基づいて、ＣＰＵ２０から独立して必要な画素の読み出し処理を行うことができる。従って、ＣＰＵ２０は、データ転送装置３０によるデータ転送処理の間、座標計算を行う必要がなくＣＰＵ２０の負荷を大幅に低減することができる。
【０１０６】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１０７】
例えば、図８のフローチャートにおいてステップＳ２０で行座標の計算を行っているが、ステップＳ１２ですべての行座標を計算してしまってもよい。その場合は、ステップＳ１８で最終行の行座標計算が終了したか否かを判断する代わりに、最終行の画素データの読み出し処理が終了したか否か（読み出し終了割り込みを検出したか否か）を判断するようにすればよい。
【０１０８】
また、例えば、図９のフローチャートにおいて書き込み終了割り込みと読み出し終了割り込みの２種類の割り込みを発生させているが、１種類の割り込みのみ発生させるようにしてもよい。その場合でも、ＣＰＵ２０は、読み出し処理の開始指示のみ、書き込み処理の開始指示のみ、又は読み出し処理と書き込み処理の両方の開始指示のいずれを行ったかにより割り込みの種類を判断して適切な処理を選択することができる。
【０１０９】
本発明は、実施の形態で説明した構成と実質的に同一の構成（例えば、機能、方法及び結果が同一の構成、あるいは目的及び効果が同一の構成）を含む。また、本発明は、実施の形態で説明した構成の本質的でない部分を置き換えた構成を含む。また、本発明は、実施の形態で説明した構成と同一の作用効果を奏する構成又は同一の目的を達成することができる構成を含む。また、本発明は、実施の形態で説明した構成に公知技術を付加した構成を含む。
【符号の説明】
【０１１０】
１  画像処理装置、１０  画像メモリ、１２  元画像記憶領域、１４  補完画像記憶領域、２０  ＣＰＵ、３０  データ転送装置、４０  バッファメモリ、４２  バッファ０、４４  バッファ１、５０  座標メモリ、５２  列座標特定情報記憶領域、５４  行座標特定情報記憶領域、６０  バス、１００  元画像、１１０  縮小画像、１２０  拡大画像、３１０  制御レジスタ、３２０  制御レジスタインターフェース部、３３０  データ転送制御部、３４０  アドレス計算部、３５０  データ転送制御部、３６０  データ転送制御部、３７０  割り込み発生部
【図３】
2011259511.tif 000003
【図４】
2011259511.tif 000004
【図５】
2011259511.tif 000005
【図６】
2011259511.tif 000006
【図７】
2011259511.tif 000007
【図８】
2011259511.tif 000008
【図９】
2011259511.tif 000009
【図１０】
2011259511.tif 000010
【図１１】
2011259511.tif 000011
【図１２】
2011259511.tif 000012
【図１３】
2011259511.tif 000013
【図１】
2011259511.tif 000014
【図２】
2011259511.tif 000015
【手続補正書】
【提出日】平成23年10月28日(2011.10.28)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１の画像を縮小又は拡大して第２の画像を生成する処理を行う画像処理装置であって、
前記第１の画像を構成する画素データ及び前記第２の画像を構成する画素データを記憶する第１の記憶部と、
第２の記憶部と、
第３の記憶部と、
所定の画像補完方法に基づいて、前記第２の画像を構成する各画素データに対応する前記第１の画像を構成する各画素データの列方向の座標及び行方向の座標を計算し、前記行方向の座標を特定するための情報を前記第３の記憶部に格納する処理を行う計算処理部と、
前記第３の記憶部に格納された前記行方向の座標を特定するための情報に基づいて、前記列方向の座標及び前記行方向の座標により特定される各画素データを第１の記憶部から読み出して前記第２の記憶部に転送する読み出し処理と、前記第２の記憶部に格納された画素データを前記第２の画像を構成する画素データとして前記第１の記憶部に転送する書き込み処理を行うデータ転送処理部と、を含むことを特徴とする画像処理装置。
【請求項２】
請求項１において、
前記データ転送処理部は、
前記行方向の座標が同一の画素データ毎に前記読み出し処理及び前記書き込み処理を行うことを特徴とする画像処理装置。
【請求項３】
請求項２において、
前記データ転送処理部は、
前記行方向の座標が同一の画素データの読み出し処理を終了する毎に、次回の読み出し処理の対象となる画素データの行方向の座標を特定するための情報を前記第３の記憶部から読み出し、
前記行方向の座標を特定するための情報に基づいて前記読み出し処理を行うことを特徴とする画像処理装置。
【請求項４】
請求項２又は３において、
前記データ転送処理部は、
読み出し処理の対象となる前記行方向の座標が同一の画素データの当該行方向の座標が前回読み出し処理の対象であった画素データの行方向の座標と同じである場合には、前記読み出し処理を行わずに前記書き込み処理を行うことを特徴とする画像処理装置。
【請求項５】
請求項２乃至４のいずれか一項において、
前記第２の記憶部は、
前記データ転送処理部が読み出した前記行方向の座標が同一の画素データを格納するためのバッファを２つ以上含み、
前記データ転送処理部は、
前記読み出し処理において、読み出し処理の対象となる前記行方向の座標が同一の画素データの当該行方向の座標が前回読み出し処理の対象であった画素データの行方向の座標と異なる場合には、前記読み出し処理の対象となる前記行方向の座標が同一の画素データを、前回読み出し処理の対象であった画素データが格納されているバッファと異なるバッファに転送し、前記書き込み処理において前回読み出し処理の対象であった画素データを前記第１の記憶部に転送することを特徴とする画像処理装置。
【請求項６】
請求項１乃至５のいずれか一項において、
前記画像補完方法は最近傍法であることを特徴とする画像処理装置。
【請求項７】
第１の記憶部と、第２の記憶部と、第３の記憶部とを備え、第１の画像を縮小又は拡大して第２の画像を生成する処理を行う画像処理装置における画像処理方法であって、
前記画像処理装置が、
所定の画像補完方法に基づいて、前記第２の画像を構成する各画素データに対応する前記第１の画像を構成する各画素データの列方向の座標及び行方向の座標を計算し、前記行方向の座標を特定するための情報を前記第３の記憶部に格納する処理を行い、
前記第３の記憶部に格納された前記行方向の座標を特定するための情報に基づいて、前記列方向の座標及び前記行方向の座標により特定される各画素データを、前記第１の画像を構成する画素データを格納する前記第１の記憶部から読み出して前記第２の記憶部に転送する読み出し処理と、前記第２の記憶部に格納された画素データを前記第２の画像を構成する画素データとして前記第１の記憶部に転送する書き込み処理を行うことを特徴とする画像処理方法。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００９６
【補正方法】変更
【補正の内容】
【００９６】
次に、ＣＰＵ２０は、補完画像の各列に含まれる画素に対応する元画像の画素の行座標を計算する（図１２のステップＳ７２）。ステップＳ７２の処理は図８のステップＳ１０と同様の処理であるので説明を省略する。例えば、図１で説明した縮小画像を最近傍法により生成する場合は、行座標の計算結果として０、１、３、４、５、７、８、・・・、３９が得られる。また、例えば、図２で説明した拡大画像を最近傍法により生成する場合は、行座標の計算結果として０、１、２、２、３、４、５、６、６、７、８、・・・、３９の列が得られる。そして、ＣＰＵ２０はこの行座標を特定するための行座標特定情報を座標メモリ５０の行座標特定情報記憶領域５４に書き込む。