(57)【特許請求の範囲】
【請求項１】
メモリと、入力されたデータに対して予め定めた処理を行う複数の処理モジュールが直列に接続されたパイプラインが構成され、それぞれの前記処理モジュールが前記処理を順次行うことによってパイプライン処理を行う画像処理部とがデータバスに接続された画像処理装置であって、
前記処理モジュールのそれぞれは、
前記データを前記処理の単位ごとに一時的に記憶するデータバッファと、
前記パイプライン処理におけるデータの流れの状態と、前記データバッファに記憶している前記データの状態とに基づいて、前記データを前記データバッファに記憶するか否かを判定し、前記判定した結果に基づいて前記データを転送する前記処理モジュール内の経路を選択すると共に、前記データバッファの動作を停止するか否かを制御する制御部と、
を備える、
ことを特徴とする画像処理装置。
【請求項２】
前記制御部は、
前記データバッファが有する記憶容量に前記データが記憶されている状態で、前記データバッファにさらに前記データを記憶することができる状態である場合、前記データを前記データバッファに一旦記憶してから読み出して転送する経路を選択すると共に、前記データバッファを動作させ、
前記パイプライン処理における前記データの流れが滞っている状態で、前記データバッファにさらに前記データを記憶することができない状態である場合、前記データを前記データバッファに一旦記憶してから読み出して転送する経路を選択すると共に、前記データバッファを、記憶している前記データを保持させるように動作させ、
前記パイプライン処理における前記データの流れが滞っていない状態で、前記データバッファが有する全ての前記記憶容量に前記データが記憶されていない状態である場合に、前記データバッファに記憶せずにスルーして前記データを転送する経路を選択すると共に、前記データバッファの動作を停止させる、
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記制御部は、
前記パイプラインの構成における前段の前記処理モジュールに、前記制御部自身を備えた前記処理モジュールの動作状態を表す状態通知信号を出力し、
前記パイプラインの構成における後段の前記処理モジュールから入力された前記状態通知信号に基づいて、前記パイプライン処理におけるデータの流れの状態を判定する、
ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記制御部は、
前記パイプラインの構成における後段の複数の前記処理モジュールから入力された前記状態通知信号に基づいて、前記パイプライン処理におけるデータの流れの状態を判定する、
ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記状態通知信号は、
前段の前記処理モジュールが前記処理を行った前記データを受け付けることができるか否かを表す信号であり、
前段の前記処理モジュールが前記処理を行った前記データの出力を要求するデータリクエスト信号を含み、
前記制御部は、
後段の前記処理モジュールから前記データの出力を要求する前記データリクエスト信号が入力された場合に、前記パイプライン処理における前記データの流れが滞っていない状態であると判定する、
ことを特徴とする請求項３または請求項４に記載の画像処理装置。
【請求項６】
前記制御部は、
前記データバッファに前記データを記憶することができる状態である場合に、前記データの出力を要求する前記データリクエスト信号を、前段の前記処理モジュールに出力する、
ことを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記制御部は、
前記データバッファが有する全ての前記記憶容量に前記データが記憶されていない状態になるまで、前記データの出力を要求する前記データリクエスト信号の前段の前記処理モジュールへの出力を保留し、前記データバッファが有する全ての前記記憶容量に前記データが記憶されていない状態になった後に、前段の前記処理モジュールに前記データリクエスト信号を出力し、前記データバッファをスルーして前記データを転送する経路を選択すると共に、前記データバッファの動作を停止させる、
ことを特徴とする請求項５に記載の画像処理装置。
【請求項８】
前記画像処理部は、
前記データバスに接続された複数のバスマスタによる前記メモリへのアクセスを監視することによって、前記データバスにおけるバストラフィックを監視するバストラフィック監視部、
をさらに備え、
前記バストラフィック監視部は、
監視した前記バストラフィックに基づいて前記データバスに流れているデータが少ないと判定した場合に、それぞれの前記処理モジュールに、前記データバッファをスルーして前記データを転送する経路の選択を指示するバッファスルー指示信号を出力し、
それぞれの前記処理モジュール内の前記制御部は、
前記バッファスルー指示信号が入力された場合に、前記パイプライン処理における前記データの流れが滞っていない状態であると判定する、
ことを特徴とする請求項２から請求項７のいずれか１の項に記載の画像処理装置。
【請求項９】
前記処理モジュールは、
前記データバッファから読み出した前記データを転送する経路、および前記データバッファをスルーして前記データを転送する経路のいずれか一方の経路を、前記データを転送する経路として選択するセレクタ、
をさらに備え、
前記制御部は、
前記データバッファに記憶する前記データの量を管理し、監視した前記データの量を表すデータ量情報を出力するデータ量管理部と、
前記データ量情報と前記パイプライン処理におけるデータの流れの状態とに基づいて、前記データバッファに行わせる動作を判定し、判定した結果に基づいて、前記データバッファへの前記データの書き込みおよび前記データバッファからの前記データの読み出しの指示信号と、前記データを転送する経路を選択するための制御信号とを出力するバッファスルー判定部と、
前記データバッファへの前記データの書き込みの前記指示信号に応じて、前記データバッファへの前記データの書き込みを制御するための制御信号であるバッファライト信号を生成するバッファ書き込み管理部と、
前記データバッファからの前記データの読み出しの前記指示信号に応じて、前記データバッファからの前記データの読み出しを制御するための制御信号であるバッファリード信号を生成するバッファ読み出し管理部と、
を備え、
前記データ量管理部は、
入力された前記データの数と、前記バッファリード信号とに基づいて前記データの量を管理し、
前記バッファスルー判定部は、
前記データ量情報が、前記データの量が０よりも大きい値であることを表している場合、前記データバッファへの前記データの書き込みおよび前記データバッファからの前記データの読み出しを行うことを指示する前記指示信号と、前記データを前記データバッファに一旦記憶してから読み出して転送する経路を選択する前記制御信号とを出力し、
前記データ量情報が、前記データの量が０であることを表している場合、前記データバッファへの前記データの書き込みおよび前記データバッファからの前記データの読み出しを停止することを指示する前記指示信号と、前記データバッファをスルーして前記データを転送する経路を選択する前記制御信号とを出力し、
前記セレクタは、
前記制御信号に応じた経路を、前記データを転送する経路として選択する、
ことを特徴とする請求項２から請求項８のいずれか１の項に記載の画像処理装置。
【請求項１０】
メモリと、入力されたデータに対して予め定めた処理を行う複数の処理モジュールが直列に接続されたパイプラインが構成され、それぞれの前記処理モジュールが前記処理を順次行うことによってパイプライン処理を行う画像処理部とがデータバスに接続された画像処理装置における画像処理方法であって、
前記処理モジュールのそれぞれが、
前記パイプライン処理におけるデータの流れの状態と、前記データを前記処理の単位ごとに一時的に記憶するデータバッファに記憶している前記データの状態とに基づいて、前記データを前記データバッファに記憶するか否かを判定し、前記判定した結果に基づいて前記データを転送する前記処理モジュール内の経路を選択すると共に、前記データバッファの動作を停止するか否かを制御する制御ステップ、
を含む、
ことを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの撮像装置に搭載されるシステムＬＳＩなど、多くの画像処理装置では、接続された１つのＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を、内蔵している複数の処理ブロックで共有している。このようなシステムＬＳＩにおいては、内蔵している複数の処理ブロックが、システムＬＳＩ内部のデータバスに接続され、それぞれの処理ブロックは、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）によってＤＲＡＭへのアクセスを行う。
【０００３】
また、このようなシステムＬＳＩに備える処理ブロックの中には、複数の処理モジュールを備え、それぞれの処理モジュールを直列に接続することによってパイプライン処理を行う処理ブロックもある。例えば、撮像装置に備えたシステムＬＳＩでは、画像処理を行う画像処理部が、パイプライン処理を行う処理ブロックである。そして、画像処理部では、それぞれの画像処理を行う複数の画像処理モジュールを直列に接続したパイプライン処理によって、画像処理部における画像処理の高速化を実現している。一般的に、パイプライン処理を行う複数の処理モジュールを備えた処理ブロックでは、それぞれの処理モジュール間でデータの受け渡しを行うためのデータバッファが設けられ、このデータバッファによって、それぞれの処理モジュールにおける処理の遅延を吸収し、パイプライン処理が正常に行われるようにしている。
【０００４】
例えば、特許文献１には、処理モジュールであるそれぞれの処理ステージ間にデータバッファであるダブルバッファを設けたパイプライン構成の画像処理装置の技術が開示されている。特許文献１に開示された画像処理装置では、ダブルバッファを介してそれぞれの処理ステージ間でのデータの受け渡しを行うことにより、それぞれの処理ステージによる処理を順次行うパイプライン処理を実現している。
【０００５】
特許文献１に開示された画像処理装置では、前段の処理ステージが処理を行ったデータを一旦ダブルバッファに記憶し、ダブルバッファに記憶されたデータを後段の処理ステージが読み出すことによって、前段の処理ステージから後段の処理ステージにデータを受け渡している。つまり、特許文献１に開示された画像処理装置では、前段の処理ステージから後段の処理ステージにデータを受け渡す際に、前段の処理ステージによるダブルバッファへのデータの書き込みと、後段の処理ステージによるダブルバッファからのデータの読み出しとが必ず行われている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−３３４２２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、パイプライン処理を行う処理ブロックでは、処理ブロックに備えたそれぞれの処理モジュールにおける処理の進行状況によっては、データバッファを介さずに、前段の処理モジュールと後段の処理モジュールとの間で直接、データの受け渡しを行うことができるような状況になることもある。つまり、それぞれの処理モジュールが行う処理のタイミングによっては、パイプライン処理を行うそれぞれのデータが、それぞれの処理モジュールをスムーズに流れる状況になることもある。このような状況にあるときでも、特許文献１に開示された画像処理装置では、前段の処理ステージによるダブルバッファへの書き込みと、後段の処理ステージによるダブルバッファの読み出しが行われる。
【０００８】
ところで、データバッファでは、データを書き込んだり読み出したりする動作に伴って電力を消費する。このため、特許文献１に開示された画像処理装置では、パイプライン処理を行うそれぞれの処理ステージにおいて、ダブルバッファへのデータの書き込みと、ダブルバッファからのデータの読み出しとのそれぞれの動作のときに、ダブルバッファの動作に伴った電力を消費することになる。そして、特許文献１に開示された画像処理装置では、それぞれの処理ステージにおける処理の進行状況によらずに、ダブルバッファの動作に伴う電力を消費している。
【０００９】
本発明は、上記の課題認識に基づいてなされたものであり、パイプライン処理の性能を低下させることなく、消費電力を低減することができる画像処理装置および画像処理方法を提供することを目的としている。
【課題を解決するための手段】
【００１０】
本発明の第１の態様によれば、画像処理装置は、メモリと、入力されたデータに対して予め定めた処理を行う複数の処理モジュールが直列に接続されたパイプラインが構成され、それぞれの前記処理モジュールが前記処理を順次行うことによってパイプライン処理を行う画像処理部とがデータバスに接続された画像処理装置であって、前記処理モジュールのそれぞれは、前記データを前記処理の単位ごとに一時的に記憶するデータバッファと、前記パイプライン処理におけるデータの流れの状態と、前記データバッファに記憶している前記データの状態とに基づいて、前記データを前記データバッファに記憶するか否かを判定し、前記判定した結果に基づいて前記データを転送する前記処理モジュール内の経路を選択すると共に、前記データバッファの動作を停止するか否かを制御する制御部と、を備える。
【００１１】
本発明の第２の態様によれば、上記第１の態様の画像処理装置において、前記制御部は、前記データバッファが有する記憶容量に前記データが記憶されている状態で、前記データバッファにさらに前記データを記憶することができる状態である場合、前記データを前記データバッファに一旦記憶してから読み出して転送する経路を選択すると共に、前記データバッファを動作させ、前記パイプライン処理における前記データの流れが滞っている状態で、前記データバッファにさらに前記データを記憶することができない状態である場合、前記データを前記データバッファに一旦記憶してから読み出して転送する経路を選択すると共に、前記データバッファを、記憶している前記データを保持させるように動作させ、前記パイプライン処理における前記データの流れが滞っていない状態で、前記データバッファが有する全ての前記記憶容量に前記データが記憶されていない状態である場合に、前記データバッファに記憶せずにスルーして前記データを転送する経路を選択すると共に、前記データバッファの動作を停止させてもよい。
【００１２】
本発明の第３の態様によれば、上記第２の態様の画像処理装置において、前記制御部は、前記パイプラインの構成における前段の前記処理モジュールに、前記制御部自身を備えた前記処理モジュールの動作状態を表す状態通知信号を出力し、前記パイプラインの構成における後段の前記処理モジュールから入力された前記状態通知信号に基づいて、前記パイプライン処理におけるデータの流れの状態を判定してもよい。
【００１３】
本発明の第４の態様によれば、上記第３の態様の画像処理装置において、前記制御部は、前記パイプラインの構成における後段の複数の前記処理モジュールから入力された前記状態通知信号に基づいて、前記パイプライン処理におけるデータの流れの状態を判定してもよい。
【００１４】
本発明の第５の態様によれば、上記第３の態様または上記第４の態様の画像処理装置において、前記状態通知信号は、前段の前記処理モジュールが前記処理を行った前記データを受け付けることができるか否かを表す信号であり、前段の前記処理モジュールが前記処理を行った前記データの出力を要求するデータリクエスト信号を含み、前記制御部は、後段の前記処理モジュールから前記データの出力を要求する前記データリクエスト信号が入力された場合に、前記パイプライン処理における前記データの流れが滞っていない状態であると判定してもよい。
【００１５】
本発明の第６の態様によれば、上記第５の態様の画像処理装置において、前記制御部は、前記データバッファに前記データを記憶することができる状態である場合に、前記データの出力を要求する前記データリクエスト信号を、前段の前記処理モジュールに出力してもよい。
【００１６】
本発明の第７の態様によれば、上記第５の態様の画像処理装置において、前記制御部は、前記データバッファが有する全ての前記記憶容量に前記データが記憶されていない状態になるまで、前記データの出力を要求する前記データリクエスト信号の前段の前記処理モジュールへの出力を保留し、前記データバッファが有する全ての前記記憶容量に前記データが記憶されていない状態になった後に、前段の前記処理モジュールに前記データリクエスト信号を出力し、前記データバッファをスルーして前記データを転送する経路を選択すると共に、前記データバッファの動作を停止させてもよい。
【００１７】
本発明の第８の態様によれば、上記第２の態様から上記第７の態様のいずれか一態様の画像処理装置において、前記画像処理部は、前記データバスに接続された複数のバスマスタによる前記メモリへのアクセスを監視することによって、前記データバスにおけるバストラフィックを監視するバストラフィック監視部、をさらに備え、前記バストラフィック監視部は、監視した前記バストラフィックに基づいて前記データバスに流れているデータが少ないと判定した場合に、それぞれの前記処理モジュールに、前記データバッファをスルーして前記データを転送する経路の選択を指示するバッファスルー指示信号を出力し、それぞれの前記処理モジュール内の前記制御部は、前記バッファスルー指示信号が入力された場合に、前記パイプライン処理における前記データの流れが滞っていない状態であると判定してもよい。
【００１８】
本発明の第９の態様によれば、上記第２の態様から上記第８の態様のいずれか一態様の画像処理装置において、前記処理モジュールは、前記データバッファから読み出した前記データを転送する経路、および前記データバッファをスルーして前記データを転送する経路のいずれか一方の経路を、前記データを転送する経路として選択するセレクタ、をさらに備え、前記制御部は、前記データバッファに記憶する前記データの量を管理し、監視した前記データの量を表すデータ量情報を出力するデータ量管理部と、前記データ量情報と前記パイプライン処理におけるデータの流れの状態とに基づいて、前記データバッファに行わせる動作を判定し、判定した結果に基づいて、前記データバッファへの前記データの書き込みおよび前記データバッファからの前記データの読み出しの指示信号と、前記データを転送する経路を選択するための制御信号とを出力するバッファスルー判定部と、前記データバッファへの前記データの書き込みの前記指示信号に応じて、前記データバッファへの前記データの書き込みを制御するための制御信号であるバッファライト信号を生成するバッファ書き込み管理部と、前記データバッファからの前記データの読み出しの前記指示信号に応じて、前記データバッファからの前記データの読み出しを制御するための制御信号であるバッファリード信号を生成するバッファ読み出し管理部と、を備え、前記データ量管理部は、入力された前記データの数と、前記バッファリード信号とに基づいて前記データの量を管理し、前記バッファスルー判定部は、前記データ量情報が、前記データの量が０よりも大きい値であることを表している場合、前記データバッファへの前記データの書き込みおよび前記データバッファからの前記データの読み出しを行うことを指示する前記指示信号と、前記データを前記データバッファに一旦記憶してから読み出して転送する経路を選択する前記制御信号とを出力し、前記データ量情報が、前記データの量が０であることを表している場合、前記データバッファへの前記データの書き込みおよび前記データバッファからの前記データの読み出しを停止することを指示する前記指示信号と、前記データバッファをスルーして前記データを転送する経路を選択する前記制御信号とを出力し、前記セレクタは、前記制御信号に応じた経路を、前記データを転送する経路として選択してもよい。
【００１９】
本発明の第１０の態様によれば、画像処理方法は、メモリと、入力されたデータに対して予め定めた処理を行う複数の処理モジュールが直列に接続されたパイプラインが構成され、それぞれの前記処理モジュールが前記処理を順次行うことによってパイプライン処理を行う画像処理部とがデータバスに接続された画像処理装置における画像処理方法であって、前記処理モジュールのそれぞれが、前記パイプライン処理におけるデータの流れの状態と、前記データを前記処理の単位ごとに一時的に記憶するデータバッファに記憶している前記データの状態とに基づいて、前記データを前記データバッファに記憶するか否かを判定し、前記判定した結果に基づいて前記データを転送する前記処理モジュール内の経路を選択すると共に、前記データバッファの動作を停止するか否かを制御する制御ステップ、を含む。
【発明の効果】
【００２０】
本発明によれば、パイプライン処理の性能を低下させることなく、消費電力を低減することができる画像処理装置および画像処理方法を提供することができるという効果が得られる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施形態における画像処理装置の概略構成を示したブロック図である。
【図２】本発明の第１の実施形態の画像処理装置に備えた画像処理部における画像処理モジュール間のデータの転送方法の一例を示した図である。
【図３】本発明の第１の実施形態の画像処理装置に備えた画像処理部における画像処理モジュールの概略構成を示したブロック図である。
【図４】本発明の第１の実施形態の画像処理装置に備えた画像処理部における画像処理モジュールの動作の一例を示したタイミングチャートである。
【図５】本発明の第１の実施形態の画像処理装置に備えた画像処理部における画像処理モジュールの構成を示したブロック図である。
【図６】本発明の第１の実施形態の画像処理装置に備えた画像処理部における画像処理モジュールの処理手順を示したフローチャートである。
【図７】本発明の第１の実施形態の画像処理装置に備えた画像処理部における画像処理モジュールの動作の一例を示したタイミングチャートである。
【図８】本発明の第１の実施形態の画像処理装置に備えた画像処理部における画像処理モジュールの別の動作の一例を示したタイミングチャートである。
【図９】本発明の第１の実施形態の画像処理装置に備えた画像処理部における画像処理モジュールの概略構成を示したブロック図である。
【図１０】本発明の第１の実施形態の画像処理装置に備えた画像処理部における画像処理モジュールの動作の一例を示したタイミングチャートである。
【図１１】本発明の第２の実施形態における画像処理装置の概略構成を示したブロック図である。
【図１２】本発明の第２の実施形態の画像処理装置に備えた画像処理部におけるバストラフィック監視部の動作の一例を示したタイミングチャートである。
【発明を実施するための形態】
【００２２】
＜第１の実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。図１は、本発明の第１の実施形態における画像処理装置の概略構成を示したブロック図である。図１に示した画像処理装置１は、ＤＭＡバス１０と、ＤＲＡＭ２０と、画像処理部３０と、を備えている。また、画像処理部３０は、接続切り替え部３１と、入力ＤＭＡモジュール３２と、３つの画像処理モジュール３３−１〜画像処理モジュール３３−３と、出力ＤＭＡモジュール３４と、を備えている。画像処理装置１は、例えば、静止画用カメラなどの撮像装置に備えられる。
【００２３】
なお、図１においては、画像処理装置１に備えられ、ＤＭＡバス１０に接続される他の構成要素の図示を省略している。画像処理装置１に備える他の構成要素としては、例えば、撮像装置に備えたレンズによって結像された被写体の光学像を光電変換する固体撮像素子を制御する撮像処理部、画像処理部３０によって処理された画像のデータを記録するための記録処理を行う記録処理部、画像処理部３０によって処理された画像のデータを画像処理装置１に備えた表示部に表示させるための表示処理部などがある。また、例えば、画像処理装置１に備える他の構成要素としては、画像処理装置１に備えたそれぞれの構成要素を制御するシステム制御部などもある。
【００２４】
ＤＲＡＭ２０は、ＤＭＡバス１０に接続され、撮像装置において処理される様々なデータを記憶する。例えば、撮像装置に備えた図示しない固体撮像素子から出力された静止画像のデータを記憶する。画像処理装置１においては、ＤＲＡＭ２０に記憶された１フレームの静止画像のデータを、予め定めた複数の小さなブロックに分割し、画像処理部３０が、それぞれのブロックごとに画像処理を行う。
【００２５】
画像処理部３０は、図１に示したように、入力ＤＭＡモジュール３２、画像処理モジュール３３−１、画像処理モジュール３３−２、画像処理モジュール３３−３、および出力ＤＭＡモジュール３４が直列に接続されたパイプライン処理によって、画像処理装置１における画像処理を順次行う。以下の説明においては、１フレームの静止画像のデータを分割したそれぞれのブロックに含まれるデータを、「ブロック画像データ」という。画像処理部３０は、ブロック画像データに含まれるそれぞれの画素のデータ（以下、「画素データ」という）を、例えば、予め定めた数の列ごとにＤＲＡＭ２０から読み出し、読み出した画素データを１つの処理単位として画像処理を行う。以下の説明においては、画像処理部３０が画像処理を行う１つの処理単位の画素データにおいて、同じ列に含まれる連続した複数の画素データを、「ユニットライン」という。
【００２６】
また、画像処理部３０は、１フレームの静止画像のデータに対して行う画像処理を選択する機能を備えている。より具体的には、画像処理部３０は、画像処理モジュール３３−１、画像処理モジュール３３−２、および画像処理モジュール３３−３のそれぞれによる画像処理を順次行うこともできるが、画像処理モジュール３３−１〜画像処理モジュール３３−３のいずれか１つまたは複数によって画像処理を行ったり、画像処理モジュール３３−１〜画像処理モジュール３３−３の順番を変更して画像処理を行ったりすることができる。以下の説明においては、画像処理モジュール３３−１〜画像処理モジュール３３−３のそれぞれを区別せずに表すときには、「画像処理モジュール３３」という。
【００２７】
接続切り替え部３１は、画像処理部３０に備えたそれぞれの構成要素が出力した画像データの出力先を切り替える、つまり、画像処理部３０に備えたそれぞれの構成要素同士の接続を切り替える。例えば、画像処理部３０によって画像処理モジュール３３−２のみの画像処理を行う場合には、入力ＤＭＡモジュール３２の出力端子と画像処理モジュール３３−２の入力端子とを接続し、画像処理モジュール３３−２の出力端子と出力ＤＭＡモジュール３４の入力端子とを接続するように、それぞれの構成要素の接続を切り替える。また、例えば、画像処理部３０によって画像処理モジュール３３−３、画像処理モジュール３３−１の順番で画像処理を行う場合には、入力ＤＭＡモジュール３２の出力端子と画像処理モジュール３３−３の入力端子とを接続し、画像処理モジュール３３−３の出力端子と画像処理モジュール３３−１の入力端子とを接続し、画像処理モジュール３３−１の出力端子と出力ＤＭＡモジュール３４の入力端子とを接続するように、それぞれの構成要素の接続を切り替える。なお、接続切り替え部３１は、例えば、画像処理装置１に備えた不図示のシステム制御部からの制御に応じて、画像処理部３０に備えたそれぞれの構成要素の接続の切り替えを行う。
【００２８】
入力ＤＭＡモジュール３２は、ＤＲＡＭ２０に記憶されているブロック画像データに含まれるそれぞれの画素データをユニットラインごとに読み出し、読み出した画素データを、接続切り替え部３１を介して、次に画像処理を行う処理モジュールであるいずれかの画像処理モジュール３３に出力するための処理モジュールである。入力ＤＭＡモジュール３２は、例えば、画像処理装置１に備えた不図示のシステム制御部からの制御に応じて、ＤＭＡバス１０を介してＤＲＡＭ２０から画素データを読み出し、読み出した画素データを接続切り替え部３１によって接続が切り替えられた接続先の画像処理モジュール３３に出力する。
【００２９】
なお、入力ＤＭＡモジュール３２は、予め定めた数のユニットライン分の画素データを一時的に記憶することができるデータバッファを備えている。このため、入力ＤＭＡモジュール３２は、ＤＭＡバス１０を介してＤＲＡＭ２０から読み出した画素データをデータバッファに一時記憶し、データバッファに一時記憶した画素データを、接続切り替え部３１によって接続が切り替えられた接続先の画像処理モジュール３３に出力することもできる。
【００３０】
画像処理モジュール３３−１〜画像処理モジュール３３−３のそれぞれは、接続切り替え部３１によって接続が切り替えられた接続先の入力ＤＭＡモジュール３２または画像処理モジュール３３から、接続切り替え部３１を介して入力された画素データに対して予め定めた種々のデジタル的な画像処理を行う処理モジュールである。画像処理モジュール３３−１〜画像処理モジュール３３−３のそれぞれが行う画像処理には、例えば、それぞれの画素データに対応するＹ（輝度）信号とＣ（色）信号とを生成するＹＣ処理、それぞれの画素データに含まれるノイズを低減するノイズ低減処理、それぞれの画素データで表される画像における倍率色収差などの補正を行う歪補正処理などが含まれている。画像処理モジュール３３−１〜画像処理モジュール３３−３のそれぞれは、例えば、画像処理装置１に備えた不図示のシステム制御部からの制御に応じて、接続切り替え部３１を介して入力された画素データに対して画像処理を施し、画像処理を施した画素データを、接続切り替え部３１によって接続が切り替えられた接続先の画像処理モジュール３３または出力ＤＭＡモジュール３４に出力する。
【００３１】
なお、画像処理モジュール３３−１〜画像処理モジュール３３−３のそれぞれにも、予め定めた数のユニットライン分の画素データを一時的に記憶することができるデータバッファを備えている。ただし、画像処理モジュール３３−１〜画像処理モジュール３３−３のそれぞれでは、接続切り替え部３１を介して入力された画素データをデータバッファに一時記憶するか否かが、パイプライン処理における画素データの流れに基づいて制御される。
【００３２】
なお、以下の説明においては、画像処理を施した画素データを、ＤＲＡＭ２０に記憶されている画像処理を行う対象の画素データと区別して表す場合には、「処理画素データ」という。
【００３３】
出力ＤＭＡモジュール３４は、接続切り替え部３１によって接続が切り替えられた接続先の画像処理モジュール３３から、接続切り替え部３１を介して入力された処理画素データを、ＤＲＡＭ２０に書き込む（記憶する）ための処理モジュールである。出力ＤＭＡモジュール３４は、例えば、画像処理装置１に備えた不図示のシステム制御部からの制御に応じて、接続切り替え部３１を介して入力された処理画素データを、ＤＭＡバス１０を介してＤＲＡＭ２０に出力する。
【００３４】
なお、出力ＤＭＡモジュール３４も、予め定めた数のユニットライン分の処理画素データを一時的に記憶することができるデータバッファを備えている。このため、出力ＤＭＡモジュール３４は、接続切り替え部３１を介して入力された処理画素データをデータバッファに一時記憶し、データバッファに一時記憶した処理画素データを、ＤＭＡバス１０を介してＤＲＡＭ２０に出力することもできる。
【００３５】
このように、画像処理部３０では、それぞれの処理モジュールが、１フレームの静止画像のデータをブロック画像データに分割し、例えば、画像処理装置１に備えた不図示のシステム制御部からの制御に応じた画像処理を、それぞれのブロック画像データに含まれる画素データに対してユニットラインごとに順次を行うことによって、それぞれのブロック画像データに対する一連の画像処理を行う。
【００３６】
次に、画像処理部３０に備えたそれぞれの処理モジュールの構成および動作について説明する。まず、画像処理部３０に備えたそれぞれの処理モジュール間の画素データの受け渡し方法について説明する。
【００３７】
図２は、本発明の第１の実施形態の画像処理装置１に備えた画像処理部３０における画像処理モジュール３３間のデータの転送方法の一例を示した図である。図２には、画像処理モジュール３３−１が画像処理を行った処理画素データを、画像処理モジュール３３−２に出力する場合の一例を示している。なお、上述したように、画像処理部３０においては、それぞれの処理モジュールが出力する画素データは、接続切り替え部３１を介して次に処理を行う処理モジュールに出力される。しかし、図２においては、接続切り替え部３１の図示を省略し、画像処理モジュール３３−１から画像処理モジュール３３−２に、処理画素データを直接出力するものとして示している。
【００３８】
上述したように、画像処理部３０では、それぞれの処理モジュールが、複数のユニットラインを１つの処理単位として画像処理を行う。このため、画像処理部３０に備えたそれぞれの処理モジュール間での画素データの受け渡しも、１つの処理単位ごとに行われる。図２には、前段の画像処理モジュール３３−１が、８つのユニットラインのそれぞれの処理画素データを１つの処理単位として、後段の画像処理モジュール３３−２に出力する場合を示している。なお、１つのユニットラインには、画像処理を施した同じ列に含まれる連続した複数の処理画素データが含まれている。
【００３９】
なお、図２においては、画像処理モジュール３３−１と画像処理モジュール３３−２との間の処理画素データの受け渡し方法（転送方法）の一例を示しているが、入力ＤＭＡモジュール３２と画像処理モジュール３３との間の画素データの受け渡し方法や、画像処理モジュール３３と出力ＤＭＡモジュール３４との間の処理画素データの受け渡し方法も、図２と同様である。また、図２においては、８つのユニットラインのそれぞれの処理画素データを１つの処理単位として受け渡している一例を示しているが、それぞれの処理モジュールの間で受け渡しを行うユニットラインの数は、図２に示した数、つまり、８つに限定されるものではない。
【００４０】
＜第１の構成＞
次に、画像処理部３０に備えたそれぞれの処理モジュールの第１の構成について説明する。図３は、本発明の第１の実施形態の画像処理装置１に備えた画像処理部３０における画像処理モジュール３３の概略構成を示したブロック図である。図３には、第１の構成の画像処理モジュール３３における基本的な構成を示している。図３に示した第１の構成の画像処理モジュール３３は、入力バッファ３３１と、セレクタ３３２と、演算部３３３と、制御部３３４と、を備えている。
【００４１】
入力バッファ３３１は、画像処理モジュール３３に入力された入力データを、一時的に記憶するデータバッファである。入力バッファ３３１は、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリで構成される。入力バッファ３３１は、前段の処理モジュールから入力された予め定めた数のユニットライン分の画素データを、入力データとして記憶することができる記憶容量をもっている。入力バッファ３３１は、制御部３３４から入力された制御信号に応じて、入力された入力データを一時記憶する。
【００４２】
なお、入力バッファ３３１は、予め定めた数のユニットライン分の画素データ（入力データ）を記憶する記憶容量の組を２つ備え、一方の記憶容量の組への画素データの書き込みと、他方の記憶容量の組からの画素データの読み出しとを交互に切り替えることによって、１つの処理単位の画素データの入出力を同時期に行うことができるように動作する、いわゆる、ダブルバッファで構成されていてもよい。
【００４３】
セレクタ３３２は、演算部３３３に出力する画素データを選択する選択部である。セレクタ３３２は、制御部３３４から入力された制御信号に応じて、入力バッファ３３１に一時記憶された入力データ（画素データ）、または画像処理モジュール３３に現在入力されている入力データ（画素データ）のいずれか一方の入力データ（画素データ）を、演算部３３３に出力する。つまり、セレクタ３３２は、前段の処理モジュールから入力されて入力バッファ３３１に一時記憶された画素データ、または前段の処理モジュールから現在入力されているそのままの画素データのいずれか一方の画素データを、演算部３３３に出力する。
【００４４】
演算部３３３は、入力された画素データに対して予め定めた種々のデジタル的な画像処理の演算を行う。演算部３３３は、画像処理の演算を行って生成した処理画素データを、出力データとして画像処理モジュール３３の外部に出力する。つまり、演算部３３３は、生成した処理画素データを、接続切り替え部３１を介して他の画像処理モジュール３３または出力ＤＭＡモジュール３４に出力する。
【００４５】
制御部３３４は、画像処理モジュール３３の動作状態の通知と、画像処理モジュール３３に備えたそれぞれの構成要素の制御とを行う。制御部３３４は、画像処理モジュール３３の動作状態を表す状態通知信号を、前段の処理モジュールに出力する。また、制御部３３４は、入力バッファ３３１に空いている記憶容量があるか否かによって、入力バッファ３３１の動作を制御する。
【００４６】
より具体的には、入力バッファ３３１に空いている記憶容量がある場合、入力バッファ３３１は、画像処理モジュール３３に入力された入力データを一時記憶することができる状態である。この場合、制御部３３４は、前段の処理モジュールからの入力データを受け付けることができる状態であることを表す状態通知信号として、画素データの出力を要求する信号を、前段の処理モジュールに出力する。そして、制御部３３４は、出力した画素データの出力を要求する状態通知信号に応じて前段の処理モジュールから入力された入力データを一時記憶する（書き込む）ように、入力バッファ３３１を制御する。
【００４７】
また、入力バッファ３３１に空いている記憶容量がない場合、入力バッファ３３１は、画像処理モジュール３３に入力された入力データを一時記憶することができない状態である。この場合、制御部３３４は、前段の処理モジュールからの入力データを受け付けることができない状態であることを表す状態通知信号として、画素データの出力を要求しないことを表す信号を、前段の処理モジュールに出力する。なお、このときの状態通知信号は、前段の処理モジュールに画素データの出力を要求しないことを、画素データの出力を要求する信号の論理レベルで表してもよいし、例えば、パイプライン処理が（一時）停止していることを表すパイプラインストール信号など、画素データの出力を要求する信号と異なる信号で表してもよい。
【００４８】
また、制御部３３４は、入力バッファ３３１に一時記憶されている画素データの読み出しの動作と、セレクタ３３２が演算部３３３に出力する画素データの選択（切り替え）とを制御する。制御部３３４における入力バッファ３３１からの画素データの読み出し動作の制御やセレクタ３３２の切り替えの制御は、入力バッファ３３１に空いている記憶容量があるか否かの判定結果、および後段の処理モジュールから入力された状態通知信号に基づいて行う。なお、後段の処理モジュールから入力される状態通知信号は、演算部３３３が生成した処理画素データの出力先である後段の処理モジュールに備えた制御部３３４が出力する状態通知信号であり、上述したように、後段の処理モジュールが処理画素データを受け付けることができる状態であるか否かを表す信号、つまり、処理画素データの出力を要求するか否かを表す信号などが含まれている。
【００４９】
そして、制御部３３４は、後段の処理モジュールから入力された状態通知信号が、処理画素データを受け付けることができる状態であることを表している場合、入力バッファ３３１の記憶容量が空いているか否かによってセレクタ３３２を制御し、入力バッファ３３１に一時記憶された画素データ、または画像処理モジュール３３に現在入力されている画素データのいずれか一方の画素データを、演算部３３３に出力させる。
【００５０】
より具体的には、入力バッファ３３１の記憶容量が全て空いていない場合、入力バッファ３３１には、少なくとも１つのユニットライン分の画素データが一時記憶されている状態である。この場合、制御部３３４は、一時記憶された画素データを読み出すように入力バッファ３３１を制御すると共に、入力バッファ３３１から出力された画素データを演算部３３３に転送するようにセレクタ３３２を制御する。これにより、演算部３３３は、入力バッファ３３１に一時記憶された画素データに対して画像処理の演算を行って生成した処理画素データを、後段の画像処理モジュール３３に出力する。このとき、制御部３３４は、出力した画素データの出力を要求する状態通知信号に応じた入力データが前段の処理モジュールから入力された場合には、入力された入力データを空いている記憶容量に一時記憶する（書き込む）ように、入力バッファ３３１を制御する。
【００５１】
また、入力バッファ３３１の記憶容量が全て空いている場合、入力バッファ３３１には、１つのユニットライン分の画素データも一時記憶されていない状態である。この場合、制御部３３４は、動作を停止するように入力バッファ３３１を制御する。これにより、画像処理モジュール３３では、入力バッファ３３１の消費電力を削減することができる。そして、制御部３３４は、画像処理モジュール３３に現在入力されている画素データをそのまま、つまり、現在入力されている画素データを入力バッファ３３１に一時記憶せずに直接、演算部３３３に出力するようにセレクタ３３２を制御する。これにより、演算部３３３は、画像処理モジュール３３に現在入力されている画素データに対して画像処理の演算を行って生成した処理画素データを、後段の画像処理モジュール３３に出力する。
【００５２】
一方、制御部３３４は、後段の処理モジュールから入力された状態通知信号が、処理画素データを受け付けることができない状態であることを表しており、かつ、入力バッファ３３１の記憶容量が空いている場合、制御部３３４は、画像処理モジュール３３に入力された入力データを空いている記憶容量に一時記憶する（書き込む）ように、入力バッファ３３１を制御する。
【００５３】
なお、後段の処理モジュールから入力された状態通知信号が、処理画素データを受け付けることができない状態であることを表しており、かつ、入力バッファ３３１の記憶容量が空いていない場合は、制御部３３４は、入力データを受け付けることができない状態であることを表す状態通知信号を前段の処理モジュールに出力しているため、前段の処理モジュールからは入力データが入力されない。このため、制御部３３４は、入力バッファ３３１の動作を制御しない。
【００５４】
このような構成によって画像処理部３０に備えたそれぞれの処理モジュールは、入力バッファ３３１の記憶容量の空き状態に基づいて、前段の処理モジュールからの入力データの受け付けと、演算部３３３が画像処理の演算を行う画素データの選択（切り替え）とを行う。
【００５５】
次に、画像処理部３０に備えたそれぞれの処理モジュールの動作について説明する。図４は、本発明の第１の実施形態の画像処理装置１に備えた画像処理部３０における画像処理モジュール３３の動作の一例を示したタイミングチャートである。図４には、画像処理部３０が、図１に示したように、入力ＤＭＡモジュール３２、第１の構成の画像処理モジュール３３−１〜画像処理モジュール３３−３、および出力ＤＭＡモジュール３４が直列に接続（パイプライン接続）された構成によってパイプライン処理を行う場合において、画像処理モジュール３３−１から画像処理モジュール３３−２への処理画素データの受け渡しの一例を示している。
【００５６】
図４には、画像処理モジュール３３−１および画像処理モジュール３３−２のそれぞれについて、入力される入力データ、入力バッファ３３１への入力データの書き込みを表すバッファライト、入力バッファ３３１からの入力データの読み出しを表すバッファリード、および出力する出力データを示している。また、図４には、画像処理モジュール３３−１および画像処理モジュール３３−２のそれぞれが前段の処理モジュールに出力する状態通知信号として、入力データの出力を要求する信号（以下、「データリクエスト信号」という）を示している。なお、図４には、画像処理モジュール３３−２の後段に接続された画像処理モジュール３３−３が状態通知信号として出力するデータリクエスト信号も示している。
【００５７】
なお、図４の説明においては、１つのユニットラインを１つの処理単位として画像処理を行うものとして説明する。そして、図４には、入力データ、バッファライト、バッファリード、および出力データのそれぞれに、何番目のユニットラインであるかを表す数字を示している。また、画像処理部３０に備えたそれぞれの処理モジュールは、２つのユニットライン分の画素データを記憶することができる容量のデータバッファを備えているものとして説明する。また、以下の説明においては、画像処理モジュール３３−１に備えたそれぞれの構成要素と、画像処理モジュール３３−２に備えたそれぞれの構成要素とを区別するため、それぞれの構成要素に付与した符号に続いて、画像処理モジュール３３に付与した「−」と、それに続く数字の部分を付与して表す。例えば、画像処理モジュール３３−１に備えた制御部３３４を「制御部３３４−１」とし、画像処理モジュール３３−２に備えた制御部３３４を「制御部３３４−２」として表す。
【００５８】
画像処理部３０がパイプライン処理を開始すると、画像処理モジュール３３−１、画像処理モジュール３３−２、画像処理モジュール３３−３、および出力ＤＭＡモジュール３４のそれぞれは、入力データの出力を要求するデータリクエスト信号を、前段の処理モジュールに出力する。これは、画像処理部３０がパイプライン処理を開始した最初の段階では、それぞれの画像処理モジュール３３に備えた入力バッファ３３１の記憶容量は全て空いているため、入力データを受け付けることができる状態であるからである。この場合、画像処理モジュール３３−１に備えた演算部３３３−１、および画像処理モジュール３３−２に備えた演算部３３３−２は、入力された画素データに対する画像処理をすぐに行うことができる状態である。また、画像処理部３０がパイプライン処理を開始した最初の段階では、出力ＤＭＡモジュール３４は、入力された入力データ（処理画素データ）を、すぐにＤＭＡバス１０を介してＤＲＡＭ２０に出力することができる状態であるからである。
【００５９】
なお、図４においては、データリクエスト信号が“Ｈｉｇｈ”レベルの期間が、それぞれの処理モジュールが画素データを受け付けることができる状態であるリクエスト期間を表し、データリクエスト信号が“Ｌｏｗ”レベルの期間が、それぞれの処理モジュールが画素データを受け付けることができない状態であるリクエストネゲート期間を表している。
【００６０】
入力ＤＭＡモジュール３２は、後段の画像処理モジュール３３−１からデータリクエスト信号が入力されると、まず、ＤＲＡＭ２０に記憶されている１つ目のユニットラインのそれぞれの画素データを、ＤＭＡバス１０を介してユニットラインごとに順次読み出す。そして、入力ＤＭＡモジュール３２は、読み出した画素データを画像処理モジュール３３−１に出力する。このとき、入力ＤＭＡモジュール３２の後段に接続された画像処理モジュール３３−１は、“Ｈｉｇｈ”レベルのデータリクエスト信号を出力することによって、画素データを受け付けることができる状態であることを示している。このため、入力ＤＭＡモジュール３２は、読み出した画素データをデータバッファに一時記憶せずに、そのまま画像処理モジュール３３−１に出力する。このとき、入力ＤＭＡモジュール３２では、データバッファの動作を停止して、データバッファの消費電力を削減する。その後、入力ＤＭＡモジュール３２は、ＤＲＡＭ２０に記憶されている２つ目のユニットラインのそれぞれの画素データを読み出して、画像処理モジュール３３−１への出力を開始する。
【００６１】
また、画像処理モジュール３３−１は、後段の画像処理モジュール３３−２からデータリクエスト信号が入力されると、入力ＤＭＡモジュール３２から入力された１つ目のユニットラインのそれぞれの画素データに対して画像処理を行う。このとき、画像処理モジュール３３−１は、上述したように、入力バッファ３３１−１の記憶容量が全て空いている状態であり、演算部３３３−１が入力された画素データに対する画像処理をすぐに行うことができる状態である。また、このとき、画像処理モジュール３３−１の後段に接続された画像処理モジュール３３−２は、“Ｈｉｇｈ”レベルのデータリクエスト信号を出力することによって、処理画素データを受け付けることができる状態であることを示している。このため、制御部３３４−１は、前段の入力ＤＭＡモジュール３２から現在入力されている１つ目のユニットラインのそれぞれの画素データを、そのまま演算部３３３−１に出力するようにセレクタ３３２−１を制御する。また、制御部３３４−１は、入力バッファ３３１−１の動作を停止するように制御して、入力バッファ３３１−１の消費電力を削減する。これにより、演算部３３３−１は、セレクタ３３２−１を介して入力された１つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行って生成した処理画素データを、後段の画像処理モジュール３３−２に出力する。なお、画像処理モジュール３３−１から出力される処理画素データは、演算部３３３−１が画像処理の演算を行うことによって発生する、画素データが入力されてから処理画素データが出力されるまでの遅延時間（以下、「レイテンシ」という）だけ遅れて出力される。その後、画像処理モジュール３３−１は、入力ＤＭＡモジュール３２から入力された２つ目のユニットラインのそれぞれの画素データに対する画像処理を開始する。
【００６２】
また、画像処理モジュール３３−２は、後段の画像処理モジュール３３−３からデータリクエスト信号が入力されると、画像処理モジュール３３−１から入力された１つ目のユニットラインに対応した処理画素データに対して画像処理を行う。このとき、画像処理モジュール３３−２も、上述したように、入力バッファ３３１−２の記憶容量が全て空いている状態であり、演算部３３３−２が入力された処理画素データに対する画像処理をすぐに行うことができる状態である。また、このとき、画像処理モジュール３３−２の後段に接続された画像処理モジュール３３−３も、“Ｈｉｇｈ”レベルのデータリクエスト信号を出力することによって、処理画素データを受け付けることができる状態であることを示している。このため、制御部３３４−２も、前段の画像処理モジュール３３−１から現在入力されている１つ目のユニットラインに対応する処理画素データを、そのまま演算部３３３−２に出力するようにセレクタ３３２−２を制御する。また、制御部３３４−２は、入力バッファ３３１−２の動作を停止するように制御して、入力バッファ３３１−２の消費電力を削減する。これにより、演算部３３３−２は、セレクタ３３２−２を介して入力された１つ目のユニットラインに対応する処理画素データに対して画像処理の演算を行い、演算部３３３−２におけるレイテンシだけ遅れた処理画素データを画像処理モジュール３３−３に出力する。その後、画像処理モジュール３３−２も、画像処理モジュール３３−１から入力された２つ目のユニットラインに対応する処理画素データに対する画像処理を開始する。
【００６３】
このようにして、画像処理部３０では、それぞれの処理モジュールが、パイプライン接続された後段の処理モジュールに、入力された入力データを順次受け渡す。このとき、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ３３１の記憶容量が全て空いている状態で、かつ、後段の処理モジュールが入力データを受け付けることができる状態であるため、前段の処理モジュールから入力された入力データを入力バッファ３３１に一時記憶せずに、そのまま、またはすぐに画像処理の演算を行って、後段の処理モジュールに出力する。図４には、画像処理モジュール３３−１と画像処理モジュール３３−２とのそれぞれのバッファライトおよびバッファリードに、入力データを入力バッファ３３１に一時記憶しない期間、すなわち、入力バッファ３３１を介さずに演算部３３３に入力データを転送する期間を、バッファスルーの期間として示している。
【００６４】
そして、画像処理部３０では、それぞれの処理モジュールが、処理モジュール自身に備えたデータバッファ（入力バッファ３３１）の動作を停止するように制御する。つまり、画像処理部３０では、それぞれの処理モジュールにおけるバッファスルーの期間のデータバッファ（入力バッファ３３１）の動作を停止する。これにより、画像処理部３０では、それぞれの処理モジュールに備えたデータバッファ（入力バッファ３３１）の消費電力を削減することができる。
【００６５】
ここで、画像処理モジュール３３−２が２つ目のユニットラインに対応した処理画素データを出力しているときに、後段の画像処理モジュール３３−３が何らかの要因によって処理画素データを受け付けることができない状態になった場合の動作について説明する。この場合、画像処理モジュール３３−３は、画像処理モジュール３３−２に出力しているデータリクエスト信号を“Ｌｏｗ”レベルにすることによって、処理画素データを受け付けることができない状態である、つまり、入力データの出力を要求しないことを表す。なお、それぞれの処理モジュールが、入力データの出力を要求しないことを前段の処理モジュールに伝える方法は、上述したように、データリクエスト信号の論理レベルによる方法に限定されるものではなく、パイプラインストール信号を出力することによって、画素データを受け付けることができない状態であることを通知する方法であってもよい。
【００６６】
このとき、画像処理モジュール３３−２は、入力バッファ３３１−２の記憶容量が全て空いている状態（２つのユニットライン分の記憶容量が空いている状態）であるため、制御部３３４−２は、前段の画像処理モジュール３３−１から現在入力されている３つ目のユニットラインに対応した処理画素データを一時記憶するように、入力バッファ３３１−２を制御する。これにより、入力バッファ３３１−２は、３つ目のユニットラインに対応した処理画素データを記憶し、１つのユニットライン分の記憶容量が空いている（残っている）状態になる。
【００６７】
さらに、画像処理モジュール３３−２では、制御部３３４−２が、前段の画像処理モジュール３３−１から現在入力されている４つ目のユニットラインに対応した処理画素データを一時記憶するように、入力バッファ３３１−２を制御する。これにより、入力バッファ３３１−２は、４つ目のユニットラインに対応した処理画素データも記憶し、空いている記憶容量がない状態になる。つまり、画像処理モジュール３３−２は、画像処理モジュール３３−１からの処理画素データを受け付けることができない状態になる。このため、制御部３３４−２は、画像処理モジュール３３−２が処理画素データを受け付けることができない状態になったことを表すために、画像処理モジュール３３−１に出力しているデータリクエスト信号を“Ｌｏｗ”レベルにする。
【００６８】
これにより、画像処理モジュール３３−１では、制御部３３４−１が、画像処理モジュール３３−２に備えた制御部３３４−２と同様に、入力ＤＭＡモジュール３２から入力された５つ目と６つ目のユニットラインのそれぞれの画素データを一時記憶するように、入力バッファ３３１−１を制御する。これにより、入力バッファ３３１−１は、５つ目と６つ目のユニットラインのそれぞれの画素データを記憶し、画像処理モジュール３３−１は、入力ＤＭＡモジュール３２からの画素データを受け付けることができない状態になる。このため、制御部３３４−１も、制御部３３４−２と同様に、画像処理モジュール３３−１が画素データを受け付けることができない状態になったことを表すために、入力ＤＭＡモジュール３２に出力しているデータリクエスト信号を“Ｌｏｗ”レベルにする。
【００６９】
これにより、入力ＤＭＡモジュール３２は、ＤＲＡＭ２０に記憶されている７つ目のユニットラインのそれぞれの画素データの読み出しを保留する。なお、入力ＤＭＡモジュール３２にも、２つのユニットライン分の画素データを記憶することができる容量のデータバッファを備えている。このため、入力ＤＭＡモジュール３２は、７つ目と８つ目のユニットラインのそれぞれの画素データを読み出して、データバッファに一旦記憶してから、９つ目のユニットラインのそれぞれの画素データの読み出しを保留してもよい。
【００７０】
このようにして、画像処理部３０では、パイプライン接続された後段の処理モジュールから入力されたデータリクエスト信号が、画素データを受け付けることができない状態であることを表している場合、それぞれの処理モジュールは、後段の処理モジュールへの出力データの出力を停止する。そして、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ３３１の記憶容量が空いている分の画素データを一時記憶した後に、処理モジュール自身が画素データを受け付けることができない状態になったことを通知する。
【００７１】
なお、画像処理部３０では、それぞれの処理モジュールが、処理単位ごとに処理を行っている。従って、それぞれの処理モジュールが１つの処理単位の画素データを後段の処理モジュールに出力している途中で画素データを受け付けることができない状態であることが通知された場合でも、現在出力している処理単位の全ての画素データを出力した後に、後段の処理モジュールへの出力データの出力を停止する。
【００７２】
続いて、画像処理モジュール３３−３が処理画素データを受け付けることができる状態になった場合の動作について説明する。この場合、画像処理モジュール３３−３は、画像処理モジュール３３−２に出力しているデータリクエスト信号を“Ｈｉｇｈ”レベルにすることによって、処理画素データを受け付けることができる状態である、つまり、入力データの出力を要求することを表す。なお、それぞれの処理モジュールが、再び入力データの出力を要求することを前段の処理モジュールに伝える方法は、上述したように、データリクエスト信号の論理レベルによる方法に限定されるものではなく、パイプラインストール信号の出力を停止することによって、画素データを受け付けることができる状態であることを通知する方法であってもよい。
【００７３】
このとき、画像処理モジュール３３−２は、入力バッファ３３１−２に空いている記憶容量がない状態（３つ目と４つ目のユニットラインに対応したそれぞれの処理画素データを一時記憶している状態）である。このため、制御部３３４−２は、まず、入力バッファ３３１−２に記憶している３つ目のユニットラインに対応した処理画素データを入力バッファ３３１−２から読み出して演算部３３３−２に出力するように、入力バッファ３３１−２およびセレクタ３３２−２を制御する。これにより、入力バッファ３３１−２は、記憶している３つ目のユニットラインに対応した処理画素データをセレクタ３３２−２に出力し、セレクタ３３２−２は、入力バッファ３３１−２から入力された３つ目のユニットラインに対応した処理画素データを演算部３３３−２に出力する。そして、演算部３３３−２は、セレクタ３３２−２から出力された３つ目のユニットラインに対応した処理画素データに対して画像処理の演算を行い、演算部３３３−２におけるレイテンシだけ遅れた処理画素データを、後段の画像処理モジュール３３−３に出力する。
【００７４】
また、入力バッファ３３１−２は、３つ目のユニットラインに対応した処理画素データを出力することにより、１つのユニットライン分の記憶容量が空いている（残っている）状態になる。つまり、画像処理モジュール３３−２は、画像処理モジュール３３−１からの処理画素データを受け付けることができる状態になる。このため、制御部３３４−２は、画像処理モジュール３３−２が処理画素データを受け付けることができる状態になったことを表すために、画像処理モジュール３３−１に出力しているデータリクエスト信号を“Ｈｉｇｈ”レベルにする。
【００７５】
さらに、画像処理モジュール３３−２では、入力バッファ３３１−２に空いている記憶容量があるが、４つ目のユニットラインに対応した処理画素データを一時記憶している状態である。このため、制御部３３４−２は、入力バッファ３３１−２に記憶している４つ目のユニットラインに対応した処理画素データを入力バッファ３３１−２から読み出して演算部３３３−２に出力するように、入力バッファ３３１−２およびセレクタ３３２−２を制御する。これにより、演算部３３３−２に、入力バッファ３３１−２に記憶している４つ目のユニットラインに対応した処理画素データが、セレクタ３３２−２を介して入力される。そして、演算部３３３−２は、セレクタ３３２−２を介して入力された４つ目のユニットラインに対応した処理画素データに対して画像処理の演算を行って生成した処理画素データを、画像処理モジュール３３−３に出力する。
【００７６】
また、画像処理モジュール３３−１では、後段の画像処理モジュール３３−２から入力されたデータリクエスト信号が“Ｈｉｇｈ”レベルになり、画像処理モジュール３３−２が処理画素データを受け付けることができる状態になったことが通知されると、制御部３３４−１は、画像処理モジュール３３−２に備えた制御部３３４−２と同様に、５つ目と６つ目のユニットラインに対応した処理画素データを画像処理モジュール３３−２に出力する。より具体的には、制御部３３４−１が、入力バッファ３３１−１に記憶された５つ目と６つ目のユニットラインのそれぞれの画素データを順次読み出して演算部３３３−１に出力するように、入力バッファ３３１−２およびセレクタ３３２−２を制御する。これにより、演算部３３３−１は、セレクタ３３２−１を介して順次入力された５つ目と６つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行い、演算部３３３−１におけるレイテンシだけ遅れた処理画素データを、後段の画像処理モジュール３３−２に出力する。
【００７７】
また、入力バッファ３３１−１は、５つ目のユニットラインのそれぞれの画素データを出力したときに、１つのユニットライン分の記憶容量が空いている（残っている）状態になり、画像処理モジュール３３−１が入力ＤＭＡモジュール３２からの画素データを受け付けることができる状態になる。このため、制御部３３４−１は、制御部３３４−２と同様に、画像処理モジュール３３−１が画素データを受け付けることができる状態になったことを表すために、入力ＤＭＡモジュール３２に出力しているデータリクエスト信号を“Ｈｉｇｈ”レベルにする。
【００７８】
これにより、入力ＤＭＡモジュール３２は、ＤＲＡＭ２０に記憶されている７つ目のユニットラインから、画素データの読み出しを再開し、読み出した画素データを画像処理モジュール３３−１に出力する。なお、入力ＤＭＡモジュール３２が、ＤＲＡＭ２０に記憶されている画素データの読み出しを保留する際に、７つ目と８つ目のユニットラインのそれぞれの画素データをデータバッファに記憶している場合には、データバッファに記憶している７つ目のユニットラインのそれぞれの画素データを画像処理モジュール３３−１に出力した後に、９つ目のユニットラインから、画素データの読み出しを再開してもよい。
【００７９】
このようにして、画像処理部３０では、パイプライン接続された後段の処理モジュールから入力されたデータリクエスト信号が、再び画素データを受け付けることができる状態に変わった場合、それぞれの処理モジュールは、後段の処理モジュールへの出力データの出力を再開する。このとき、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ３３１に記憶している画素データから順次、後段の処理モジュールに出力する。そして、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ３３１の記憶容量が空いている状態になった後に、処理モジュール自身が画素データを受け付けることができる状態になったことを通知する。その後、それぞれの処理モジュールは、入力された画素データを処理モジュール自身に備えた入力バッファ３３１に一旦記憶してから読み出して、後段の処理モジュールに順次出力する。
【００８０】
以降、上述したような動作を繰り返すことによって、画像処理部３０では、パイプライン接続されたそれぞれの処理モジュールによるパイプライン処理を、それぞれのブロック画像データに含まれる画素データに対してユニットラインごとに順次を行うことによって、それぞれのブロック画像データに対する一連の画像処理を行う。
【００８１】
なお、図４に示した画像処理モジュール３３の動作のタイミングチャートの一例には示していないが、それぞれの処理モジュールによる後段の処理モジュールへの出力データの出力を再開した後、再び入力バッファ３３１を介さずに入力データを後段の処理モジュールにそのまま出力することができる状態になった場合には、図４に示したパイプライン処理を開始した最初の段階と同様に、入力バッファ３３１の動作を停止するように制御する。これにより、画像処理部３０では、それぞれの処理モジュールに備えた入力バッファ３３１の消費電力を削減することができる。
【００８２】
次に、画像処理モジュール３３に備えた制御部３３４の構成について説明する。図５は、本発明の第１の実施形態の画像処理装置１に備えた画像処理部３０における画像処理モジュール３３の構成を示したブロック図である。図５には、第１の構成の画像処理モジュール３３に備えた制御部３３４の概略構成を示している。なお、図５には、第１の構成の画像処理モジュール３３に備えた入力バッファ３３１、セレクタ３３２、および演算部３３３も併せて示している。図５に示した制御部３３４は、データ量管理部３３４１と、バッファスルー判定部３３４２と、入力バッファ書き込み管理部３３４３と、入力バッファ読み出し管理部３３４４と、を備えている。
【００８３】
データ量管理部３３４１は、入力バッファ３３１に一時記憶する入力データ（画素データ）のデータ量を管理するため、入力バッファ３３１に一時記憶するユニットラインの数を管理する。より具体的には、データ量管理部３３４１は、前段の処理モジュールから入力されるデータ有効信号に基づいて、現在入力された画素データが、入力バッファ３３１に一時記憶すべき有効な画素データであるか否かを判定する。なお、データ有効信号は、ユニットラインに含まれるそれぞれの画素データが、有効な画素データであるか否かを表す信号である。データ量管理部３３４１は、有効な画素データの数を計数することによって、現在の入力されているユニットラインに含まれる全ての有効な画素データが、前段の処理モジュールから入力されたか否かを判定する。
【００８４】
また、データ量管理部３３４１は、有効な画素データを含むユニットラインが入力されると、入力バッファ３３１に一時記憶されているユニットラインの数を表す情報（以下、「バッファ内データ量情報」という）を更新する。例えば、データ量管理部３３４１は、前段の処理モジュールから有効な画素データを含むユニットラインが入力されるごとに、バッファ内データ量情報が表すユニットライン数を１ずつ加算する。データ量管理部３３４１がバッファ内データ量情報を加算するタイミングは、ユニットラインにおいて１つ目の有効な画素データを判定したタイミングである。これは、１つのユニットラインにおいて１つ目の有効な画素データが入力されると、その後、このユニットラインに含まれる有効な画素データが引き続き入力されるからである。
【００８５】
また、データ量管理部３３４１は、入力バッファ読み出し管理部３３４４が入力バッファ３３１に一時記憶した画素データを読み出すバッファリード信号に基づいて、入力バッファ３３１から読み出した画素データの数を計数し、現在の出力するユニットラインに含まれる全ての画素データが、入力バッファ３３１から読み出されたか否かを判定する。データ量管理部３３４１は、ユニットラインに含まれる全ての画素データが読み出されたと判定すると、バッファ内データ量情報を更新する。例えば、データ量管理部３３４１は、１つのユニットラインが読み出されたと判定するごとに、バッファ内データ量情報が表すユニットライン数を１ずつ減算する。データ量管理部３３４１がバッファ内データ量情報を減算するタイミングは、ユニットラインに含まれる最後の画素データの読み出し判定したタイミング、つまり、１つのユニットラインに含まれる全ての画素データを入力バッファ３３１から読み出したタイミングである。これは、１つのユニットラインに含まれる全ての画素データの読み出しが終わらないと、他のユニットラインのそれぞれの画素データを入力バッファ３３１に一時記憶することができないからである。
【００８６】
このように、データ量管理部３３４１は、入力バッファ３３１に一時記憶されているユニットラインの数を管理する。そして、データ量管理部３３４１は、バッファ内データ量情報を、バッファスルー判定部３３４２および入力バッファ読み出し管理部３３４４に出力する。
【００８７】
また、データ量管理部３３４１は、入力バッファ３３１に一時記憶されているデータ量（ユニットラインの数）を管理した結果、入力バッファ３３１に空いている記憶容量があると判定した場合には、入力データの出力を要求するデータリクエスト信号を、前段の処理モジュールに出力する。より具体的には、データ量管理部３３４１は、入力バッファ３３１に一時記憶することができるユニットラインの最大数から、バッファ内データ量情報が表すユニットライン数、つまり、入力バッファ３３１に一時記憶している現在のユニットライン数を減算した値が、「０」よりも大きい値である場合には、入力バッファ３３１に空いている記憶容量があると判定し、入力データの出力を要求することを表すデータリクエスト信号を前段の処理モジュールに出力する。つまり、バッファ内データ量情報が表すユニットライン数が、入力バッファ３３１に一時記憶することができるユニットラインの最大数よりも小さい値である場合には、入力データの出力を要求することを表すデータリクエスト信号を前段の処理モジュールに出力する。また、データ量管理部３３４１は、入力バッファ３３１に一時記憶することができるユニットラインの最大数から、バッファ内データ量情報が表すユニットライン数を減算した値が、「０」である場合には、入力バッファ３３１に空いている記憶容量がないと判定し、前段の処理モジュールに出力しているデータリクエスト信号を、入力データの出力を要求しないことを表す論理レベルにする。また、このとき、データ量管理部３３４１は、入力データの出力を要求しないことを表すパイプラインストール信号を前段の処理モジュールに出力する。つまり、バッファ内データ量情報が表すユニットライン数が、入力バッファ３３１に一時記憶することができるユニットラインの最大数と同じ値である場合には、前段の処理モジュールに出力しているデータリクエスト信号を、入力データの出力を要求しないことを表す論理レベルにし、パイプラインストール信号を前段の処理モジュールに出力する。
【００８８】
なお、上述したデータ量管理部３３４１の動作では、バッファ内データ量情報が表すユニットライン数が、入力バッファ３３１に一時記憶することができるユニットラインの最大数よりも小さい値である場合に、入力データの出力を要求することを表すデータリクエスト信号を前段の処理モジュールに出力する動作を示した。しかし、データ量管理部３３４１は、例えば、入力データの出力を要求することを表すデータリクエスト信号に応じて前段の処理モジュールから入力データが入力されるまでの遅延時間（レイテンシ）が予めわかっている場合には、入力バッファ３３１からの画素データの読み出しが終了するタイミングを予想し、画素データの読み出しが終了する前のタイミングで、入力データの出力を要求するデータリクエスト信号を出力してもよい。
【００８９】
バッファスルー判定部３３４２は、データ量管理部３３４１から入力されたバッファ内データ量情報と、後段の処理モジュールから入力されたデータリクエスト信号およびパイプラインストール信号とに基づいて、入力バッファ３３１の制御方法を判定する。すなわち、バッファスルー判定部３３４２は、画像処理モジュール３３に入力された入力データを入力バッファ３３１に一時記憶する（書き込む）か否かの判定、入力バッファ３３１に一時記憶している入力データ（画素データ）を読み出すか否かの判定、および演算部３３３に出力する入力データ（画素データ）の選択（切り替え）の判定を行う。そして、バッファスルー判定部３３４２は、判定した結果に基づいて、入力バッファ書き込み管理部３３４３と、入力バッファ読み出し管理部３３４４とのそれぞれに、入力バッファ３３１に対する動作を指示するための指示信号（以下、「バッファ動作指示信号」という）を出力する。また、バッファスルー判定部３３４２は、セレクタ３３２を制御するための制御信号（以下、「バッファスルー信号」という）を出力する。
【００９０】
より具体的には、バッファスルー判定部３３４２は、後段の処理モジュールからデータリクエスト信号が入力され、かつ、パイプラインストール信号が入力されていない場合には、後段の処理モジュールが処理画素データを受け付けることができる状態であると判定する。そして、バッファスルー判定部３３４２は、バッファ内データ量情報が表すユニットライン数が「０」よりも大きい値であるときには、入力バッファ３３１に少なくとも１つのユニットライン分の画素データが一時記憶されていると判定する。この場合、バッファスルー判定部３３４２は、入力バッファ書き込み管理部３３４３に、画像処理モジュール３３に入力された入力データを一時記憶する（書き込む）ように指示するバッファ動作指示信号を出力する。また、バッファスルー判定部３３４２は、入力バッファ読み出し管理部３３４４に、入力バッファ３３１に一時記憶している画素データを読み出すように指示するバッファ動作指示信号を出力する。さらに、バッファスルー判定部３３４２は、セレクタ３３２に、入力バッファ３３１から出力された画素データを演算部３３３に出力するように制御するバッファスルー信号を出力する。これにより、画像処理モジュール３３に現在入力されている画素データは、入力バッファ３３１に一時記憶された後に読み出されて、つまり、入力バッファ３３１に一旦記憶されてから、演算部３３３に転送される。
【００９１】
また、バッファスルー判定部３３４２が後段の処理モジュールが処理画素データを受け付けることができる状態であると判定した場合において、バッファ内データ量情報が表すユニットライン数が「０」であるときには、入力バッファ３３１に１つのユニットライン分の画素データも一時記憶されていないと判定する。つまり、バッファスルー判定部３３４２は、処理画素データの流れが滞らずに、パイプライン処理がスムーズに行われている状態であると判定する。この場合、バッファスルー判定部３３４２は、入力バッファ書き込み管理部３３４３に、入力バッファ３３１の動作を停止させるように指示するバッファ動作指示信号を出力する。また、バッファスルー判定部３３４２は、入力バッファ読み出し管理部３３４４に、入力バッファ３３１に一時記憶している画素データの読み出しを行わないように指示するバッファ動作指示信号を出力する。さらに、バッファスルー判定部３３４２は、セレクタ３３２に、画像処理モジュール３３に現在入力されている入力データ（画素データ）をそのまま演算部３３３に出力するように制御するバッファスルー信号を出力する。これにより、画像処理モジュール３３に現在入力されている画素データが、入力バッファ３３１に一時記憶されずに直接、つまり、入力バッファ３３１をスルーして演算部３３３に転送される。
【００９２】
また、バッファスルー判定部３３４２は、後段の処理モジュールからデータリクエスト信号が入力されていない場合、または後段の処理モジュールからデータリクエスト信号が入力されているが、パイプラインストール信号が入力されている場合には、後段の処理モジュールが処理画素データを受け付けることができない状態であると判定する。この場合において、バッファスルー判定部３３４２は、バッファ内データ量情報が表すユニットライン数が、入力バッファ３３１に一時記憶することができるユニットラインの最大数よりも小さい値であるときには、入力バッファ３３１に少なくとも１つのユニットライン分の画素データを一時記憶することができると判定する。この場合、バッファスルー判定部３３４２は、入力バッファ書き込み管理部３３４３に、画像処理モジュール３３に入力された入力データを一時記憶する（書き込む）ように指示するバッファ動作指示信号を出力する。これにより、画像処理モジュール３３に現在入力されている画素データは、入力バッファ３３１に一時記憶される。
【００９３】
なお、このとき、バッファスルー判定部３３４２は、入力バッファ読み出し管理部３３４４に、入力バッファ３３１に一時記憶している画素データの読み出しを行わないように指示するバッファ動作指示信号を出力する。さらに、バッファスルー判定部３３４２は、セレクタ３３２に、入力バッファ３３１から出力された画素データを演算部３３３に出力するように制御するバッファスルー信号を出力する。これにより、画像処理モジュール３３に現在入力されて入力バッファ３３１に一時記憶している画素データと同じ画素データ（現在は画像処理の演算対象ではない画素データ）が、入力バッファ３３１をスルーする経路を通って演算部３３３に出力されることがなくなり、演算部３３３が不要な動作を行って電力を消費してしまうことを回避することができる。
【００９４】
また、画像処理モジュール３３では、後段の処理モジュールが処理画素データを受け付けることができない状態であると判定した場合で、かつ、バッファ内データ量情報が表すユニットライン数が、入力バッファ３３１に一時記憶することができるユニットラインの最大数と同じ値であるとき、データ量管理部３３４１が入力データの出力を要求しないことを表すパイプラインストール信号を前段の処理モジュールに出力している。このため、画像処理モジュール３３には、前段の処理モジュールからの入力データが入力されない。このとき、バッファスルー判定部３３４２は、入力バッファ書き込み管理部３３４３および入力バッファ読み出し管理部３３４４のそれぞれに、入力バッファ３３１への書き込みおよび読み出しの動作をしないように指示する。すなわち、バッファスルー判定部３３４２は、入力バッファ３３１に一時記憶している画素データを保持するように指示する。このときも、バッファスルー判定部３３４２は、セレクタ３３２に、入力バッファ３３１から出力された画素データを演算部３３３に出力するように制御するバッファスルー信号を出力する。これにより、演算部３３３には、画素データが入力されることがなくなる。
【００９５】
入力バッファ書き込み管理部３３４３は、バッファスルー判定部３３４２から入力されたバッファ動作指示信号に応じて、入力バッファ３３１に対する入力データの書き込み動作を行うための制御信号（以下、「バッファライト信号」という）を生成し、入力バッファ３３１に出力する。より具体的には、入力バッファ書き込み管理部３３４３は、画像処理モジュール３３に入力された入力データを一時記憶する（書き込む）ように指示するバッファ動作指示信号が入力された場合、前段の処理モジュールから入力されたデータ有効信号が有効であることを表している入力データ（画素データ）を、入力バッファ３３１に入力データを書き込むためのバッファライト信号を生成し、入力バッファ３３１に出力する。また、入力バッファ書き込み管理部３３４３は、入力バッファ３３１の動作を停止させるように指示するバッファ動作指示信号が入力された場合、入力バッファ３３１に入力データを書き込むためのバッファライト信号を入力バッファ３３１に出力しない。なお、入力バッファ書き込み管理部３３４３は、入力バッファ３３１の動作を停止させるように指示するバッファ動作指示信号が入力された場合、例えば、入力バッファ３３１をスリープ状態にして動作を停止させるための制御信号を生成し、入力バッファ３３１に出力してもよい。なお、図５においては、バッファライト信号のみを図示し、例えば、スリープ信号など、入力バッファ３３１の動作を停止させるための制御信号の図示は省略している。
【００９６】
入力バッファ読み出し管理部３３４４は、バッファスルー判定部３３４２から入力されたバッファ動作指示信号に応じて、入力バッファ３３１に対する画素データの読み出し動作を行うための制御信号（以下、「バッファリード信号」という）を生成し、入力バッファ３３１に出力する。より具体的には、入力バッファ読み出し管理部３３４４は、入力バッファ３３１に一時記憶している画素データを読み出すように指示するバッファ動作指示信号が入力された場合、入力バッファ３３１に一時記憶しているユニットラインの内、最も早く一時記憶されたユニットラインから順次読み出すためのバッファリード信号を生成し、入力バッファ３３１に出力する。また、入力バッファ読み出し管理部３３４４は、入力バッファ３３１に一時記憶している画素データの読み出しを行わないように指示するバッファ動作指示信号が入力された場合、入力バッファ３３１に一時記憶しているユニットラインのそれぞれの画素データを読み出すためのバッファリード信号を入力バッファ３３１に出力しない。
【００９７】
ここで、バッファスルー判定部３３４２が行うそれぞれの判定処理について説明する。図６は、本発明の第１の実施形態の画像処理装置１に備えた画像処理部３０における画像処理モジュール３３の処理手順を示したフローチャートである。図６には、第１の構成の画像処理モジュール３３に備えたバッファスルー判定部３３４２における入力バッファ３３１の制御方法の判定の処理手順を示している。
【００９８】
画像処理部３０がパイプライン処理を開始すると、バッファスルー判定部３３４２は、まず、後段の処理モジュールからデータリクエスト信号が入力されたか否か、つまり、後段の処理モジュールが処理画素データの出力を要求しているか否かを判定する（ステップＳ１００）。ステップＳ１００において、データリクエスト信号が入力されていない、つまり、後段の処理モジュールが処理画素データの出力を要求していないと判定した場合（ステップＳ１００の“ＮＯ”）、バッファスルー判定部３３４２は、ステップＳ１０５に進む。
【００９９】
一方、ステップＳ１００において、データリクエスト信号が入力された、つまり、後段の処理モジュールが処理画素データの出力を要求していると判定した場合（ステップＳ１００の“ＹＥＳ”）、バッファスルー判定部３３４２は、後段の処理モジュールのパイプライン処理が（一時）停止し、処理画素データを受け付けることができないパイプラインストール状態であるか否かを判定する（ステップＳ１０１）。このステップＳ１０１における判定は、後段の処理モジュールからパイプラインストール信号が入力されているか否かによって行うことができる。
【０１００】
ステップＳ１０１において、後段の処理モジュールがパイプラインストール状態ではないと判定した場合（ステップＳ１０１の“ＮＯ”）、バッファスルー判定部３３４２は、ステップＳ１０２において、データ量管理部３３４１から入力されたバッファ内データ量情報が表すユニットライン数が「０」であるか否かを判定する。
【０１０１】
ステップＳ１０２において、バッファ内データ量情報が表すユニットライン数が「０」ではない、つまり、バッファ内データ量情報が表すユニットライン数が「０」よりも大きい値である場合（ステップＳ１０２の“ＮＯ”）、バッファスルー判定部３３４２は、入力バッファ３３１に少なくとも１つのユニットライン分の画素データが一時記憶されていると判定する。そして、バッファスルー判定部３３４２は、入力バッファ書き込み管理部３３４３、入力バッファ読み出し管理部３３４４、およびセレクタ３３２のそれぞれを、画像処理モジュール３３に現在入力されている画素データを入力バッファ３３１に一旦記憶した後に読み出して演算部３３３に転送するように制御する（ステップＳ１０３）。より具体的には、バッファスルー判定部３３４２は、入力バッファ書き込み管理部３３４３に、画像処理モジュール３３に入力された入力データを一時記憶する（書き込む）ように指示するバッファ動作指示信号を出力し、入力バッファ読み出し管理部３３４４に、入力バッファ３３１に一時記憶している画素データを読み出すように指示するバッファ動作指示信号を出力する。また、バッファスルー判定部３３４２は、セレクタ３３２に、入力バッファ３３１から出力された画素データを演算部３３３に出力するように制御するバッファスルー信号を出力する。
【０１０２】
一方、ステップＳ１０２において、バッファ内データ量情報が表すユニットライン数が「０」である場合（ステップＳ１０２の“ＹＥＳ”）、バッファスルー判定部３３４２は、入力バッファ３３１に１つのユニットライン分の画素データも一時記憶されていない、つまり、入力バッファ３３１の記憶容量が全て空いている状態であると判定する。これは、画素データの流れが滞らずに、パイプライン処理がスムーズに行われている状態である。このため、バッファスルー判定部３３４２は、入力バッファ書き込み管理部３３４３、入力バッファ読み出し管理部３３４４、およびセレクタ３３２のそれぞれを、画像処理モジュール３３に現在入力されている画素データを直接、演算部３３３に転送するように制御する（ステップＳ１０４）。すなわち、バッファスルー判定部３３４２は、画像処理モジュール３３に現在入力されている画素データを、入力バッファ３３１をスルーして演算部３３３に転送するように制御する。より具体的には、バッファスルー判定部３３４２は、入力バッファ書き込み管理部３３４３に、入力バッファ３３１の動作を停止させるように指示するバッファ動作指示信号を出力し、入力バッファ読み出し管理部３３４４に、入力バッファ３３１の読み出しを行わないように指示するバッファ動作指示信号を出力する。また、バッファスルー判定部３３４２は、セレクタ３３２に、画像処理モジュール３３に現在入力されている入力データ（画素データ）をそのまま演算部３３３に出力するように制御するバッファスルー信号を出力する。
【０１０３】
一方、ステップＳ１０１において、後段の処理モジュールがパイプラインストール状態であると判定した場合（ステップＳ１０１の“ＹＥＳ”）、またはステップＳ１００において、後段の処理モジュールが処理画素データの出力を要求していないと判定した場合（ステップＳ１００の“ＮＯ”）、バッファスルー判定部３３４２は、ステップＳ１０５に進む。ステップＳ１０５において、バッファスルー判定部３３４２は、データ量管理部３３４１から入力されたバッファ内データ量情報が表すユニットライン数が、入力バッファ３３１に一時記憶することができるユニットラインの最大数よりも小さい値であるか否かを判定する。
【０１０４】
ステップＳ１０５において、バッファ内データ量情報が表すユニットライン数が入力バッファ３３１に一時記憶することができるユニットラインの最大数よりも小さい値である場合（ステップＳ１０５の“ＹＥＳ”）、バッファスルー判定部３３４２は、入力バッファ３３１に少なくとも１つのユニットライン分の画素データを一時記憶することができると判定する。そして、バッファスルー判定部３３４２は、入力バッファ書き込み管理部３３４３、入力バッファ読み出し管理部３３４４、およびセレクタ３３２のそれぞれを、画像処理モジュール３３に現在入力されている画素データを入力バッファ３３１に一旦記憶しておくように制御する（ステップＳ１０６）。より具体的には、バッファスルー判定部３３４２は、入力バッファ書き込み管理部３３４３に、画像処理モジュール３３に入力された入力データを一時記憶する（書き込む）ように指示するバッファ動作指示信号を出力し、入力バッファ読み出し管理部３３４４に、入力バッファ３３１に一時記憶している画素データの読み出しを行わないように指示するバッファ動作指示信号を出力する。また、バッファスルー判定部３３４２は、セレクタ３３２に、入力バッファ３３１から出力された画素データを演算部３３３に出力するように制御するバッファスルー信号を出力する。
【０１０５】
一方、ステップＳ１０５において、バッファ内データ量情報が表すユニットライン数が入力バッファ３３１に一時記憶することができるユニットラインの最大数よりも小さい値ではない、つまり、バッファ内データ量情報が表すユニットライン数が入力バッファ３３１に一時記憶することができるユニットラインの最大数と同じ値である場合（ステップＳ１０５の“ＮＯ”）、バッファスルー判定部３３４２は、入力バッファ３３１に入力データ（画素データ）を一時記憶することができないと判定する。そして、バッファスルー判定部３３４２は、入力バッファ書き込み管理部３３４３、入力バッファ読み出し管理部３３４４、およびセレクタ３３２のそれぞれが動作をしないように、つまり、入力バッファ３３１に一時記憶している画素データを保持するように制御する（ステップＳ１０７）。なお、このとき、画像処理モジュール３３では、データ量管理部３３４１が入力データの出力を要求しないことを表すデータリクエスト信号やパイプラインストール信号を前段の処理モジュールに出力している。
【０１０６】
このような処理によって、バッファスルー判定部３３４２は、入力バッファ３３１の制御方法を判定し、判定した結果に基づいて、入力バッファ書き込み管理部３３４３と、入力バッファ読み出し管理部３３４４と、セレクタ３３２とを制御する。なお、バッファスルー判定部３３４２における入力バッファ３３１の制御方法の判定を、画像処理部３０におけるパイプライン処理が終了するまで繰り返す。
【０１０７】
このような構成および処理によって第１の構成の画像処理モジュール３３に備えた制御部３３４は、入力バッファ３３１の記憶容量の空き状態に基づいて、前段の処理モジュールに対して入力データ（画素データ）を要求する。また、制御部３３４は、入力バッファ３３１の記憶容量の空き状態と、後段の処理モジュールの動作状態とに基づいて、前段の処理モジュールから画像処理モジュール３３に入力された入力データ（画素データ）の入力バッファ３３１への書き込み、入力バッファ３３１に一時記憶している画素データの読み出し、演算部３３３が画像処理の演算を行う画素データの選択（切り替え）とを行う。これにより、演算部３３３は、入力された画素データに対して画像処理の演算を行って生成した処理画素データを、後段の処理モジュールに出力する。なお、図５においては、画像処理の演算を行って生成したユニットラインに含まれるそれぞれの処理画素データが、有効な処理画素データであるか否かを表すデータ有効信号を、演算部３３３が生成して、後段の処理モジュールに出力する構成を示している。
【０１０８】
次に、図５に示した第１の構成の画像処理モジュール３３の動作について説明する。図７は、本発明の第１の実施形態の画像処理装置１に備えた画像処理部３０における画像処理モジュール３３の動作の一例を示したタイミングチャートである。図７には、図５に示した第１の構成の画像処理モジュール３３における画素データの受け渡しの一例を示している。
【０１０９】
図７には、画像処理モジュール３３に後段の処理モジュールから入力されるデータリクエスト信号およびパイプラインストール信号と、画像処理モジュール３３が後段の処理モジュールに出力する出力データと、を示している。また、図７には、画像処理モジュール３３が前段の処理モジュールに出力するデータリクエスト信号、パイプラインストール信号、およびデータ有効信号と、画像処理モジュール３３に前段の処理モジュールから入力されるデータ有効信号および入力データと、を示している。さらに、図７には、画像処理モジュール３３に備えた制御部３３４がセレクタ３３２に出力するバッファスルー信号と、画像処理モジュール３３に備えた制御部３３４内の入力バッファ書き込み管理部３３４３が入力バッファ３３１に出力するバッファライト信号と、画像処理モジュール３３に備えた制御部３３４内の入力バッファ読み出し管理部３３４４が入力バッファ３３１に出力するバッファリード信号と、を示している。さらに、図７には、画像処理モジュール３３に備えた制御部３３４内の信号であるバッファ内データ量情報と、画像処理モジュール３３に備えた演算部３３３に入力される画素データとを示している。
【０１１０】
なお、図７の説明においては、１つのユニットラインを１つの処理単位として画像処理を行うものとして説明する。また、画像処理モジュール３３の備えた入力バッファ３３１は、２つのユニットライン分の画素データを記憶することができる記憶容量をもっているものとして説明する。
【０１１１】
画像処理部３０がパイプライン処理を開始すると、画像処理部３０に備えたそれぞれの処理モジュールは、タイミングｔ１において、前段の処理モジュールに入力データの出力を要求するデータリクエスト信号を出力する。画像処理モジュール３３では、データ量管理部３３４１が、前段の処理モジュールにデータリクエスト信号を出力する。また、画像処理モジュール３３には、後段の処理モジュールからデータリクエスト信号が入力される。
【０１１２】
なお、上述したように、画像処理部３０がパイプライン処理を開始した最初の段階では、画像処理モジュール３３は、入力された画素データに対する画像処理をすぐに行うことができる状態であるため、制御部３３４は、入力バッファ３３１をスルーして演算部３３３に転送するように制御をする。しかし、以下の説明においては、バッファ内データ量情報の変化の説明を容易にするため、画像処理部３０がパイプライン処理を開始した最初の段階において、制御部３３４が、画像処理モジュール３３に入力された画素データを入力バッファ３３１に一旦記憶した後に読み出して演算部３３３に転送するように制御するものとして説明する。
【０１１３】
画像処理モジュール３３には、タイミングｔ１において出力したデータリクエスト信号に応じて前段の処理モジュールから入力データとデータ有効信号とが入力される。データ量管理部３３４１は、入力されたデータ有効信号に基づいて、バッファ内データ量情報を更新する。より具体的には、データ量管理部３３４１は、データ有効信号の“Ｈｉｇｈ”レベルによって、有効な画素データを含むユニットラインが入力されたと判定すると、タイミングｔ２において、バッファ内データ量情報が表すユニットライン数に「１」を加算する。これにより、バッファ内データ量情報＝「１」となる。
【０１１４】
また、バッファスルー判定部３３４２は、後段の処理モジュールから入力されたデータリクエスト信号の“Ｈｉｇｈ”レベルおよびパイプラインストール信号の“Ｈｉｇｈ”レベルに応じて、前段の処理モジュールから入力された入力データを、入力バッファ３３１に一旦記憶してから演算部３３３に転送するように指示する。これにより、入力バッファ書き込み管理部３３４３は、タイミングｔ２において、バッファライト信号を入力バッファ３３１に出力する。なお、バッファライト信号は、現在入力されているユニットラインのそれぞれの画素データを入力バッファ３３１に一時記憶（書き込む）ための複数のパルス信号が含まれた信号であるが、図７においては、“Ｈｉｇｈ”レベルの信号として示している。また、バッファスルー判定部３３４２は、タイミングｔ２において、入力バッファ３３１から出力された画素データを演算部３３３に出力するようにセレクタ３３２を制御するため、“Ｌｏｗ”レベルのバッファスルー信号を出力する。
【０１１５】
その後、現在入力されているユニットラインが入力バッファ３３１に一時記憶されると、入力バッファ読み出し管理部３３４４は、タイミングｔ３において、バッファリード信号を入力バッファ３３１に出力する。なお、バッファリード信号も、入力バッファ３３１に一時記憶されているユニットラインのそれぞれの画素データを読み出すための複数のパルス信号が含まれた信号であるが、図７においては、バッファライト信号と同様に、“Ｈｉｇｈ”レベルの信号として示している。これにより、演算部３３３には、入力バッファ３３１から読み出しされた画素データがセレクタ３３２を介して順次入力される。そして、演算部３３３は、入力された画素データに対して画像処理の演算を行い、演算部３３３におけるレイテンシだけ遅れた処理画素データを、出力データとして後段の処理モジュールに出力する。このとき、演算部３３３は、出力データに含まれる有効な画素データを表すデータ有効信号も後段の処理モジュールに出力する。
【０１１６】
その後、データ量管理部３３４１は、有効な画素データを含む次のユニットラインが入力されたと判定すると、タイミングｔ４において、バッファ内データ量情報を更新する。これにより、バッファ内データ量情報＝「２」となる。
【０１１７】
また、データ量管理部３３４１は、現在読み出しているユニットラインに含まれる全ての画素データを入力バッファ３３１から読み出したと判定すると、タイミングｔ５において、バッファ内データ量情報を更新する。より具体的には、データ量管理部３３４１は、バッファ内データ量情報が表すユニットライン数から「１」を減算する。これにより、バッファ内データ量情報＝「１」となる。
【０１１８】
以降、同様に、入力バッファ書き込み管理部３３４３による現在入力されているユニットラインのそれぞれの画素データの入力バッファ３３１への一時記憶（書き込み）および入力バッファ読み出し管理部３３４４による現在読み出しているユニットラインのそれぞれの画素データの入力バッファ３３１からの読み出しと、データ量管理部３３４１によるバッファ内データ量情報の更新とを繰り返す。これにより、演算部３３３は、入力バッファ３３１に一旦記憶してから転送された画素データに対して画像処理の演算を行った処理画素データとデータ有効信号とを後段の処理モジュールに出力する。
【０１１９】
その後、入力バッファ読み出し管理部３３４４によって入力バッファ３３１に一時記憶された全てのユニットラインのそれぞれの画素データの読み出しが終了すると、タイミングｔ６において、データ量管理部３３４１が更新したバッファ内データ量情報が「０」となる。これにより、バッファスルー判定部３３４２は、後段の処理モジュールから入力されているデータリクエスト信号の“Ｈｉｇｈ”レベルおよびパイプラインストール信号の“Ｈｉｇｈ”レベルと、バッファ内データ量情報＝「０」とに応じて、前段の処理モジュールから入力された入力データをそのまま画素データとして演算部３３３に出力するように制御し、バッファスルー信号を“Ｈｉｇｈ”レベルにする。
【０１２０】
これにより、その後のタイミングｔ７において、前段の処理モジュールから有効な画素データを含むユニットラインが入力されると、それぞれの画素データは、セレクタ３３２を介してそのまま、演算部３３３に順次入力される。そして、演算部３３３は、入力された画素データに対して画像処理の演算を行った処理画素データとデータ有効信号とを後段の処理モジュールに出力する。
【０１２１】
以降、同様に、前段の処理モジュールから現在入力されているユニットラインのそれぞれの画素データが演算部３３３に直接入力され、演算部３３３は、処理画素データとデータ有効信号との後段の処理モジュールへの出力を繰り返す。
【０１２２】
その後、タイミングｔ８において、後段の処理モジュールから入力されているパイプラインストール信号が、パイプラインストール状態であるため処理画素データを受け付けることができないことを表す“Ｌｏｗ”レベルになると、バッファスルー判定部３３４２は、前段の処理モジュールから現在入力されているユニットラインのそれぞれの画素データの演算部３３３への転送が終了した後に、バッファスルー信号を“Ｌｏｗ”レベルにする。また、バッファスルー判定部３３４２は、後段の処理モジュールから入力されたデータリクエスト信号の“Ｈｉｇｈ”レベルおよびパイプラインストール信号の“Ｌｏｗ”レベルに応じて、前段の処理モジュールから入力された入力データを、入力バッファ３３１に一旦記憶するように制御する。
【０１２３】
これにより、タイミングｔ９において前段の処理モジュールから入力された入力データは、入力バッファ書き込み管理部３３４３から入力バッファ３３１に出力されたバッファライト信号に応じて、入力バッファ３３１に一旦記憶される。このとき、データ量管理部３３４１は、バッファ内データ量情報を更新する。これにより、バッファ内データ量情報＝「１」となる。
【０１２４】
その後、タイミングｔ１０において、後段の処理モジュールから入力されているパイプラインストール信号が、パイプラインストール状態が解消されたため処理画素データを受け付けることができることを表す“Ｈｉｇｈ”レベルになる。すると、バッファスルー判定部３３４２は、後段の処理モジュールから入力されたデータリクエスト信号およびパイプラインストール信号の“Ｈｉｇｈ”レベルと、バッファ内データ量情報＝「１」とに応じて、前段の処理モジュールから入力された入力データを、入力バッファ３３１に一旦記憶してから演算部３３３に転送するように指示する。これにより、入力バッファ読み出し管理部３３４４は、前段の処理モジュールから現在入力されているユニットラインのそれぞれの画素データの入力バッファ３３１への一時記憶（書き込み）が終了した後に、タイミングｔ１１において、バッファリード信号を入力バッファ３３１に出力する。そして、入力バッファ３３１から読み出しされた画素データが演算部３３３に順次入力され、演算部３３３は、入力された画素データに対して画像処理の演算を行った処理画素データとデータ有効信号とを、演算部３３３におけるレイテンシだけ遅れて後段の処理モジュールに出力する。
【０１２５】
なお、図７では、現在入力されているユニットラインのそれぞれの画素データの入力バッファ３３１への一時記憶（書き込み）が終了した後のタイミングｔ１１においてバッファリード信号を出力している。これは、バッファスルー判定部３３４２が、入力された入力データを入力バッファ３３１に一旦記憶してから演算部３３３に転送するように指示したときには、まだ入力バッファ３３１に１つのユニットライン分の画素データが一時記憶されていない状態であるからである。従って、バッファスルー判定部３３４２が指示したときに、すでに入力バッファ３３１に１つ以上のユニットライン分の画素データが一時記憶されている場合には、入力バッファ読み出し管理部３３４４は、現在入力されているユニットラインのそれぞれの画素データの入力バッファ３３１への一時記憶（書き込み）の終了を待たずに、バッファリード信号を入力バッファ３３１に出力してもよい。
【０１２６】
以降、同様に、入力バッファ書き込み管理部３３４３による現在入力されているユニットラインのそれぞれの画素データの入力バッファ３３１への一時記憶（書き込み）および入力バッファ読み出し管理部３３４４による現在読み出しているユニットラインのそれぞれの画素データの入力バッファ３３１からの読み出しと、データ量管理部３３４１によるバッファ内データ量情報の更新とを繰り返す。これにより、演算部３３３は、入力バッファ３３１に一旦記憶してから転送された画素データに対して画像処理の演算を行った処理画素データとデータ有効信号とを後段の処理モジュールに出力する。
【０１２７】
その後、タイミングｔ１２において、後段の処理モジュールから入力されているパイプラインストール信号が“Ｌｏｗ”レベルになると、入力バッファ書き込み管理部３３４３による入力されたユニットラインのそれぞれの画素データの入力バッファ３３１への一時記憶（書き込み）のみを継続する。そして、データ量管理部３３４１は、バッファ内データ量情報＝「２」となった後のタイミングｔ１３において、前段の処理モジュールに出力するパイプラインストール信号を、パイプラインストール状態であるため処理画素データを受け付けることができないことを表す“Ｌｏｗ”レベルにする。これにより、現在のユニットラインのそれぞれの画素データの入力が終了した後に、前段の処理モジュールからの入力データの出力が一旦停止する。
【０１２８】
その後、タイミングｔ１４において、後段の処理モジュールから入力されているパイプラインストール信号が“Ｈｉｇｈ”レベルになると、バッファスルー判定部３３４２は、後段の処理モジュールから入力されたデータリクエスト信号およびパイプラインストール信号の“Ｈｉｇｈ”レベルと、バッファ内データ量情報＝「２」とに応じて、前段の処理モジュールから入力された入力データを、入力バッファ３３１に一旦記憶してから演算部３３３に転送するように指示する。これにより、入力バッファ読み出し管理部３３４４は、バッファリード信号を入力バッファ３３１に出力し、演算部３３３は、入力バッファ３３１から読み出しされた画素データに対して画像処理の演算を行った処理画素データとデータ有効信号とを、演算部３３３におけるレイテンシだけ遅れて後段の処理モジュールに出力する。
【０１２９】
また、入力バッファ読み出し管理部３３４４によって現在読み出しているユニットラインの全ての画素データの読み出しが終了すると、タイミングｔ１５において、データ量管理部３３４１が更新したバッファ内データ量情報が「１」となる。これにより、データ量管理部３３４１は、前段の処理モジュールに出力するパイプラインストール信号を、パイプラインストール状態が解消されたため処理画素データを受け付けることができることを表す“Ｈｉｇｈ”レベルにする。これにより、前段の処理モジュールは、タイミングｔ１６において、データリクエスト信号に応じた入力データとデータ有効信号との出力を再開する。
【０１３０】
以降、同様に、入力バッファ書き込み管理部３３４３による現在入力されているユニットラインのそれぞれの画素データの入力バッファ３３１への一時記憶（書き込み）および入力バッファ読み出し管理部３３４４による現在読み出しているユニットラインのそれぞれの画素データの入力バッファ３３１からの読み出しと、データ量管理部３３４１によるバッファ内データ量情報の更新とを繰り返す。そして、演算部３３３は、入力バッファ３３１から入力された画素データに対応する処理画素データとデータ有効信号とを後段の処理モジュールへの出力を繰り返す。
【０１３１】
その後、画像処理モジュール３３は、タイミングｔ１７において、後段の処理モジュールに対して、全てのユニットラインに対応する処理画素データとデータ有効信号との出力が終了すると、処理を終了する。そして、画像処理部３０に備えたそれぞれの処理モジュールによる処理が終了すると、画像処理部３０は、パイプライン処理を終了する。
【０１３２】
本第１の実施形態における第１の構成によれば、メモリ（ＤＲＡＭ２０）と、入力されたデータ（画素データまたは処理画素データ）に対して予め定めた処理を行う複数の処理モジュール（画像処理モジュール３３−１〜画像処理モジュール３３−３）が直列に接続されたパイプラインが構成され、それぞれの処理モジュール（画像処理モジュール３３）が処理を順次行うことによってパイプライン処理を行う画像処理部（画像処理部３０）とがデータバス（ＤＭＡバス１０）に接続された画像処理装置（画像処理装置１）であって、画像処理モジュール３３のそれぞれは、画素データまたは処理画素データを処理の単位ごとに一時的に記憶するデータバッファ（入力バッファ３３１）と、パイプライン処理における処理画素データの流れの状態と、入力バッファ３３１に記憶している画素データまたは処理画素データの状態とに基づいて、画素データまたは処理画素データを入力バッファ３３１に記憶するか否かを判定し、判定した結果に基づいて画素データまたは処理画素データを（演算部３３３に）転送する画像処理モジュール３３内の経路を選択すると共に、入力バッファ３３１の動作を制御する制御部（制御部３３４）と、を備える画像処理装置（画像処理装置１）が構成される。
【０１３３】
また、本第１の実施形態における第１の構成によれば、制御部３３４は、入力バッファ３３１が有する記憶容量に画素データまたは処理画素データが記憶されている状態で、入力バッファ３３１にさらに画素データまたは処理画素データを記憶することができる状態である場合、画素データまたは処理画素データを入力バッファ３３１に一旦記憶してから読み出して（演算部３３３に）転送する経路を選択すると共に、入力バッファ３３１を動作させ、パイプライン処理における画素データまたは処理画素データの流れが滞っている状態（パイプラインストール状態である状態）で、入力バッファ３３１にさらに画素データまたは処理画素データを記憶することができない状態である場合、画素データまたは処理画素データを入力バッファ３３１に一旦記憶してから読み出して（演算部３３３に）転送する経路を選択すると共に、入力バッファ３３１を、記憶している画素データまたは処理画素データを保持させるように動作させ、パイプライン処理における画素データまたは処理画素データの流れが滞っていない状態（パイプラインストール状態ではない状態）で、入力バッファ３３１が有する全ての記憶容量に画素データまたは処理画素データが記憶されていない状態である場合に、入力バッファ３３１に記憶せずにスルーして画素データまたは処理画素データを（演算部３３３に）転送する経路を選択すると共に、入力バッファ３３１の動作を停止させる画像処理装置１が構成される。
【０１３４】
また、本第１の実施形態における第１の構成によれば、制御部３３４は、パイプラインの構成における前段の画像処理モジュール３３に、制御部３３４自身を備えた画像処理モジュール３３の動作状態を表す状態通知信号を出力し、パイプラインの構成における後段の画像処理モジュール３３から入力された状態通知信号に基づいて、パイプライン処理における画素データまたは処理画素データの流れの状態を判定する画像処理装置１が構成される。
【０１３５】
また、本第１の実施形態における第１の構成によれば、制御部３３４は、パイプラインの構成における後段の複数の画像処理モジュール３３から入力された状態通知信号に基づいて、パイプライン処理における画素データまたは処理画素データの流れの状態を判定する画像処理装置１が構成される。
【０１３６】
また、本第１の実施形態における第１の構成によれば、状態通知信号は、前段の画像処理モジュール３３が処理を行った画素データまたは処理画素データを受け付けることができるか否かを表す信号であり、前段の画像処理モジュール３３が処理を行った処理画素データの出力を要求するデータリクエスト信号を含み、制御部３３４は、後段の画像処理モジュール３３から処理画素データの出力を要求するデータリクエスト信号が入力された場合に、パイプライン処理における画素データまたは処理画素データの流れが滞っていない状態（パイプラインストール状態ではない状態）であると判定する画像処理装置１が構成される。
【０１３７】
また、本第１の実施形態における第１の構成によれば、制御部３３４は、入力バッファ３３１に画素データまたは処理画素データを記憶することができる状態である場合に、処理画素データの出力を要求するデータリクエスト信号を、前段の画像処理モジュール３３に出力する画像処理装置１が構成される。
【０１３８】
また、本第１の実施形態における第１の構成によれば、画像処理モジュール３３は、入力バッファ３３１から読み出した画素データまたは処理画素データを（演算部３３３に）転送する経路、および入力バッファ３３１をスルーして画素データまたは処理画素データを（演算部３３３に）転送する経路のいずれか一方の経路を、画素データまたは処理画素データを（演算部３３３に）転送する経路として選択するセレクタ（セレクタ３３２）、をさらに備え、制御部３３４は、入力バッファ３３１に記憶する画素データまたは処理画素データの量を管理し、監視した画素データまたは処理画素データの量を表すデータ量情報（バッファ内データ量情報）を出力するデータ量管理部（データ量管理部３３４１）と、バッファ内データ量情報とパイプライン処理における処理画素データの流れの状態とに基づいて、入力バッファ３３１に行わせる動作を判定し、判定した結果に基づいて、入力バッファ３３１への画素データまたは処理画素データの書き込みおよび入力バッファ３３１からの画素データまたは処理画素データの読み出しの指示信号（バッファ動作指示信号）と、画素データまたは処理画素データを（演算部３３３に）転送する経路を選択するための制御信号（バッファスルー信号）とを出力するバッファスルー判定部（バッファスルー判定部３３４２）と、入力バッファ３３１への画素データまたは処理画素データの書き込みのバッファ動作指示信号に応じて、入力バッファ３３１への画素データまたは処理画素データの書き込みを制御するための制御信号であるバッファライト信号を生成するバッファ書き込み管理部（入力バッファ書き込み管理部３３４３）と、入力バッファ３３１からの画素データまたは処理画素データの読み出しのバッファ動作指示信号に応じて、入力バッファ３３１からの画素データまたは処理画素データの読み出しを制御するための制御信号であるバッファリード信号を生成するバッファ読み出し管理部（入力バッファ読み出し管理部３３４４）と、を備え、データ量管理部３３４１は、入力された画素データまたは処理画素データの数と、バッファリード信号とに基づいて画素データまたは処理画素データの量を管理し、バッファスルー判定部３３４２は、バッファ内データ量情報が、画素データまたは処理画素データの量が０よりも大きい値であることを表している場合、入力バッファ３３１への画素データまたは処理画素データの書き込みおよび入力バッファ３３１からの画素データまたは処理画素データの読み出しを行うことを指示するバッファ動作指示信号と、画素データまたは処理画素データを入力バッファ３３１に一旦記憶してから読み出して（演算部３３３に）転送する経路を選択するバッファスルー信号とを出力し、バッファ内データ量情報が、画素データまたは処理画素データの量が０であることを表している場合、入力バッファ３３１への画素データまたは処理画素データの書き込みおよび入力バッファ３３１からの画素データまたは処理画素データの読み出しを停止することを指示するバッファ動作指示信号と、入力バッファ３３１をスルーして画素データまたは処理画素データを（演算部３３３に）転送する経路を選択するバッファスルー信号とを出力し、セレクタ３３２は、バッファスルー信号に応じた経路を、画素データまたは処理画素データを（演算部３３３に）転送する経路として選択する画像処理装置１が構成される。
【０１３９】
また、本第１の実施形態における第１の構成によれば、メモリ（ＤＲＡＭ２０）と、入力されたデータ（画素データまたは処理画素データ）に対して予め定めた処理を行う複数の処理モジュール（画像処理モジュール３３−１〜画像処理モジュール３３−３）が直列に接続されたパイプラインが構成され、それぞれの処理モジュール（画像処理モジュール３３）が処理を順次行うことによってパイプライン処理を行う画像処理部（画像処理部３０）とがデータバス（ＤＭＡバス１０）に接続された画像処理装置（画像処理装置１）における画像処理方法であって、画像処理モジュール３３のそれぞれが、パイプライン処理における処理画素データの流れの状態と、画素データまたは処理画素データを処理の単位ごとに一時的に記憶するデータバッファ（入力バッファ３３１）に記憶している画素データまたは処理画素データの状態とに基づいて、画素データまたは処理画素データを入力バッファ３３１に記憶するか否かを判定し、判定した結果に基づいて画素データまたは処理画素データを（演算部３３３に）転送する画像処理モジュール３３内の経路を選択すると共に、入力バッファ３３１の動作を制御する制御ステップ、を含む画像処理方法が構成される。
【０１４０】
上記に述べたとおり、第１の構成の画像処理モジュール３３は、入力バッファ３３１の記憶容量の空き状態に基づいて、パイプライン構成において前段に接続された処理モジュールに対して入力データを要求し、前段の処理モジュールから入力された入力データ（画素データ）の入力バッファ３３１への一時記憶（書き込み）を制御する。また、第１の構成の画像処理モジュール３３は、入力バッファ３３１の記憶容量の空き状態と、パイプライン構成において後段に接続された処理モジュールの動作状態とに基づいて、入力バッファ３３１に一時記憶している画素データの読み出しと、演算部３３３が画像処理の演算を行う画素データの選択（切り替え）とを制御する。これにより、第１の構成の画像処理モジュール３３では、後段の処理モジュールがパイプラインストール状態ではなく、入力バッファ３３１の記憶容量が全て空いている状態である場合に、前段の処理モジュールから入力された入力データを、入力バッファ３３１をスルーして演算部３３３に転送するように制御することができる。そして、第１の構成の画像処理モジュール３３では、演算部３３３が、入力バッファ３３１をスルーして転送された前段の処理モジュールからの入力データに対して、画像処理の演算を直接行った処理画素データを、後段の処理モジュールに出力することができる。また、第１の構成の画像処理モジュール３３では、前段の処理モジュールから入力された入力データを、入力バッファ３３１をスルーして演算部３３３に転送することにより、このときの入力バッファ３３１の動作を停止させて、入力バッファ３３１の消費電力を削減することができる。このことにより、第１の構成の画像処理モジュール３３でパイプラインを構成した画像処理部３０では、従来の処理モジュールでパイプラインを構成したときのように必ずデータバッファへのデータの書き込みとデータバッファからのデータの読み出しとを行わなくても、所望の画像処理を行うことができ、パイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
【０１４１】
なお、図４および図７を用いて説明した第１の構成の画像処理モジュール３３の動作では、前段の処理モジュールから入力された入力データを、入力バッファ３３１に一旦記憶した後に読み出して演算部３３３に転送するように制御した後、再び入力バッファ３３１をスルーして演算部３３３に転送するように、積極的に制御することは行っていなかった。つまり、図４および図７に示した第１の構成の画像処理モジュール３３の動作では、入力バッファ３３１をスルーして入力データを演算部３３３に転送するように制御するのは、前段の処理モジュールおよび後段の処理モジュールの動作状態に依存していた。しかし、第１の構成の画像処理モジュール３３では、制御部３３４が、意図的に入力バッファ３３１をスルーして入力データを演算部３３３に転送する状態に制御することもできる。
【０１４２】
ここで、画像処理部３０に備えた画像処理モジュール３３が、意図的に入力バッファ３３１をスルーして入力データを演算部３３３に転送する状態に制御する動作について説明する。図８は、本発明の第１の実施形態の画像処理装置１に備えた画像処理部３０における画像処理モジュール３３の別の動作の一例を示したタイミングチャートである。図８には、図４に示した第１の構成の画像処理モジュール３３の動作の一例と同様に、画像処理部３０が、入力ＤＭＡモジュール３２、第１の構成の画像処理モジュール３３−１〜画像処理モジュール３３−３、および出力ＤＭＡモジュール３４が直列に接続（パイプライン接続）された構成によってパイプライン処理を行う場合において、画像処理モジュール３３−１から画像処理モジュール３３−２への処理画素データの受け渡しの一例を示している。
【０１４３】
図８には、図４に示した画像処理モジュール３３の動作の一例と同様に、画像処理モジュール３３−１および画像処理モジュール３３−２のそれぞれについて、入力データ、バッファライト、バッファリード、および出力データを示し、それぞれの画像処理モジュール３３が前段の処理モジュールに出力する状態通知信号として、データリクエスト信号を示している。
【０１４４】
なお、図８の説明においても、図４に示した画像処理モジュール３３の動作の一例と同様に、１つのユニットラインを１つの処理単位として画像処理を行うものとし、入力データ、バッファライト、バッファリード、および出力データのそれぞれに、何番目のユニットラインであるかを表す数字を示して説明する。また、図８の説明においても、図４に示した画像処理モジュール３３の動作の一例と同様に、画像処理部３０に備えたそれぞれの処理モジュールは、２つのユニットライン分の画素データを記憶することができる容量のデータバッファを備えているものとして説明する。そして、図８の説明においても、図４に示した画像処理モジュール３３の動作の一例と同様に、それぞれの画像処理モジュール３３に備えたそれぞれの構成要素を区別するため、それぞれの構成要素に付与した符号に続いて、画像処理モジュール３３に付与した「−」と、それに続く数字の部分を付与して表す。
【０１４５】
なお、図８においても、図４に示した画像処理モジュール３３の動作の一例と同様に、データリクエスト信号が“Ｈｉｇｈ”レベルの期間が、それぞれの画像処理モジュール３３が画素データを受け付けることができる状態であるリクエスト期間を表し、データリクエスト信号が“Ｌｏｗ”レベルの期間が、それぞれの画像処理モジュール３３が画素データを受け付けることができない状態であるリクエストネゲート期間を表している。
【０１４６】
画像処理部３０がパイプライン処理を開始すると、画像処理モジュール３３−１、画像処理モジュール３３−２、画像処理モジュール３３−３、および出力ＤＭＡモジュール３４のそれぞれは、入力データの出力を要求するデータリクエスト信号を、前段の処理モジュールに出力する。なお、図８に示した画像処理モジュール３３の動作のタイミングチャートにおいて、画像処理部３０がパイプライン処理を開始した最初の段階の動作は、図４に示した画像処理モジュール３３の動作の一例と同様である。従って、それぞれの処理モジュールの動作に関する詳細な説明は省略する。また、図８に示した画像処理モジュール３３の動作のタイミングチャートにおいて、画像処理モジュール３３−２のリクエストネゲート期間が終了するまでのそれぞれの処理モジュールの動作も、図４に示した画像処理モジュール３３の動作の一例と同様であるため、詳細な説明は省略する。
【０１４７】
続いて、画像処理モジュール３３−３が処理画素データを受け付けることができる状態になり、画像処理モジュール３３−２に出力しているデータリクエスト信号を“Ｈｉｇｈ”レベルにすることによって、処理画素データを受け付けることができる状態である（入力データの出力を要求する）ことを表した場合の動作について説明する。
【０１４８】
このとき、画像処理モジュール３３−２は、入力バッファ３３１−２に３つ目と４つ目のユニットラインに対応したそれぞれの処理画素データを一時記憶している状態（空いている記憶容量がない状態）である。このため、制御部３３４−２は、まず、入力バッファ３３１−２に記憶している３つ目のユニットラインに対応した処理画素データを入力バッファ３３１−２から読み出して演算部３３３−２に出力するように、入力バッファ３３１−２およびセレクタ３３２−２を制御する。これにより、入力バッファ３３１−２は、記憶している３つ目のユニットラインに対応した処理画素データをセレクタ３３２−２に出力し、セレクタ３３２−２は、入力バッファ３３１−２から入力された３つ目のユニットラインに対応した処理画素データを演算部３３３−２に出力する。そして、演算部３３３−２は、セレクタ３３２−２から出力された３つ目のユニットラインに対応した処理画素データに対して画像処理の演算を行い、演算部３３３−２におけるレイテンシだけ遅れた処理画素データを、後段の画像処理モジュール３３−３に出力する。
【０１４９】
これにより、入力バッファ３３１−２は、図４に示した画像処理モジュール３３の動作の一例と同様に、３つ目のユニットラインに対応した処理画素データを出力することによって、１つのユニットライン分の記憶容量が空いている（残っている）状態になり、画像処理モジュール３３−２は、画像処理モジュール３３−１からの処理画素データを受け付けることができる状態になる。このとき、図４に示した画像処理モジュール３３の動作の一例では、制御部３３４−２が、画像処理モジュール３３−２が処理画素データを受け付けることができる状態になったことを表すために、画像処理モジュール３３−１に出力しているデータリクエスト信号を“Ｈｉｇｈ”レベルにしていた。しかし、図８に示した画像処理モジュール３３の動作の一例では、制御部３３４は、データリクエスト信号を“Ｈｉｇｈ”レベルにせず、“Ｌｏｗ”レベルの状態を維持する。つまり、画像処理モジュール３３−２は、画像処理モジュール３３−１からの処理画素データを受け付けることができない状態を意図的に維持するために、データリクエスト信号の“Ｈｉｇｈ”レベルへの変更を保留する。これは、画像処理モジュール３３−２が、入力バッファ３３１−２に一時記憶している４つ目のユニットラインに対応した処理画素データを出力することによって、入力バッファ３３１−２に一時記憶しているユニットラインのそれぞれの画素データを全て読み出し、入力バッファ３３１−２の記憶容量が全て空いている状態にするためである。
【０１５０】
そして、制御部３３４−２は、入力バッファ３３１−２に記憶している４つ目のユニットラインに対応した処理画素データを入力バッファ３３１−２から読み出して演算部３３３−２に出力するように、入力バッファ３３１−２およびセレクタ３３２−２を制御する。これにより、演算部３３３−２に、入力バッファ３３１−２に記憶している４つ目のユニットラインに対応した処理画素データが、セレクタ３３２−２を介して入力される。そして、演算部３３３−２は、セレクタ３３２−２を介して入力された４つ目のユニットラインに対応した処理画素データに対して画像処理の演算を行って生成した処理画素データを、画像処理モジュール３３−３に出力する。
【０１５１】
入力バッファ３３１−２は、４つ目のユニットラインに対応した処理画素データを出力することにより、全ての記憶容量が空いている状態になる。つまり、画像処理モジュール３３−２は、画像処理モジュール３３−１からの処理画素データを受け付け、受け付けた処理画素データを入力バッファ３３１−２に一時記憶せずに演算部３３３−２に直接転送することができる状態になる。ここで、制御部３３４−２は、画像処理モジュール３３−２が処理画素データを受け付けることができる状態になったことを表すために、画像処理モジュール３３−１に出力しているデータリクエスト信号を“Ｈｉｇｈ”レベルにする。
【０１５２】
また、制御部３３４−２は、画像処理モジュール３３−１から以降に入力されたユニットラインのそれぞれの処理画素データを、そのまま演算部３３３−２に出力するようにセレクタ３３２−２を制御する。さらに、制御部３３４−２は、入力バッファ３３１−２の動作を停止するように制御して、入力バッファ３３１−２の消費電力を削減する。
【０１５３】
画像処理モジュール３３−１では、後段の画像処理モジュール３３−２から入力されたデータリクエスト信号が“Ｈｉｇｈ”レベルになり、画像処理モジュール３３−２が処理画素データを受け付けることができる状態になったことが通知されると、制御部３３４−１は、画像処理モジュール３３−２に備えた制御部３３４−２と同様に、５つ目と６つ目のユニットラインに対応した処理画素データを画像処理モジュール３３−２に出力する。より具体的には、制御部３３４−１が、入力バッファ３３１−１に記憶された５つ目と６つ目のユニットラインのそれぞれの画素データを順次読み出して演算部３３３−１に出力するように、入力バッファ３３１−２およびセレクタ３３２−２を制御する。これにより、演算部３３３−１は、セレクタ３３２−１を介して順次入力された５つ目と６つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行い、演算部３３３−１におけるレイテンシだけ遅れた処理画素データを、後段の画像処理モジュール３３−２に出力する。このとき、制御部３３４−１も、画像処理モジュール３３−２に備えた制御部３３４−２と同様に、５つ目のユニットラインのそれぞれの画素データの読み出した後にはデータリクエスト信号を“Ｈｉｇｈ”レベルにせず、６つ目のユニットラインのそれぞれの画素データの読み出しが終了した後、つまり、入力バッファ３３１−１の全ての記憶容量が空いている状態になったときに、データリクエスト信号を“Ｈｉｇｈ”レベルにする。つまり、画像処理モジュール３３−１も、入力ＤＭＡモジュール３２からの画素データを受け付けることができる状態になったとき、すぐに画素データを受け付けることができる状態になったことを通知するのではなく、受け付け画素データを入力バッファ３３１−１に一時記憶せずに演算部３３３−１に直接転送することができる状態になったときに、画素データを受け付けることができる状態になったことを通知する。
【０１５４】
また、制御部３３４−１は、画像処理モジュール３３−２に備えた制御部３３４−２と同様に、入力ＤＭＡモジュール３２から以降に入力されたユニットラインのそれぞれの画素データを、そのまま演算部３３３−１に出力するようにセレクタ３３２−１を制御する。さらに、制御部３３４−１は、画像処理モジュール３３−２に備えた制御部３３４−２と同様に、入力バッファ３３１−１の動作を停止するように制御して、入力バッファ３３１−１の消費電力を削減する。
【０１５５】
入力ＤＭＡモジュール３２は、後段の画像処理モジュール３３−１から入力されたデータリクエスト信号によって、画像処理モジュール３３−２が処理画素データを受け付けることができる状態になったことが通知されると、ＤＲＡＭ２０に記憶されている７つ目のユニットラインから、画素データの読み出しを再開し、読み出した画素データを画像処理モジュール３３−１に出力する。なお、入力ＤＭＡモジュール３２が、ＤＲＡＭ２０に記憶されている画素データの読み出しを保留する際に、７つ目と８つ目のユニットラインのそれぞれの画素データをデータバッファに記憶している場合には、データバッファに記憶している７つ目および８つ目のユニットラインのそれぞれの画素データを画像処理モジュール３３−１に出力した後に、９つ目のユニットラインから、画素データの読み出しを再開してもよい。
【０１５６】
このようにして、画像処理部３０では、パイプライン接続された後段の処理モジュールから入力されたデータリクエスト信号が、再び画素データを受け付けることができる状態に変わった場合、それぞれの処理モジュールは、後段の処理モジュールへの出力データの出力を再開する。このとき、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ３３１に記憶している画素データから順次、後段の処理モジュールに出力する。そして、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ３３１の記憶容量が全て空いている状態になった後に、処理モジュール自身が画素データを受け付けることができる状態になったことを通知する。そして、それぞれの処理モジュールは、入力された画素データを、処理モジュール自身に備えた入力バッファ３３１に一時記憶せずに後段の処理モジュールに順次出力する。また、それぞれの処理モジュールは、処理モジュール自身に備えた入力バッファ３３１の動作を停止するように制御して、入力バッファ３３１の消費電力を削減する。
【０１５７】
以降、上述したような動作を繰り返すことによって、画像処理部３０では、パイプライン接続されたそれぞれの処理モジュールによるパイプライン処理を、それぞれのブロック画像データに含まれる画素データに対してユニットラインごとに順次を行うことによって、それぞれのブロック画像データに対する一連の画像処理を行う。
【０１５８】
なお、図８に示した第１の構成の画像処理モジュール３３の動作のタイミングチャートの一例では、それぞれの処理モジュールが、処理モジュール自身に備えた入力バッファ３３１の記憶容量が全て空いている状態になった後に画素データを受け付けることができる状態になったことを通知する場合について説明した。そして、それぞれの処理モジュールに入力された画素データを入力バッファ３３１に一時記憶せずに後段の処理モジュールに順次出力し、入力バッファ３３１の動作を停止して消費電力を削減する合について説明した。しかし、それぞれの処理モジュール自身に備えた入力バッファ３３１が、多くのユニットライン分の画素データを記憶することができる記憶容量をもっている場合、それぞれの処理モジュール自身に備えた入力バッファ３３１の記憶容量が全て空いている状態なってから画素データを受け付けることができる状態になったことを通知すると、パイプライン処理が完了するまでに多くの時間を要してしまうことも考えられる。従って、それぞれの処理モジュールに備えた制御部３３４は、入力バッファ３３１に一時記憶しているユニットラインの数に基づいて、入力された画素データを入力バッファ３３１に一旦記憶した後に読み出して演算部３３３に転送するように制御するか、入力された画素データを入力バッファ３３１に一時記憶せずにそのまま演算部３３３に転送するように制御するかを判定するようにしてもよい。
【０１５９】
より具体的には、後段の処理モジュールが画素データを受け付けることができる状態になったことを通知してきたときに、入力バッファ３３１が一時記憶することができるユニットライン数に基づいて予め定めたユニットライン数の閾値と、バッファ内データ量情報が表すユニットライン数と比較し、この比較結果によって入力バッファ３３１の動作を切り替えてもよい。例えば、入力バッファ３３１が１０個のユニットライン分の画素データを記憶することができる記憶容量をもっており、予め定めたユニットライン数の閾値が「５」である場合を考える。この場合、後段の処理モジュールが画素データを受け付けることができる状態になったことを通知してきたときのバッファ内データ量情報が表すユニットライン数が「５」以下である場合には、以降に入力された画素データを入力バッファ３３１に一時記憶せずにそのまま演算部３３３に転送するように制御する、つまり、図８に示した画像処理モジュール３３の動作の一例と同様に制御する。一方、後段の処理モジュールが画素データを受け付けることができる状態になったことを通知してきたときのバッファ内データ量情報が表すユニットライン数が「５」よりも大きい場合には、以降に入力された画素データを入力バッファ３３１に一旦記憶した後に読み出して演算部３３３に転送するように制御する、つまり、図４に示した画像処理モジュール３３の動作の一例と同様に制御する。これにより、画像処理部３０では、それぞれの処理モジュールに備えた入力バッファ３３１の消費電力の削減を優先する制御と、パイプライン処理に要する処理時間の短縮を優先する制御とを切り替えることができる。
【０１６０】
本第１の実施形態における第１の構成によれば、制御部（制御部３３４）は、データバッファ（入力バッファ３３１）が有する全ての記憶容量にデータが記憶されていない状態になるまで、画素データまたは処理画素データの出力を要求するデータリクエスト信号の前段の処理モジュール（画像処理モジュール３３）への出力を保留し、入力バッファ３３１が有する全ての記憶容量に画素データまたは処理画素データが記憶されていない状態になった後に、前段の画像処理モジュール３３にデータリクエスト信号を出力し、入力バッファ３３１をスルーして画素データまたは処理画素データを転送する経路を選択すると共に、入力バッファ３３１の動作を停止させる画像処理装置（画像処理装置１）が構成される。
【０１６１】
上記に述べたとおり、第１の構成の画像処理モジュール３３は、入力バッファ３３１の記憶容量の空き状態に基づいて、パイプライン構成において前段に接続された処理モジュールに対して入力データを要求するタイミングを制御することによって、意図的に入力バッファ３３１をスルーして入力データを演算部３３３に転送する状態に制御する。これにより、第１の構成の画像処理モジュール３３では、このときの入力バッファ３３１の動作を停止させて、入力バッファ３３１の消費電力を削減することができる。このことにより、第１の構成の画像処理モジュール３３でパイプラインを構成した画像処理部３０では、所望の画像処理を行うときのパイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
【０１６２】
なお、第１の構成の画像処理モジュール３３では、前段の処理モジュールから入力された入力データの入力バッファ３３１への一時記憶（書き込み）を制御する構成を示した。つまり、第１の構成の画像処理モジュール３３では、画像処理の演算を行う際の入力側にデータバッファ（入力バッファ３３１）を備えている処理モジュールの構成を示した。しかし、パイプライン処理を行うそれぞれの処理モジュールの構成は、上述したような入力側にデータバッファを備えた構成に限定されるものではなく、画像処理の演算を行う際の出力側にデータバッファを備える構成であってもよい。
【０１６３】
＜第２の構成＞
次に、画像処理部３０に備えたそれぞれの処理モジュールの第２の構成について説明する。図９は、本発明の第１の実施形態の画像処理装置１に備えた画像処理部３０における画像処理モジュールの概略構成を示したブロック図である。図９には、出力側にデータバッファを備えた第２の構成の画像処理モジュール（以下、「画像処理モジュール４３」という）における基本的な構成を示している。図９に示した第２の構成の画像処理モジュール４３は、演算部４３３と、出力バッファ４３１と、セレクタ４３２と、制御部４３４と、を備えている。画像処理モジュール４３も、第１の構成の画像処理モジュール３３と同様に、画像処理部３０においてパイプライン処理を行う構成要素である。
【０１６４】
演算部４３３は、第１の構成の画像処理モジュール３３に備えた演算部３３３と同様に、入力された画素データに対して予め定めた種々のデジタル的な画像処理の演算を行う。演算部４３３は、画像処理の演算を行って生成した処理画素データを、出力データとして出力バッファ４３１およびセレクタ４３２に出力する
【０１６５】
出力バッファ４３１は、演算部４３３から入力された処理画素データを、一時的に記憶するデータバッファである。出力バッファ４３１は、第１の構成の画像処理モジュール３３に備えた入力バッファ３３１と同様に、例えば、ＳＲＡＭなどのメモリで構成される。出力バッファ４３１は、演算部４３３から入力された予め定めた数のユニットライン分の処理画素データを、出力データとして記憶することができる記憶容量をもっている。出力バッファ４３１は、制御部４３４から入力された制御信号に応じて、入力された処理画素データを一時記憶する。
【０１６６】
なお、出力バッファ４３１も、第１の構成の画像処理モジュール３３に備えた入力バッファ３３１と同様に、演算部４３３から入力された予め定めた数のユニットライン分の処理画素データ（出力データ）を記憶する記憶容量の組を２つ備え、一方の記憶容量の組への処理画素データの書き込みと、他方の記憶容量の組からの処理画素データの読み出しとを交互に切り替える、いわゆる、ダブルバッファで構成されていてもよい。
【０１６７】
セレクタ４３２は、出力データとして画像処理モジュール４３の外部に出力する処理画素データを選択する選択部である。セレクタ４３２は、第１の構成の画像処理モジュール３３に備えたセレクタ３３２と同様の構成である。セレクタ４３２は、制御部４３４から入力された制御信号に応じて、出力バッファ４３１に一時記憶された出力データ（処理画素データ）、または演算部４３３から現在出力されている出力データ（処理画素データ）のいずれか一方の出力データ（処理画素データ）を、画像処理モジュール４３の外部に出力する。つまり、セレクタ４３２は、演算部４３３から出力されて出力バッファ４３１に一時記憶された処理画素データ、または演算部４３３から現在出力されているそのままの処理画素データのいずれか一方の処理画素データを、接続切り替え部３１を介して他の画像処理モジュール４３または出力ＤＭＡモジュール３４に出力する。
【０１６８】
制御部４３４は、第１の構成の画像処理モジュール３３に備えた制御部３３４と同様に、画像処理モジュール４３の動作状態の通知と、画像処理モジュール４３に備えたそれぞれの構成要素の制御とを行う。制御部４３４は、画像処理モジュール４３の動作状態を表す状態通知信号を、前段の処理モジュールに出力する。また、制御部４３４は、出力バッファ４３１に空いている記憶容量があるか否かによって、出力バッファ４３１の動作を制御する。
【０１６９】
より具体的には、出力バッファ４３１に空いている記憶容量がある場合、出力バッファ４３１は、演算部４３３から出力された処理画素データを一時記憶することができる状態である。この場合、制御部４３４は、前段の処理モジュールからの入力データを受け付けることができる状態であることを表す状態通知信号として、画素データの出力を要求する信号（データリクエスト信号）を、前段の処理モジュールに出力する。そして、制御部４３４は、出力した画素データの出力を要求する状態通知信号に応じて前段の処理モジュールから入力された入力データに対して演算部４３３が画像処理の演算を行って生成した処理画素データを一時記憶する（書き込む）ように、出力バッファ４３１を制御する。
【０１７０】
また、出力バッファ４３１に空いている記憶容量がない場合、出力バッファ４３１は、演算部４３３から出力された処理画素データを一時記憶することができない状態である。この場合、制御部４３４は、前段の処理モジュールからの入力データを受け付けることができない状態であることを表す状態通知信号として、画素データの出力を要求しないことを表す信号（画素データの出力を要求しないことを表す論理レベルのデータリクエスト信号）を、前段の処理モジュールに出力する。なお、このときの状態通知信号は、第１の構成の画像処理モジュール３３に備えた制御部３３４と同様に、パイプラインストール信号であってもよい。
【０１７１】
また、制御部４３４は、出力バッファ４３１に一時記憶されている処理画素データの読み出しの動作と、セレクタ４３２が画像処理モジュール４３の外部に出力する処理画素データ（出力データ）の選択（切り替え）とを制御する。制御部４３４における出力バッファ４３１からの処理画素データの読み出し動作の制御やセレクタ４３２の切り替えの制御は、第１の構成の画像処理モジュール３３に備えた制御部３３４と同様に、出力バッファ４３１に空いている記憶容量があるか否かの判定結果、および後段の処理モジュールから入力された状態通知信号に基づいて行う。なお、後段の処理モジュールから入力される状態通知信号は、セレクタ４３２によって選択して出力した処理画素データの出力先である後段の処理モジュールに備えた制御部４３４が出力する状態通知信号であり、上述したように、後段の処理モジュールが処理画素データを受け付けることができる状態であるか否かを表す信号、つまり、処理画素データの出力を要求するか否かを表す信号などが含まれている。
【０１７２】
そして、制御部４３４は、後段の処理モジュールから入力された状態通知信号が、処理画素データを受け付けることができる状態であることを表している場合、出力バッファ４３１の記憶容量が空いているか否かによってセレクタ４３２を制御し、出力バッファ４３１に一時記憶された処理画素データ、または演算部４３３から現在出力されている処理画素データのいずれか一方の処理画素データを、出力データとして画像処理モジュール４３の外部に出力させる。つまり、制御部４３４も、第１の構成の画像処理モジュール３３に備えた制御部３３４と同様に、処理画素データの流れが滞らずにパイプライン処理がスムーズに行われているか否かによって、出力バッファ４３１の動作の制御やセレクタ４３２の切り替えの制御を行う。
【０１７３】
より具体的には、出力バッファ４３１の記憶容量が全て空いていない場合、出力バッファ４３１には、少なくとも１つのユニットライン分の処理画素データが一時記憶されている状態である。この場合、制御部４３４は、一時記憶された処理画素データを読み出すように出力バッファ４３１を制御すると共に、出力バッファ４３１から出力された処理画素データを外部に出力するようにセレクタ４３２を制御する。これにより、セレクタ４３２は、出力バッファ４３１に一時記憶された後に読み出された処理画素データを、後段の画像処理モジュール４３に出力する。このとき、制御部４３４は、出力した画素データの出力を要求する状態通知信号に応じた入力データが前段の処理モジュールから入力された場合には、入力された入力データに対して演算部４３３が画像処理の演算を行って生成した処理画素データを空いている記憶容量に一時記憶する（書き込む）ように、出力バッファ４３１を制御する。
【０１７４】
また、出力バッファ４３１の記憶容量が全て空いている場合、出力バッファ４３１には、１つのユニットライン分の処理画素データも一時記憶されていない状態である。この場合、制御部４３４は、動作を停止するように出力バッファ４３１を制御する。これにより、画像処理モジュール４３では、出力バッファ４３１の消費電力を削減することができる。そして、制御部４３４は、演算部４３３から現在出力されている処理画素データをそのまま、つまり、現在入力されている画素データに対して演算部４３３が画像処理の演算を行って生成した処理画素データを出力バッファ４３１に一時記憶せずに直接、外部に出力するようにセレクタ４３２を制御する。これにより、演算部４３３は、画像処理モジュール４３に現在入力されている入力データ（画素データ）に対して画像処理の演算を行って生成した処理画素データを、後段の画像処理モジュール４３に出力する。
【０１７５】
一方、制御部４３４は、後段の処理モジュールから入力された状態通知信号が、処理画素データを受け付けることができない状態であることを表しており、かつ、出力バッファ４３１の記憶容量が空いている場合、制御部４３４は、画像処理モジュール４３に入力された入力データに対して演算部４３３が画像処理の演算を行って生成した処理画素データを空いている記憶容量に一時記憶する（書き込む）ように、出力バッファ４３１を制御する。
【０１７６】
なお、後段の処理モジュールから入力された状態通知信号が、処理画素データを受け付けることができない状態であることを表しており、かつ、出力バッファ４３１の記憶容量が空いていない場合は、制御部４３４は、入力データを受け付けることができない状態であることを表す状態通知信号を前段の処理モジュールに出力しているため、前段の処理モジュールからは入力データが入力されない。このため、制御部４３４は、出力バッファ４３１の動作を制御しない。
【０１７７】
このような構成によって画像処理部３０に備えたそれぞれの第２の構成の処理モジュールは、出力バッファ４３１の記憶容量の空き状態に基づいて、前段の処理モジュールからの入力データの受け付けと、外部に出力する処理画素データの選択（切り替え）とを行う。
【０１７８】
次に、画像処理部３０に備えたそれぞれの第２の構成の処理モジュールの動作について説明する。図１０は、本発明の第１の実施形態の画像処理装置１に備えた画像処理部３０における画像処理モジュール４３の動作の一例を示したタイミングチャートである。図１０には、図４に示した第１の構成の画像処理モジュール３３の動作の一例と同様に、画像処理部３０が、入力ＤＭＡモジュール３２、第２の構成の画像処理モジュール４３−１〜画像処理モジュール４３−３、および出力ＤＭＡモジュール３４が直列に接続（パイプライン接続）された構成によってパイプライン処理を行う場合において、画像処理モジュール４３−１から画像処理モジュール４３−２への処理画素データの受け渡しの一例を示している。
【０１７９】
図１０には、画像処理モジュール４３−１および画像処理モジュール４３−２のそれぞれについて、入力される入力データ、演算部４３３が画像処理の演算を行って出力する処理画素データ、出力バッファ４３１への処理画素データの書き込みを表すバッファライト、出力バッファ４３１からの処理画素データの読み出しを表すバッファリード、および出力する出力データを示している。また、図１０には、画像処理モジュール４３−１および画像処理モジュール４３−２のそれぞれが前段の処理モジュールに出力する状態通知信号として、入力データの出力を要求するデータリクエスト信号を示している。なお、図１０には、画像処理モジュール４３−２の後段に接続された画像処理モジュール４３−３が状態通知信号として出力するデータリクエスト信号も示している。
【０１８０】
なお、図１０の説明においても、図４に示した第１の構成の画像処理モジュール３３の動作の一例と同様に、１つのユニットラインを１つの処理単位として画像処理を行うものとし、入力データ、処理画素データ、バッファライト、バッファリード、および出力データのそれぞれに、何番目のユニットラインであるかを表す数字を示して説明する。また、図１０の説明においても、図４に示した第１の構成の画像処理モジュール３３の動作の一例と同様に、画像処理部３０に備えたそれぞれの処理モジュールは、２つのユニットライン分の画素データを記憶することができる容量のデータバッファを備えているものとして説明する。そして、図１０の説明においても、図４に示した第１の構成の画像処理モジュール３３の動作の一例と同様に、それぞれの画像処理モジュール４３に備えたそれぞれの構成要素を区別するため、それぞれの構成要素に付与した符号に続いて、画像処理モジュール４３に付与した「−」と、それに続く数字の部分を付与して表す。例えば、画像処理モジュール４３−１に備えた制御部４３４を「制御部４３４−１」とし、画像処理モジュール４３−２に備えた制御部４３４を「制御部４３４−２」として表す。
【０１８１】
画像処理部３０がパイプライン処理を開始すると、画像処理モジュール４３−１、画像処理モジュール４３−２、画像処理モジュール４３−３、および出力ＤＭＡモジュール３４のそれぞれは、入力データの出力を要求するデータリクエスト信号を、前段の処理モジュールに出力する。これは、図４に示した第１の構成の画像処理モジュール３３の動作の一例と同様に、画像処理部３０がパイプライン処理を開始した最初の段階では、それぞれの画像処理モジュール４３に備えた出力バッファ４３１の記憶容量は全て空いているため、処理画素データを一時記憶することができる状態であり、入力データを受け付けることができる状態であるからである。すなわち、画像処理モジュール４３−１に備えた演算部４３３−１、および画像処理モジュール４３−２に備えた演算部４３３−２は、入力された画素データに対する画像処理をすぐに行うことができる状態であるからである。また、画像処理部３０がパイプライン処理を開始した最初の段階では、出力ＤＭＡモジュール３４も、図４に示した第１の構成の画像処理モジュール３３の動作の一例と同様に、入力された入力データ（処理画素データ）を、すぐにＤＭＡバス１０を介してＤＲＡＭ２０に出力することができる状態である。
【０１８２】
なお、図１０においても、図４に示した第１の構成の画像処理モジュール３３の動作の一例と同様に、データリクエスト信号が“Ｈｉｇｈ”レベルの期間が、それぞれの処理モジュールが画素データを受け付けることができる状態であるリクエスト期間を表し、データリクエスト信号が“Ｌｏｗ”レベルの期間が、それぞれの処理モジュールが画素データを受け付けることができない状態であるリクエストネゲート期間を表している。
【０１８３】
入力ＤＭＡモジュール３２は、後段の画像処理モジュール４３−１からデータリクエスト信号が入力されると、まず、ＤＲＡＭ２０に記憶されている１つ目のユニットラインのそれぞれの画素データを、ＤＭＡバス１０を介してユニットラインごとに順次読み出す。そして、入力ＤＭＡモジュール３２は、読み出した画素データを画像処理モジュール４３−１に出力する。このとき、入力ＤＭＡモジュール３２の後段に接続された画像処理モジュール４３−１は、“Ｈｉｇｈ”レベルのデータリクエスト信号を出力することによって、画素データを受け付けることができる状態であることを示している。このため、入力ＤＭＡモジュール３２は、読み出した画素データをデータバッファに一時記憶せずに、そのまま画像処理モジュール４３−１に出力する。このとき、入力ＤＭＡモジュール３２では、データバッファの動作を停止して、データバッファの消費電力を削減する。その後、入力ＤＭＡモジュール３２は、ＤＲＡＭ２０に記憶されている２つ目のユニットラインのそれぞれの画素データを読み出して、画像処理モジュール４３−１への出力を開始する。
【０１８４】
また、画像処理モジュール４３−１は、後段の画像処理モジュール４３−２からデータリクエスト信号が入力されると、入力ＤＭＡモジュール３２から入力された１つ目のユニットラインのそれぞれの画素データに対して画像処理を行う。このとき、画像処理モジュール４３−１は、上述したように、出力バッファ４３１−１の記憶容量が全て空いている状態であり、演算部４３３−１が入力された画素データに対する画像処理をすぐに行うことができる状態である。また、このとき、画像処理モジュール４３−１の後段に接続された画像処理モジュール４３−２は、“Ｈｉｇｈ”レベルのデータリクエスト信号を出力することによって、処理画素データを受け付けることができる状態であることを示している。このため、制御部４３４−１は、前段の入力ＤＭＡモジュール３２から現在入力されている１つ目のユニットラインのそれぞれの画素データに対して演算部４３３−１が画像処理の演算を行って生成した処理画素データを、そのまま出力データとして外部に出力するようにセレクタ４３２−１を制御する。また、制御部４３４−１は、出力バッファ４３１−１の動作を停止するように制御して、出力バッファ４３１−１の消費電力を削減する。これにより、セレクタ４３２−１は、演算部４３３−１から出力された処理画素データをそのまま、出力データとして後段の画像処理モジュール４３−２に出力する。なお、画像処理モジュール４３−１から出力される出力データ（処理画素データ）は、演算部４３３−１が画像処理の演算を行うことによって発生する遅延時間（レイテンシ）だけ遅れて出力される。その後、画像処理モジュール４３−１は、入力ＤＭＡモジュール３２から入力された２つ目のユニットラインのそれぞれの画素データに対する画像処理を開始する。
【０１８５】
また、画像処理モジュール４３−２は、後段の画像処理モジュール４３−３からデータリクエスト信号が入力されると、画像処理モジュール４３−１から入力された１つ目のユニットラインに対応した処理画素データに対して画像処理を行う。このとき、画像処理モジュール４３−２も、上述したように、出力バッファ４３１−２の記憶容量が全て空いている状態であり、演算部４３３−２が入力された処理画素データに対する画像処理をすぐに行うことができる状態である。また、このとき、画像処理モジュール４３−２の後段に接続された画像処理モジュール４３−３も、“Ｈｉｇｈ”レベルのデータリクエスト信号を出力することによって、処理画素データを受け付けることができる状態であることを示している。このため、制御部４３４−２も、前段の画像処理モジュール４３−１から現在入力されている１つ目のユニットラインに対応する処理画素データに対して演算部４３３−２が画像処理の演算を行って生成した処理画素データを、そのまま出力データとして外部に出力するようにセレクタ４３２−２を制御する。また、制御部４３４−２は、出力バッファ４３１−２の動作を停止するように制御して、出力バッファ４３１−２の消費電力を削減する。これにより、セレクタ４３２−２は、演算部４３３−２におけるレイテンシだけ遅れて演算部４３３−２から出力された処理画素データをそのまま、出力データとして後段の画像処理モジュール４３−３に出力する。その後、画像処理モジュール４３−２も、画像処理モジュール４３−１から入力された２つ目のユニットラインに対応する処理画素データに対する画像処理を開始する。
【０１８６】
このようにして、画像処理部３０では、それぞれの第２の構成の処理モジュールが、パイプライン接続された後段の処理モジュールに、入力された入力データを順次受け渡す。このとき、それぞれの第２の構成の処理モジュールは、処理モジュール自身に備えた出力バッファ４３１の記憶容量が全て空いている状態で、かつ、後段の処理モジュールが入力データを受け付けることができる状態であるため、前段の処理モジュールから入力された入力データをそのまま、または入力データに対する画像処理の演算をすぐに行って、出力バッファ４３１に一時記憶せずに後段の処理モジュールに出力する。図１０には、画像処理モジュール４３−１と画像処理モジュール４３−２とのそれぞれのバッファライトおよびバッファリードに、入力データを出力バッファ４３１に一時記憶しない期間、すなわち、出力バッファ４３１を介さずに処理画素データを外部に出力する期間を、バッファスルーの期間として示している。
【０１８７】
そして、画像処理部３０では、それぞれの第２の構成の処理モジュールが、処理モジュール自身に備えたデータバッファ（出力バッファ４３１）の動作を停止するように制御する。つまり、画像処理部３０では、それぞれの処理モジュールにおけるバッファスルーの期間のデータバッファ（出力バッファ４３１）の動作を停止する。これにより、画像処理部３０では、それぞれの処理モジュールに備えたデータバッファ（出力バッファ４３１）の消費電力を削減することができる。
【０１８８】
ここで、画像処理モジュール４３−２が２つ目のユニットラインに対応した処理画素データを出力しているときに、後段の画像処理モジュール４３−３が何らかの要因によって処理画素データを受け付けることができない状態になった場合の動作について説明する。この場合、画像処理モジュール４３−３は、画像処理モジュール４３−２に出力しているデータリクエスト信号を“Ｌｏｗ”レベルにすることによって、処理画素データを受け付けることができない状態である、つまり、入力データの出力を要求しないことを表す。なお、それぞれの第２の構成の処理モジュールが、入力データの出力を要求しないことを前段の処理モジュールに伝える方法は、上述したように、データリクエスト信号の論理レベルによる方法に限定されるものではなく、パイプラインストール信号を出力することによって、画素データを受け付けることができない状態であることを通知する方法であってもよい。
【０１８９】
このとき、画像処理モジュール４３−２は、出力バッファ４３１−２の記憶容量が全て空いている状態（２つのユニットライン分の記憶容量が空いている状態）であるため、制御部４３４−２は、前段の画像処理モジュール４３−１から現在入力されている３つ目のユニットラインに対応した処理画素データに対して演算部４３３−２が画像処理の演算を行った処理画素データを一時記憶するように、出力バッファ４３１−２を制御する。これにより、出力バッファ４３１−２は、３つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データを記憶し、１つのユニットライン分の記憶容量が空いている（残っている）状態になる。
【０１９０】
さらに、画像処理モジュール４３−２では、制御部４３４−２が、前段の画像処理モジュール４３−１から現在入力されている４つ目のユニットラインに対応した処理画素データに対して演算部４３３−２が画像処理の演算を行った処理画素データを一時記憶するように、出力バッファ４３１−２を制御する。これにより、出力バッファ４３１−２は、４つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データも記憶し、空いている記憶容量がない状態になる。つまり、画像処理モジュール４３−２は、画像処理モジュール４３−１からの処理画素データを受け付けることができない状態になる。このため、制御部４３４−２は、画像処理モジュール４３−２が処理画素データを受け付けることができない状態になったことを表すために、画像処理モジュール４３−１に出力しているデータリクエスト信号を“Ｌｏｗ”レベルにする。
【０１９１】
これにより、画像処理モジュール４３−１では、制御部４３４−１が、画像処理モジュール４３−２に備えた制御部４３４−２と同様に、入力ＤＭＡモジュール３２から入力された５つ目と６つ目のユニットラインのそれぞれの画素データに対して演算部４３３−１が画像処理の演算を行った処理画素データを一時記憶するように、出力バッファ４３１−１を制御する。これにより、出力バッファ４３１−１は、５つ目と６つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行った処理画素データを記憶し、画像処理モジュール４３−１は、入力ＤＭＡモジュール３２からの画素データを受け付けることができない状態になる。このため、制御部４３４−１も、制御部４３４−２と同様に、画像処理モジュール４３−１が画素データを受け付けることができない状態になったことを表すために、入力ＤＭＡモジュール３２に出力しているデータリクエスト信号を“Ｌｏｗ”レベルにする。
【０１９２】
これにより、入力ＤＭＡモジュール３２は、ＤＲＡＭ２０に記憶されている７つ目のユニットラインのそれぞれの画素データの読み出しを保留する。なお、入力ＤＭＡモジュール３２にも、２つのユニットライン分の画素データを記憶することができる容量のデータバッファを備えているため、７つ目と８つ目のユニットラインのそれぞれの画素データを読み出して、データバッファに一旦記憶してから、９つ目のユニットラインのそれぞれの画素データの読み出しを保留してもよい。
【０１９３】
このようにして、画像処理部３０では、パイプライン接続された後段の処理モジュールから入力されたデータリクエスト信号が、画素データを受け付けることができない状態であることを表している場合、それぞれの処理モジュールは、後段の処理モジュールへの出力データの出力を停止する。そして、それぞれの処理モジュールは、処理モジュール自身に備えた出力バッファ４３１の記憶容量が空いている分の処理画素データを一時記憶した後に、処理モジュール自身が画素データを受け付けることができない状態になったことを通知する。
【０１９４】
なお、画像処理部３０でも、それぞれの第２の構成の処理モジュールが、処理単位ごとに処理を行っている。従って、それぞれの処理モジュールが１つの処理単位の画素データを後段の処理モジュールに出力している途中で画素データを受け付けることができない状態であることが通知された場合でも、現在出力している処理単位の全ての画素データを出力した後に、後段の処理モジュールへの出力データの出力を停止する。
【０１９５】
続いて、画像処理モジュール４３−３が処理画素データを受け付けることができる状態になった場合の動作について説明する。この場合、画像処理モジュール４３−３は、画像処理モジュール４３−２に出力しているデータリクエスト信号を“Ｈｉｇｈ”レベルにすることによって、処理画素データを受け付けることができる状態である、つまり、入力データの出力を要求することを表す。なお、それぞれの第２の構成の処理モジュールが、再び入力データの出力を要求することを前段の処理モジュールに伝える方法は、上述したように、データリクエスト信号の論理レベルによる方法に限定されるものではなく、パイプラインストール信号の出力を停止することによって、画素データを受け付けることができる状態であることを通知する方法であってもよい。
【０１９６】
このとき、画像処理モジュール４３−２は、出力バッファ４３１−２に空いている記憶容量がない状態（３つ目と４つ目のユニットラインに対応したそれぞれの処理画素データに対して演算部４３３−２が画像処理の演算を行って生成した処理画素データを一時記憶している状態）である。このため、制御部４３４−２は、まず、出力バッファ４３１−２に記憶している３つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データを出力バッファ４３１−２から読み出して外部に出力するように、出力バッファ４３１−２およびセレクタ４３２−２を制御する。これにより、出力バッファ４３１−２は、記憶している３つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データをセレクタ４３２−２に出力し、セレクタ４３２−２は、出力バッファ４３１−２から入力された３つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データを出力データとして外部に出力する。なお、画像処理モジュール４３−２が出力バッファ４３１−２に記憶している処理画素データは、すでに演算部４３３−２によって画像処理の演算が行われた処理画素データであるため、演算部４３３−２におけるレイテンシだけ遅れることなく、後段の画像処理モジュール４３−３に出力することができる。
【０１９７】
また、出力バッファ４３１−２は、３つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データを出力することにより、１つのユニットライン分の記憶容量が空いている（残っている）状態になる。つまり、画像処理モジュール４３−２は、画像処理モジュール４３−１からの処理画素データを受け付けることができる状態になる。このため、制御部４３４−２は、画像処理モジュール４３−２が処理画素データを受け付けることができる状態になったことを表すために、画像処理モジュール４３−１に出力しているデータリクエスト信号を“Ｈｉｇｈ”レベルにする。
【０１９８】
さらに、画像処理モジュール４３−２では、出力バッファ４３１−２に空いている記憶容量があるが、４つ目のユニットラインに対応した処理画素データを一時記憶している状態である。このため、制御部４３４−２は、出力バッファ４３１−２に記憶している４つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データを出力バッファ４３１−２から読み出して外部に出力するように、出力バッファ４３１−２およびセレクタ４３２−２を制御する。これにより、出力バッファ４３１−２は、記憶している４つ目のユニットラインに対応した処理画素データに対してさらに画像処理の演算を行った処理画素データを、出力データとして画像処理モジュール４３−３に出力する。
【０１９９】
また、画像処理モジュール４３−１では、後段の画像処理モジュール４３−２から入力されたデータリクエスト信号が“Ｈｉｇｈ”レベルになり、画像処理モジュール４３−２が処理画素データを受け付けることができる状態になったことが通知されると、制御部４３４−１は、画像処理モジュール４３−２に備えた制御部４３４−２と同様に、５つ目と６つ目のユニットラインに対応した処理画素データを画像処理モジュール４３−２に出力する。より具体的には、制御部４３４−１が、出力バッファ４３１−１に記憶された５つ目と６つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行った処理画素データを順次読み出して外部に出力するように、出力バッファ４３１−２およびセレクタ４３２−２を制御する。これにより、出力バッファ４３１−１は、記憶している５つ目と６つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行った処理画素データを出力データとして後段の画像処理モジュール４３−２に出力する。なお、画像処理モジュール４３−１が出力バッファ４３１−１に記憶している処理画素データも、すでに演算部４３３−１によって画像処理の演算が行われた処理画素データであるため、演算部４３３−１におけるレイテンシだけ遅れることなく、後段の画像処理モジュール４３−２に出力することができる。
【０２００】
また、出力バッファ４３１−１は、５つ目のユニットラインのそれぞれの画素データに対して画像処理の演算を行った処理画素データを出力したときに、１つのユニットライン分の記憶容量が空いている（残っている）状態になり、画像処理モジュール４３−１が入力ＤＭＡモジュール３２からの画素データを受け付けることができる状態になる。このため、制御部４３４−１は、制御部４３４−２と同様に、画像処理モジュール４３−１が画素データを受け付けることができる状態になったことを表すために、入力ＤＭＡモジュール３２に出力しているデータリクエスト信号を“Ｈｉｇｈ”レベルにする。
【０２０１】
これにより、入力ＤＭＡモジュール３２は、ＤＲＡＭ２０に記憶されている７つ目のユニットラインから、画素データの読み出しを再開し、読み出した画素データを画像処理モジュール４３−１に出力する。なお、入力ＤＭＡモジュール３２が、ＤＲＡＭ２０に記憶されている画素データの読み出しを保留する際に、７つ目と８つ目のユニットラインのそれぞれの画素データをデータバッファに記憶している場合には、データバッファに記憶している７つ目のユニットラインのそれぞれの画素データを画像処理モジュール４３−１に出力した後に、９つ目のユニットラインから、画素データの読み出しを再開してもよい。
【０２０２】
このようにして、画像処理部３０では、パイプライン接続された後段の処理モジュールから入力されたデータリクエスト信号が、再び画素データを受け付けることができる状態に変わった場合、それぞれの第２の構成の処理モジュールは、後段の処理モジュールへの出力データの出力を再開する。このとき、それぞれの第２の構成の処理モジュールは、処理モジュール自身に備えた出力バッファ４３１に記憶している画素データから順次、後段の処理モジュールに出力する。そして、それぞれの第２の構成の処理モジュールは、処理モジュール自身に備えた出力バッファ４３１の記憶容量が空いている状態になった後に、処理モジュール自身が画素データを受け付けることができる状態になったことを通知する。その後、それぞれの第２の構成の処理モジュールは、処理モジュール自身に備えた演算部４３３が入力された画素データに対して画像処理の演算を行って生成した処理画素データを、処理モジュール自身に備えた出力バッファ４３１に一旦記憶してから読み出して、後段の処理モジュールに順次出力する。
【０２０３】
以降、上述したような動作を繰り返すことによって、画像処理部３０では、パイプライン接続されたそれぞれの第２の構成の処理モジュールによるパイプライン処理を、それぞれのブロック画像データに含まれる画素データに対してユニットラインごとに順次を行うことによって、それぞれのブロック画像データに対する一連の画像処理を行う。
【０２０４】
なお、図１０に示した画像処理モジュール４３の動作のタイミングチャートの一例には示していないが、それぞれの第２の構成の処理モジュールによる後段の処理モジュールへの出力データの出力を再開した後、再び出力バッファ４３１を介さずに入力データに対して画像処理の演算を行って生成した処理画素データを後段の処理モジュールにそのまま出力することができる状態になった場合には、図１０に示したパイプライン処理を開始した最初の段階と同様に、出力バッファ４３１の動作を停止するように制御する。これにより、画像処理部３０では、それぞれの第２の構成の処理モジュールに備えた出力バッファ４３１の消費電力を削減することができる。
【０２０５】
上記に述べたとおり、第２の構成の画像処理モジュール４３は、出力バッファ４３１の記憶容量の空き状態に基づいて、パイプライン構成において前段に接続された処理モジュールに対して入力データを要求し、前段の処理モジュールから入力された入力データ（画素データ）に対して画像処理の演算を行った後の処理画素データの出力バッファ４３１への一時記憶（書き込み）を制御する。また、第２の構成の画像処理モジュール４３は、出力バッファ４３１の記憶容量の空き状態と、パイプライン構成において後段に接続された処理モジュールの動作状態とに基づいて、出力バッファ４３１に一時記憶している処理画素データの読み出し、後段の処理モジュールに出力する処理画素データの選択（切り替え）を制御する。これにより、第２の構成の画像処理モジュール４３では、後段の処理モジュールがパイプラインストール状態ではなく、出力バッファ４３１の記憶容量が全て空いている状態である場合に、前段の処理モジュールから入力された入力データに対して演算部４３３が画像処理の演算を行った後の処理画素データを、出力バッファ４３１をスルーして後段の処理モジュールに出力するように制御することができる。また、第２の構成の画像処理モジュール４３では、前段の処理モジュールから入力された入力データに対して演算部４３３が画像処理の演算を行った後の処理画素データを、出力バッファ４３１をスルーして後段の処理モジュールに出力することにより、このときの出力バッファ４３１の動作を停止させて、出力バッファ４３１の消費電力を削減することができる。このことにより、第２の構成の画像処理モジュール４３でパイプラインを構成した画像処理部３０でも、従来の処理モジュールでパイプラインを構成したときのように必ずデータバッファへのデータの書き込みとデータバッファからのデータの読み出しとを行わなくても、所望の画像処理を行うことができ、パイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
【０２０６】
なお、画像処理モジュール４３に備えた制御部４３４の構成、判定処理、および動作は、図５〜図７に示した第１の構成の画像処理モジュール３３の構成、判定処理、および動作と同様に考えることができる。従って、画像処理モジュール４３に備えた制御部４３４の構成、判定処理、および動作に関する詳細な説明は省略する。ただし、第２の構成の画像処理モジュール４３は、前段の処理モジュールから入力された入力データに対して、まず、演算部４３３が画像処理の演算を行う構成である。このため、第２の構成の画像処理モジュール４３では、演算部４３３が入力データに対して画像処理の演算を行うタイミングと、制御部４３４がバッファ内データ量情報を更新するタイミングと、制御部４３４が出力バッファ４３１に処理画素データを書き込むためのバッファライト信号のタイミングと、画像処理モジュール４３が後段の処理モジュールに出力するデータ有効信号のタイミングとが、第１の構成の画像処理モジュール３３と異なる。
【０２０７】
より具体的には、演算部４３３は、前段の処理モジュールから入力されたデータ有効信号が、ユニットラインに含まれるそれぞれの画素データが有効な画素データであることを表している画素データに対して画像処理の演算を行う。また、第１の構成の画像処理モジュール３３の制御部３３４に備えたデータ量管理部３３４１に対応する、制御部４３４に備えたデータ量管理部は、バッファ内データ量情報が表すユニットライン数を１ずつ加算して更新する際に、演算部４３３から出力されたデータ有効信号を、第１の構成の画像処理モジュール３３において前段の処理モジュールから入力されたデータ有効信号であるものとしてバッファ内データ量情報を更新する。また、第１の構成の画像処理モジュール３３の制御部３３４に備えた入力バッファ書き込み管理部３３４３に対応する、制御部４３４に備えた出力バッファ書き込み管理部は、演算部４３３から出力されたデータ有効信号が有効であることを表している処理画素データに基づいて、出力バッファ４３１に処理画素データを書き込むためのバッファライト信号を生成し、出力バッファ４３１に出力する。また、セレクタ４３２は、選択した（切り替えた）処理画素データに対応するデータ有効信号を出力するように、外部に出力するデータ有効信号も選択する（切り替える）。つまり、セレクタ４３２は、演算部４３３が画像処理の演算を行った処理画素データを外部に出力する際には、演算部４３３から出力されたデータ有効信号を出力し、出力バッファ４３１−１に記憶された処理画素データを外部に出力する際には、出力バッファ４３１から処理画素データを読み出すタイミングに応じたデータ有効信号を出力するように、外部に出力するデータ有効信号を選択する（切り替える）。なお、出力バッファ４３１から処理画素データを読み出すタイミングに応じたデータ有効信号は、第１の構成の画像処理モジュール３３の制御部３３４に備えた入力バッファ読み出し管理部３３４４に対応する、制御部４３４に備えた出力バッファ読み出し管理部が生成してセレクタ４３２に出力してもよいし、セレクタ４３２が、制御部４３４から出力バッファ４３１に出力されたバッファリード信号に基づいて生成してもよい。
【０２０８】
なお、図１０を用いて説明した第２の構成の画像処理モジュール４３の動作では、前段の処理モジュールから入力された入力データに対して画像処理の演算を行った処理画素データを、出力バッファ４３１に一旦記憶した後に読み出して後段の処理モジュールに出力するように制御した後、再び出力バッファ４３１をスルーして演算部４３３が生成した処理画素データを外部に出力するように、積極的に制御することは行っていなかった。つまり、図１０に示した第２の構成の画像処理モジュール４３の動作でも、図４および図７に示した第１の構成の画像処理モジュール３３の動作と同様に、演算部４３３が画像処理の演算を行って生成した処理画素データを、出力バッファ４３１をスルーして外部に出力するように制御するのは、前段の処理モジュールおよび後段の処理モジュールの動作状態に依存していた。しかし、第２の構成の画像処理モジュール４３でも、第１の構成の画像処理モジュール３３と同様に、制御部４３４が、意図的に出力バッファ４３１をスルーして演算部４３３が画像処理の演算を行って生成した処理画素データを外部に出力する状態に制御することもできる。このときの動作は、図８に示した第１の構成の画像処理モジュール３３の動作と同様に考えることができる。従って、画像処理モジュール４３が、意図的に出力バッファ４３１をスルーして演算部４３３が画像処理の演算を行って生成した処理画素データを外部に出力する状態に制御する動作に関する詳細な説明は省略する。
【０２０９】
上記に述べたとおり、第１の実施形態の画像処理装置１では、画像処理部３０に備えられたパイプラインを構成するそれぞれの処理モジュールが、それぞれの処理モジュールに備えたデータバッファの記憶容量の空き状態に基づいて、前段に接続された処理モジュールに対して入力データを要求し、データバッファへのデータの一時記憶（書き込み）を制御する。また、第１の実施形態の画像処理装置１では、画像処理部３０に備えられたそれぞれの処理モジュールが、それぞれの処理モジュールに備えたデータバッファの記憶容量の空き状態と、後段に接続された処理モジュールの動作状態とに基づいて、データバッファに一時記憶しているデータの読み出しと、外部に出力する出力データの選択（切り替え）とを制御する。このとき、それぞれの処理モジュールでは、後段の処理モジュールがパイプラインストール状態ではなく、データバッファの記憶容量が全て空いている状態である場合に、データバッファをスルーするように制御し、データバッファの動作を停止させる。これにより、それぞれの処理モジュールでは、データバッファの消費電力を削減することができる。このとき、画像処理部３０では、データバッファをスルーするように制御した処理モジュールと、その後段の処理モジュールとが１つの処理モジュールであるのと同様に見なすことができる。一方、それぞれの処理モジュールでは、後段の処理モジュールがパイプラインストール状態である場合には、データバッファをスルーしないように制御する。これにより、それぞれの処理モジュール自身がパイプラインストール状態となるのを防止することができる。このことにより、第１の実施形態の画像処理装置１では、画像処理部３０に備えられたそれぞれの処理モジュールによるパイプライン処理によって、所望の画像処理を行うときのパイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
【０２１０】
なお、第１の実施形態の画像処理装置１では、画像処理部３０に備えられたパイプラインを構成するそれぞれの処理モジュールが、パイプライン構成における直後の処理モジュールの動作状態に基づいて、それぞれの処理モジュールに備えたデータバッファをスルーするか否かを判定する構成について説明した。しかし、それぞれの処理モジュールにおけるデータバッファをスルーするか否かは、第１の実施形態に示した直後の処理モジュールの動作状態によって判定する構成に限定されるものではない。例えば、それぞれの処理モジュールが、パイプライン構成における複数の後段の処理モジュール、または後段の全ての処理モジュールの動作状態に基づいて、それぞれの処理モジュールに備えたデータバッファをスルーするか否かを判定する構成であってもよい。より具体的には、複数の後段の処理モジュールから出力されたパイプラインストール信号を論理積（ＡＮＤ）した結果に基づいてデータバッファをスルーするか否かを判定する構成であってもよい。この場合、それぞれの処理モジュールは、論理積して入力されたパイプラインストール信号に基づいてデータバッファをスルーするか否かを判定することができる。つまり、それぞれの処理モジュールは、パイプラインストール信号を論理積した後段の処理モジュールの全てがパイプラインストール状態でない場合に、データバッファをスルーすると判定することができる。また、それぞれの処理モジュールが、後段の処理モジュールに備えたデータバッファの記憶容量の空き状態の情報も状態通知信号として得ることができる場合には、後段の処理モジュールに備えたデータバッファの記憶容量も、処理モジュール自身に備えたデータバッファの記憶容量の一部であると見なして、データバッファをスルーするか否かを判定することができる。
【０２１１】
また、第１の実施形態の画像処理装置１では、例えば、図７に示したように、データバッファをスルーしないように制御した後、再びデータバッファをスルーするように積極的に制御する方法として、それぞれの処理モジュールが、データバッファに一時記憶された全てのデータを読み出した後に、前段の処理モジュールに対して入力データを要求する方法を示した。しかし、それぞれの処理モジュールにおいて積極的にデータバッファをスルーするように制御する方位は、第１の実施形態に示した方法に限定されるものではない。例えば、それぞれの処理モジュールが、複数の後段の処理モジュールからの入力データの要求が、継続して予め定めた時間以上出力されている場合に、データバッファをスルーするように制御するようにしてもよい。
【０２１２】
なお、第１の実施形態の画像処理装置１では、画像処理部３０に備えられたパイプラインを構成するそれぞれの処理モジュールが、後段の処理モジュールにおけるパイプラインストール状態に基づいて、データバッファをスルーするか否かの判定をそれぞれ行う、つまり、それぞれの処理モジュールごとに、データバッファをスルーするか否かの判定を行っている。しかし、画像処理装置１の全体を考えると、画像処理部３０におけるパイプライン処理がパイプラインストール状態になってしまう要因としては、ＤＭＡバス１０におけるデータの流れ（バストラフィック）の滞りも考えられる。これは、画像処理装置１においてＤＭＡバス１０に接続された複数の構成要素が、ＤＭＡバス１０を介してＤＲＡＭ２０との間で処理を行うデータの受け渡しを行っているからである。このため、画像処理部３０におけるパイプライン処理の性能を低下させないためには、ＤＭＡバス１０におけるバストラフィックも考慮することが望ましい。
【０２１３】
＜第２の実施形態＞
次に、本発明の第２の実施形態の画像処理装置について説明する。図１１は、本発明の第２の実施形態における画像処理装置の概略構成を示したブロック図である。図１１に示した画像処理装置２は、ＤＭＡバス１０と、ＤＲＡＭ２０と、画像処理部５０と、センサインタフェース（Ｉ／Ｆ）部６０と、ビデオインタフェース（Ｉ／Ｆ）部７０と、メモリカードインタフェース（Ｉ／Ｆ）部８０と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０と、を備えている。また、画像処理部５０は、接続切り替え部３１と、入力ＤＭＡモジュール３２と、３つの画像処理モジュール３３−１〜画像処理モジュール３３−３と、出力ＤＭＡモジュール３４と、バストラフィック監視部５５と、を備えている。画像処理装置２も画像処理装置１と同様に、例えば、静止画用カメラなどの撮像装置に備えられる。
【０２１４】
なお、画像処理装置２の構成要素には、図１に示した第１の実施形態の画像処理装置１に備えた構成要素と同様の構成要素を含んでいる。従って、以下の説明においては、画像処理装置２の構成要素において、第１の実施形態の画像処理装置１の構成要素と同様の構成要素には同一の符号を付与し、それぞれの構成要素に関する詳細な説明は省略する。
【０２１５】
センサインタフェース部６０は、ＤＭＡバス１０に接続され、撮像装置に備えたレンズによって結像された被写体の光学像を光電変換する固体撮像素子（イメージセンサ）を制御する撮像処理部である。センサインタフェース部６０は、イメージセンサによって撮像したそれぞれのフレームの静止画像のデータを、ＤＭＡバス１０を介してＤＲＡＭ２０に記憶させる。画像処理装置２においては、センサインタフェース部６０によってＤＲＡＭ２０に記憶された１フレームの静止画像のデータを、予め定めた複数の小さなブロックに分割し、画像処理部５０が、それぞれのブロックごとに画像処理を行う。
【０２１６】
ビデオインタフェース部７０は、ＤＭＡバス１０に接続され、画像処理部５０が画像処理を施してＤＲＡＭ２０に記憶した表示用の画像のデータを、撮像装置に備えた不図示の表示部に表示させるための表示処理部である。ビデオインタフェース部７０は、表示用の画像のデータを、ＤＭＡバス１０を介してＤＲＡＭ２０から読み出し、読み出した表示用の画像のデータを表示部に表示させる。
【０２１７】
メモリカードインタフェース部８０は、ＤＭＡバス１０に接続され、画像処理部５０が画像処理を施してＤＲＡＭ２０に記憶した記録用の画像のデータを、撮像装置に着脱可能な構成で接続されたメモリカードなどの記録媒体に記録するための記録処理部である。メモリカードインタフェース部８０は、記録用の画像のデータを、ＤＭＡバス１０を介してＤＲＡＭ２０から読み出し、読み出した記録用の画像のデータを記録媒体に記録させる。
【０２１８】
ＣＰＵ９０は、ＤＭＡバス１０に接続され、画像処理装置２に備えたそれぞれの構成要素や撮像装置に備えた構成要素を制御するシステム制御部である。ＣＰＵ９０は、それぞれの構成要素を制御するためのプログラムやデータを、ＤＭＡバス１０を介して読み出し、読み出したプログラムやデータに応じて、撮像装置の全体を制御する。
【０２１９】
以下の説明においては、ＤＭＡバス１０に接続され、ＤＭＡバス１０を介してＤＲＡＭ２０にアクセスするセンサインタフェース部６０、ビデオインタフェース部７０、メモリカードインタフェース部８０、およびＣＰＵ９０を区別せずに表すときには、「バスマスタ」という。
【０２２０】
画像処理部５０は、第１の実施形態の画像処理装置１に備えた画像処理部３０と同様に、ＤＲＡＭ２０に記憶された１フレームの静止画像のデータを、予め定めた複数の小さなブロックに分割し、それぞれのブロックごとに画像処理を行う。画像処理部５０も、ＤＭＡバス１０に接続されたバスマスタである。画像処理部５０は、図１１に示したように、入力ＤＭＡモジュール３２、画像処理モジュール３３−１、画像処理モジュール３３−２、画像処理モジュール３３−３、および出力ＤＭＡモジュール３４が直列に接続されたパイプライン処理によって、画像処理装置２における画像処理を順次行う。
【０２２１】
なお、画像処理部５０の構成要素にも、図１に示した第１の実施形態の画像処理装置１に備えた画像処理部３０の構成要素と同様の構成要素を含んでいる。従って、以下の説明においては、画像処理部５０の構成要素において、第１の実施形態の画像処理装置１に備えた画像処理部３０の構成要素と異なる点のみを説明し、第１の実施形態の画像処理装置１に備えた画像処理部３０と同様の構成要素には同一の符号を付与して詳細な説明は省略する。
【０２２２】
接続切り替え部３１は、ＣＰＵ９０からの制御に応じて、画像処理部５０に備えたそれぞれの処理モジュール同士の接続の切り替えを行う。
【０２２３】
バストラフィック監視部５５は、画像処理部５０においてＤＭＡバス１０に接続されたそれぞれのバスマスタによるＤＲＡＭ２０へのアクセスを監視することによって、ＤＭＡバス１０のバストラフィックを監視する。そして、バストラフィック監視部５５は、監視したＤＭＡバス１０のバストラフィックに基づいて、入力バッファ３３１をスルーして入力データを演算部３３３に出力するように指示するための指示信号（以下、「バッファスルー指示信号」という）を、それぞれの画像処理モジュール３３に出力する。
【０２２４】
より具体的には、バストラフィック監視部５５は、ＤＭＡバス１０に接続されたそれぞれのバスマスタが、ＤＭＡバス１０を介してＤＲＡＭ２０との間でデータの受け渡し（読み書き）を行う際のＤＭＡ制御信号を監視する。このＤＭＡ制御信号は、例えば、それぞれのバスマスタがＤＭＡによるＤＲＡＭ２０へのアクセスを要求する際に出力するＤＭＡリクエスト信号や、それぞれのバスマスタによるＤＭＡでのＤＲＡＭ２０へのアクセスを調停するバスアービタ（不図示）がアクセス要求を許可するバスマスタに出力するＤＭＡアクノリッジ信号などである。そして、バストラフィック監視部５５は、監視したＤＭＡバス１０のバストラフィックに基づいて、ＤＭＡバス１０に流れているデータが少ないと判定した場合に、入力バッファ３３１をスルーして入力データを演算部３３３に出力するように指示するバッファスルー指示信号を出力する。
【０２２５】
なお、バストラフィック監視部５５は、監視したＤＭＡバス１０のバストラフィックが予め定めた条件を満足する場合に、ＤＭＡバス１０に流れているデータが少ないと判定する。バストラフィック監視部５５がＤＭＡバス１０に流れているデータが少ないと判定する条件は、例えば、それぞれのバスマスタから出力されたＤＭＡリクエスト信号の間隔や、バスマスタからＤＭＡリクエスト信号が出力されているか否かなどの条件がある。より具体的には、バストラフィック監視部５５は、それぞれのバスマスタによるＤＭＡリクエスト信号の間隔、つまり、それぞれのバスマスタがＤＭＡバス１０を介して行うＤＲＡＭ２０へのアクセスを行う間隔が、予め定めた間隔の閾値よりも長い場合に、ＤＭＡバス１０に流れているデータが少ないと判定する。また、バストラフィック監視部５５は、それぞれのバスマスタがＤＭＡによってＤＲＡＭ２０にアクセスしていない期間が、予め定めた間隔の閾値よりも長い場合に、ＤＭＡバス１０に流れているデータが少ないと判定する。
【０２２６】
画像処理モジュール３３のそれぞれは、第１の実施形態の画像処理装置１において画像処理部３０に備えられた画像処理モジュール３３と同様の構成の処理モジュールである。ただし、画像処理装置２では、バストラフィック監視部５５が出力したバッファスルー指示信号に応じて、入力データを、入力バッファ３３１をスルーして演算部３３３に出力するか、入力バッファ３３１に一旦記憶してから演算部３３３に出力するかを選択する（切り替える）。図５に示した画像処理モジュール３３の構成では、後段の処理モジュールから入力されるパイプラインストール信号の代わりに、バストラフィック監視部５５から出力されたバッファスルー指示信号を入力することによって、バッファスルー判定部３３４２は、第１の実施形態の画像処理装置１に備えた画像処理部３０と同様に動作することができる。すなわち、バッファスルー判定部３３４２は、バッファスルー指示信号に基づいてセレクタ３３２を制御するためのバッファスルー信号を出力することができる。
【０２２７】
なお、パイプラインストール信号は、パイプライン処理が（一時）停止しているため入力データの出力を要求しないことを表している信号であり、バッファスルー指示信号は、入力バッファ３３１をスルーして入力データを演算部３３３に出力するように指示することを表している信号である。つまり、パイプラインストール信号が表す意味とバッファスルー指示信号が表す意味とは逆の意味になっている。従って、図５に示した画像処理モジュール３３の構成においてバッファスルー判定部３３４２は、パイプラインストール信号の代わりに入力されるバッファスルー指示信号の意味を逆に捉えて、入力バッファ３３１（すなわち、入力バッファ書き込み管理部３３４３および入力バッファ読み出し管理部３３４４）と、セレクタ３３２との制御方法を判定する。
【０２２８】
そして、それぞれの画像処理モジュール３３は、バッファスルー指示信号が入力バッファ３３１をスルーして入力データを演算部３３３に出力するように指示することを表し、入力バッファ３３１の記憶容量が全て空いている状態である場合に、前段の処理モジュールから入力された入力データを、入力バッファ３３１をスルーして演算部３３３に転送するように制御する。このとき、それぞれの画像処理モジュール３３は、入力バッファ３３１の動作を停止させて、入力バッファ３３１の消費電力を削減する。
【０２２９】
次に、バストラフィック監視部５５におけるＤＭＡバス１０のバストラフィックの監視動作について説明する。図１２は、本発明の第２の実施形態の画像処理装置２に備えた画像処理部５０におけるバストラフィック監視部５５の動作の一例を示したタイミングチャートである。図１２には、画像処理装置２に備えたそれぞれのバスマスタがＤＲＡＭ２０へのアクセスを要求する際に出力するＤＭＡリクエスト信号と、画像処理部５０に備えた入力ＤＭＡモジュール３２および出力ＤＭＡモジュール３４がＤＲＡＭ２０へのアクセスを要求する際に出力するＤＭＡリクエスト信号との一例を示している。また、図１２には、バストラフィック監視部５５がＤＭＡバス１０のバストラフィックを監視した結果に応じて出力するバッファスルー指示信号の一例を併せて示している。
【０２３０】
画像処理装置２に備えたそれぞれのバスマスタは、処理の状況に応じてＤＭＡによるＤＲＡＭ２０へのアクセス要求（ＤＭＡリクエスト信号）をバスアービタ（不図示）に出力する。そして、バスアービタ（不図示）は、それぞれのバスマスタから入力されたＤＭＡリクエスト信号を調停し、アクセス要求を許可するバスマスタに対してＤＭＡアクノリッジ信号を出力する。これにより、ＤＭＡアクノリッジ信号が入力されたバスマスタ、すなわち、アクセス要求が許可されたバスマスタは、ＤＭＡによってＤＲＡＭ２０にアクセスする。ここで、それぞれのバスマスタによるＤＲＡＭ２０へのアクセスは、図１２に示したように、一定の間隔では行われない。
【０２３１】
バストラフィック監視部５５は、画像処理部５０以外のバスマスタがＤＭＡによって行うＤＲＡＭ２０へのアクセスを監視することによって、ＤＭＡバス１０のバストラフィックを監視する。より具体的には、バストラフィック監視部５５は、画像処理部５０以外のそれぞれのバスマスタが出力するＤＭＡリクエスト信号の間隔を、バスマスタごとに計測する。これにより、ＤＭＡバス１０のバストラフィックの状態を判定することができる。例えば、予め定めた間隔の閾値よりも短い間隔で１つのバスマスタからＤＭＡリクエスト信号が出力されている場合には、このバスマスタによるＤＭＡバス１０の占有率が高く、ＤＲＡＭ２０へのアクセスが頻繁に行われていることにより、ＤＭＡバス１０に多くのデータが流れていると判定することができる。また、例えば、それぞれのバスマスタが出力するＤＭＡリクエスト信号の間隔は予め定めた間隔の閾値よりも長いが、同時期に複数のバスマスタからＤＭＡリクエスト信号が出力されている場合には、それぞれのバスマスタによるＤＭＡバス１０の占有率が低いものの、複数のバスマスタによってＤＲＡＭ２０は頻繁にアクセスされていることにより、ＤＭＡバス１０に多くのデータが流れていると判定することができる。
【０２３２】
このように、ＤＭＡバス１０に多くのデータが流れていると、画像処理部５０がＤＭＡでのＤＲＡＭ２０へのアクセスを要求した場合でも、アクセス要求が許可される間隔が長くなり、画像処理部５０におけるパイプライン処理が滞ってしまう、つまり、パイプラインストール状態になってしまうことが考えられる。このため、バストラフィック監視部５５は、入力バッファ３３１をスルーして入力データを演算部３３３に出力するように指示することを表すバッファスルー指示信号を出力しない。図１２に示したタイミングチャートでは、バッファスルー指示信号を“Ｌｏｗ”レベルにすることよって、入力バッファ３３１をスルーして入力データを演算部３３３に出力するように指示しないことを表している。これにより、画像処理部５０に備えたそれぞれの画像処理モジュール３３では、バッファスルー判定部３３４２が、入力された入力データを入力バッファ３３１に一旦記憶した後に読み出して演算部３３３に転送するように制御する。そして、それぞれの画像処理モジュール３３では、演算部３３３によって画像処理の演算を行った処理画素データを、後段の処理モジュールに順次出力することによって、パイプライン処理を行う。
【０２３３】
また、図１２に示したタイミングチャートにおけるタイミングｔ１以降のように、画像処理部５０以外のバスマスタが出力するＤＭＡリクエスト信号がなくなり、つまり、画像処理部５０以外のバスマスタによるＤＲＡＭ２０へのアクセスがなくなり、この状態が予め定めた期間よりも長く続いている場合には、バストラフィック監視部５５は、ＤＭＡバス１０に流れているデータが少ないと判定する。そして、バストラフィック監視部５５は、入力バッファ３３１をスルーして入力データを演算部３３３に出力するように指示することを表すバッファスルー指示信号を出力する。図１２に示したタイミングチャートでは、タイミングｔ２からバッファスルー指示信号を“Ｈｉｇｈ”レベルにすることによって、入力バッファ３３１をスルーして入力データを演算部３３３に出力するように指示することを表している。これにより、画像処理部５０に備えたそれぞれの画像処理モジュール３３では、バッファスルー判定部３３４２が、入力された入力データを、入力バッファ３３１をスルーして演算部３３３に出力するようにセレクタ３３２を制御し、入力バッファ３３１の動作を停止させて入力バッファ３３１の消費電力を削減する。そして、それぞれの画像処理モジュール３３では、入力バッファ３３１をスルーして転送された入力データに対して演算部３３３が画像処理の演算を行った処理画素データを、後段の処理モジュールに順次出力することによって、パイプライン処理を行う。
【０２３４】
また、図１２に示したタイミングチャートにおけるタイミングｔ３以降のように、画像処理部５０以外のバスマスタからＤＭＡリクエスト信号が出力された場合、つまり、画像処理部５０以外のバスマスタによるＤＲＡＭ２０へのアクセスが行われるようになった場合、バストラフィック監視部５５は、ＤＭＡバス１０に流れるデータがこれから多くなると判定する。このため、バストラフィック監視部５５は、タイミングｔ４から、バッファスルー指示信号を再び“Ｌｏｗ”レベルにすることよって、入力バッファ３３１をスルーして入力データを演算部３３３に出力するように指示しないことを表す。これにより、画像処理部５０に備えたそれぞれの画像処理モジュール３３では、バッファスルー判定部３３４２が、入力された入力データを入力バッファ３３１に一旦記憶した後に読み出して演算部３３３に転送するように制御する。
【０２３５】
このように、バストラフィック監視部５５は、ＤＭＡバス１０に接続されたそれぞれのバスマスタによるＤＲＡＭ２０へのアクセスに基づいて、ＤＭＡバス１０のバストラフィックを監視する。そして、バストラフィック監視部５５は、監視したＤＭＡバス１０のバストラフィックに基づいて、画像処理部５０においてパイプラインを構成するそれぞれの画像処理モジュール３３に、入力バッファ３３１をスルーして入力された入力データを演算部３３３に転送するか否かを制御するためのバッファスルー指示信号を出力する。
【０２３６】
なお、バストラフィック監視部５５がバストラフィックを判定する条件、つまり、ＤＭＡバス１０に流れるデータが多いか少ないかを判定する条件は、上述したような、それぞれのバスマスタから出力されたＤＭＡリクエスト信号の間隔や、バスマスタからＤＭＡリクエスト信号が出力されているか否かの条件に限定されるものではなく、他の条件を満足するか否かによって判定してもよい。例えば、ＤＲＡＭ２０にアクセスするバスマスタの数によってバストラフィックを判定してもよい。この場合、バストラフィック監視部５５は、ＤＲＡＭ２０にアクセスするバスマスタの数が予め定めた数の閾値よりも少ない場合にＤＭＡバス１０に流れるデータが少ないと判定し、ＤＲＡＭ２０にアクセスするバスマスタの数が予め定めた数の閾値以上である場合にＤＭＡバス１０に流れるデータが多いと判定する。また、例えば、それぞれのバスマスタがＤＭＡリクエスト信号を出力してからＤＭＡアクノリッジ信号が入力されるまでの時間によってバストラフィックを判定してもよい。この場合、バストラフィック監視部５５は、ＤＭＡリクエスト信号を出力してからＤＭＡアクノリッジ信号が入力されるまでの時間が予め定めた時間の閾値よりも短い場合にＤＭＡバス１０に流れるデータが少ないと判定し、ＤＭＡリクエスト信号を出力してからＤＭＡアクノリッジ信号が入力されるまでの時間が予め定めた時間の閾値以上である場合にＤＭＡバス１０に流れるデータが多いと判定する。
【０２３７】
本第２の実施形態によれば、画像処理部（画像処理部５０）は、データバス（ＤＭＡバス１０）に接続された複数のバスマスタ（センサインタフェース部６０、ビデオインタフェース部７０、メモリカードインタフェース部８０、ＣＰＵ９０など）によるメモリ（ＤＲＡＭ２０）へのアクセスを監視することによって、ＤＭＡバス１０におけるバストラフィックを監視するバストラフィック監視部（バストラフィック監視部５５）、をさらに備え、バストラフィック監視部５５は、監視したバストラフィックに基づいてＤＭＡバス１０に流れているデータが少ないと判定した場合に、それぞれの処理モジュール（画像処理モジュール３３）に、データバッファ（入力バッファ３３１）をスルーしてデータ（画素データまたは処理画素データ）を（演算部３３３に）転送する経路の選択を指示するバッファスルー指示信号を出力し、それぞれの画像処理モジュール３３内の制御部（制御部３３４）は、バッファスルー指示信号が入力された場合に、パイプライン処理における画素データまたは処理画素データの流れが滞っていない状態であると判定する画像処理装置（画像処理装置２）が構成される。
【０２３８】
上記に述べたとおり、第２の実施形態の画像処理装置２では、画像処理部５０に備えられたバストラフィック監視部５５が、画像処理装置２に備えた他のバスマスタによるＤＲＡＭ２０へのアクセスを監視することによって、ＤＭＡバス１０におけるバストラフィックを監視する。そして、第２の実施形態の画像処理装置２では、バストラフィック監視部５５が、監視したバストラフィックに基づいて、画像処理部５０に備えられたパイプラインを構成するそれぞれの画像処理モジュール３３に入力された入力データを、入力バッファ３３１をスルーして演算部３３３に転送するか否かを制御する。このとき、それぞれの画像処理モジュール３３では、入力バッファ３３１をスルーして入力された入力データを演算部３３３に転送する場合、入力バッファ３３１の動作を停止させる。これにより、それぞれの画像処理モジュール３３では、入力バッファ３３１における消費電力を削減することができる。このことにより、第２の実施形態の画像処理装置２でも、第１の実施形態の画像処理装置１と同様に、画像処理部５０に備えられたそれぞれの画像処理モジュール３３によるパイプライン処理によって、所望の画像処理を行うときのパイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
【０２３９】
なお、第２の実施形態の画像処理装置２では、画像処理部５０に備えられたバストラフィック監視部５５が監視したＤＭＡバス１０のバストラフィックに基づいて出力したバッファスルー指示信号に応じて、それぞれの画像処理モジュール３３が、入力データを、入力バッファ３３１をスルーして演算部３３３に出力するか、入力バッファ３３１に一旦記憶してから演算部３３３に出力するかを選択する（切り替える）構成について説明した。しかし、それぞれの画像処理モジュール３３は、バッファスルー指示信号に加えて、第１の実施形態の画像処理装置１と同様に、後段（複数の後段も含む）の画像処理モジュール３３の動作状態も併せて入力バッファ３３１をスルーするか否かを判定する構成であってもよい。この場合、画像処理部５０に備えられたそれぞれの画像処理モジュール３３内のバッファスルー判定部３３４２が、バッファスルー指示信号と後段に接続された処理モジュールの動作状態とに基づいて、入力バッファ書き込み管理部３３４３、入力バッファ読み出し管理部３３４４、およびセレクタ３３２を制御することができる。そして、第１の実施形態の画像処理装置１と同様に、意図的に入力バッファ３３１をスルーして入力データを演算部３３３に転送する状態に制御することもできる。
【０２４０】
また、第２の実施形態の画像処理装置２では、画像処理部５０内にバストラフィック監視部５５を備えた構成について説明した。しかし、バストラフィック監視部５５は、画像処理部５０の外部に備える構成であってもよい。例えば、画像処理装置２に備えたバスアービタ（不図示）が、バストラフィック監視部５５と同様に、ＤＭＡバス１０のバストラフィックを監視する機能を有している場合も考えられる。この場合、画像処理部５０に備えられたそれぞれの画像処理モジュール３３内のバッファスルー判定部３３４２が、バスアービタ（不図示）が監視したＤＭＡバス１０のバストラフィックの状態を表す信号に基づいて、入力バッファ３３１をスルーするか否かを判定し、入力バッファ書き込み管理部３３４３、入力バッファ読み出し管理部３３４４、およびセレクタ３３２を制御する構成にすることができる。そして、第１の実施形態の画像処理装置１と同様に、意図的に入力バッファ３３１をスルーして入力データを演算部３３３に転送する状態に制御することもできる。
【０２４１】
また、第２の実施形態の画像処理装置２では、画像処理部５０に備えられたパイプラインを構成するそれぞれの処理モジュールが、第１の実施形態の画像処理装置１において画像処理部３０に備えられた第１の構成の画像処理モジュール３３と同様の構成の処理モジュールである場合について説明した。しかし、画像処理部５０に備えられたパイプラインを構成するそれぞれの処理モジュールは、第１の構成の画像処理モジュール３３に限定されるものではなく、第２の構成の画像処理モジュール４３であってもよい。なお、画像処理部５０に備えられたパイプラインを構成するそれぞれの処理モジュールが第２の構成の画像処理モジュール４３である場合であっても、第２の実施形態の画像処理装置２および画像処理部５０の動作は、上述した動作と同様に考えることができる。従って、画像処理部５０に備えられたパイプラインを構成するそれぞれの処理モジュールが第２の構成の画像処理モジュール４３である場合の動作に関する詳細な説明は省略する。
【０２４２】
上記に述べたとおり、本発明を実施するための形態によれば、画像処理部においてパイプラインを構成するそれぞれの処理モジュールに、処理モジュール自身に備えたデータバッファをスルーするか否かを選択する（切り替える）構成を備える。そして、本発明を実施するための形態では、処理モジュール自身に備えたデータバッファの記憶容量の空き状態と、パイプライン構成において後段（複数の後段も含む）に接続された処理モジュールの動作状態とに基づいて、処理モジュール自身に備えたデータバッファをスルーするか否かの選択（切り替え）を制御する。また、本発明を実施するための形態では、画像処理部が接続されたＤＭＡバスのバストラフィックを監視し、監視したバストラフィックに基づいて、処理モジュール自身に備えたデータバッファをスルーするか否かの選択（切り替え）を制御する。このとき、本発明を実施するための形態では、処理モジュール自身に備えたデータバッファの記憶容量の空き状態に基づいて、パイプライン構成において前段に接続された処理モジュールに対する入力データの要求を意図的に制御することもできる。そして、本発明を実施するための形態では、それぞれの処理モジュールにおいてデータバッファをスルーするように制御した場合、データバッファの動作を停止するように制御する。これにより、本発明を実施するための形態では、それぞれの処理モジュールにおいて画像処理の演算を行う際に、処理モジュール自身に備えたデータバッファにおける消費電力を削減することができる。このことにより、本発明を実施するための形態では、画像処理部に備えられたそれぞれの処理モジュールによるパイプライン処理によって、所望の画像処理を行うときのパイプライン処理の性能を低下させずに、パイプライン処理における消費電力を低減することができる。
【０２４３】
なお、本発明を実施するための形態では、画像処理装置に備えた画像処理部において、パイプラインを構成するそれぞれの画像処理モジュールに、画像処理モジュール自身に備えたデータバッファをスルーするか否かの選択（切り替え）を制御する機能を備えた構成について説明した。しかし、上述したように、画像処理部においてパイプラインを構成する処理モジュールである入力ＤＭＡモジュールと出力ＤＭＡモジュールとにもデータバッファを備えている。従って、入力ＤＭＡモジュールや出力ＤＭＡモジュールにも、画像処理モジュールと同様に、自身に備えたデータバッファをスルーするか否かの選択（切り替え）を制御する機能を備えてもよい。この機能を備えることによって、入力ＤＭＡモジュールや出力ＤＭＡモジュールでも、画像処理モジュールと同様の効果を得ることができる。
【０２４４】
また、本発明を実施するための形態では、画像処理装置に備えた画像処理部内にパイプラインを構成するそれぞれの処理モジュールを備えた構成について説明した。しかし、パイプライン構成によって一連の処理を行う処理装置は、画像処理装置の他にも種々の処理装置が考えられる。従って、本発明の考え方を適用することができる処理装置は、本発明を実施するための形態で示した画像処理装置に限定されるものではなく、複数の処理モジュールを直列に接続することによってパイプラインを構成してパイプライン処理を行う処理装置であれば、本発明の考え方を同様に適用することができ、本発明と同様の効果を得ることができる。
【０２４５】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【０２４６】
１・・・画像処理装置
１０・・・ＤＭＡバス（データバス）
２０・・・ＤＲＡＭ（メモリ）
３０・・・画像処理部
３１・・・接続切り替え部（画像処理部）
３２・・・入力ＤＭＡモジュール（画像処理部）
３３，３３−１，３３−２，３３−３・・・画像処理モジュール（画像処理部，処理モジュール）
３３１・・・入力バッファ（処理モジュール，データバッファ）
３３２・・・セレクタ（処理モジュール，セレクタ）
３３３・・・演算部（処理モジュール）
３３４・・・制御部（処理モジュール，制御部）
３３４１・・・データ量管理部（処理モジュール，制御部，データ量管理部）
３３４２・・・バッファスルー判定部（処理モジュール，制御部，バッファスルー判定部）
３３４３・・・入力バッファ書き込み管理部（処理モジュール，制御部，バッファ書き込み管理部）
３３４４・・・入力バッファ読み出し管理部（処理モジュール，制御部，バッファ読み出し管理部）
３４・・・出力ＤＭＡモジュール（画像処理部）
４３，４３−１，４３−２，４３−３・・・画像処理モジュール（画像処理部，処理モジュール）
４３１・・・出力バッファ（処理モジュール，データバッファ）
４３２・・・セレクタ（処理モジュール，セレクタ）
４３３・・・演算部（処理モジュール）
４３４・・・制御部（処理モジュール，制御部）
２・・・画像処理装置
５０・・・画像処理部
５５・・・バストラフィック監視部（画像処理部，バストラフィック監視部）
６０・・・センサインタフェース部（バスマスタ）
７０・・・ビデオインタフェース部（バスマスタ）
８０・・・メモリカードインタフェース部（バスマスタ）
９０・・・ＣＰＵ（バスマスタ）
【図１】
0006580380.tif 000002
【図２】
0006580380.tif 000003
【図３】
0006580380.tif 000004
【図４】
0006580380.tif 000005
【図５】
0006580380.tif 000006
【図６】
0006580380.tif 000007
【図７】
0006580380.tif 000008
【図８】
0006580380.tif 000009
【図９】
0006580380.tif 000010
【図１０】
0006580380.tif 000011
【図１１】
0006580380.tif 000012
【図１２】
0006580380.tif 000013