(57)【要約】【課題】  １つの画像から生成される複数の画像のそれぞれに対する処理を１つの階層における処理として当該処理を並列に行う際の処理時間を短くする。【解決手段】  複数の演算ユニットから１以上の演算ユニットを選択する選択パターン（ユニット選択パターン）を抽出する。また、これらのユニット選択パターンのそれぞれについて、当該ユニット選択パターンに属する演算ユニットに割り当てることができる階層の選択パターン（階層選択パターン）を抽出する。これらの階層選択パターンのそれぞれにおいて、処理量とオーバーヘッドの量を導出する。そして、これら処理量とオーバーヘッドとに基づいて、階層選択パターンのそれぞれにおいて、処理時間を算出し、算出した処理時間に基づいて、分配方法（どの階層に対する処理を、どの演算ユニット（ＧＰＵ）に実行させるのか）を決定する。【選択図】  図１
2017107381.tif 000002
【特許請求の範囲】
【請求項１】
入力された画像から複数の階層画像を生成し、前記複数の階層画像に対する処理を並列に行う複数の演算手段と、
前記複数の演算手段の何れに前記階層を割り当てるのかを示す分配方法を決定する決定手段と、を有し、
前記演算手段は、前記分配方法に従って割り当てられた前記階層に対応する前記階層画像に対する処理を行うことを特徴とする画像処理装置。
【請求項２】
前記複数の階層画像は、入力された画像に対する複数の縮小画像または複数の周波数成分の画像であることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記決定手段は、前記階層画像を生成する際の処理に対する設定と、前記複数の演算手段の数および性能と、オーバーヘッドの量とに基づいて、前記分配方法を決定することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記決定手段は、前記複数の演算手段に対して前記階層を割り当てる方法としてとり得る方法のうち、前記処理の時間が最も短くなる方法を、前記分配方法として決定することを特徴とする請求項１〜３の何れか１項に記載の画像処理装置。
【請求項５】
前記決定手段は、前記複数の演算手段から１以上の演算手段を選択する選択パターンとして複数の選択パターンを抽出する手段と、
前記複数の選択パターンのそれぞれについて、当該選択パターンに属する前記演算手段に割り当てることができる前記階層のパターンを抽出する手段と、
前記階層のパターンのそれぞれについて、当該階層のパターンに属する階層群に対する処理を前記演算手段で行う場合の処理量を導出することと、前記階層のパターンのそれぞれについて、当該階層のパターンに属する階層群に対する処理を前記演算手段で行う場合のオーバーヘッドの量を導出することとの少なくとも何れか一方を行う手段と、
前記処理量と前記オーバーヘッドの量との少なくとも何れか一方に基づいて、前記階層のパターンのそれぞれについて、当該階層のパターンに属する階層群に対する処理を前記演算手段で行う場合の処理時間を導出する手段と、
前記処理時間に基づいて、前記分配方法を決定する手段と、をさらに有することを特徴とする請求項１〜４の何れか１項に記載の画像処理装置。
【請求項６】
前記決定手段は、前記階層のパターンのうち、１番目に長い前記処理時間と２番目に長い前記処理時間との差が最も小さいパターンを、前記分配方法として決定することを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記階層は、前記入力された画像に対する縮小率と１対１で対応するように定められ、
前記演算手段は、前記分配方法に従って自身に割り当てられた前記階層に対応する縮小率で前記入力された画像を縮小することにより前記階層画像を生成する縮小手段と、
前記階層画像のノイズを低減するノイズ低減手段と、
前記ノイズ低減手段によりノイズが低減された複数の前記階層画像を合成する合成手段と、をさらに有し、
前記処理は、前記ノイズの低減と、前記画像の合成とを含み、
前記階層画像を生成する際の処理に対する設定は、前記縮小率を含むことを特徴とする請求項１〜６の何れか１項に記載の画像処理装置。
【請求項８】
前記縮小率が小さい前記階層であるほど下位の階層であり、
前記演算手段は、前記分配方法に従って自身に割り当てられた複数の前記階層のうち、下位の階層から順に、前記縮小と前記ノイズの低減とを行うことを特徴とする請求項７に記載の画像処理装置。
【請求項９】
入力された画像から複数の階層画像を生成し、前記複数の階層画像に対する処理を並列に行う複数の演算手段を用いて行う画像処理方法であって、
前記複数の演算手段の何れに前記階層を割り当てるのかを示す分配方法を決定する決定手段を有し、
前記演算手段は、前記分配方法に従って割り当てられた前記階層に対応する前記階層画像に対する処理を行うことを特徴とする画像処理方法。
【請求項１０】
請求項１〜８の何れか１項に記載の画像処理装置の各手段としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、およびプログラムに関し、特に、画像を処理するために用いて好適なものである。
【背景技術】
【０００２】
従来における画像のノイズを低減する方法として、ノイズ低減処理を階層的に施す技術が開示されている（特許文献１を参照）。かかる技術では、画像の縮小を複数回に分けて行うことで解像度の異なる複数の画像を生成し、生成した複数の画像に対しノイズ低減処理を行った後に一枚の画像に合成する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１５７４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、画像の高解像度化の進行に伴い、画像を高速に処理する技術が求められている。このため、複数の演算ユニットを用いて処理を分散させ、並列処理する事で画像の処理の高速化を図ることが考えられる。
【０００５】
しかしながら、前述したノイズ低減処理を階層的に施す技術にて並列処理を行う際、階層毎に画像の縮小率が異なるため処理量に差異が生じる。このため、処理時間を十分に高速化することが容易ではない。
本発明は、このような問題点に鑑みてなされたものであり、１つの画像から生成される複数の画像のそれぞれに対する処理を１つの階層における処理として当該処理を並列に行う際の処理時間を短くすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の画像処理装置は、入力された画像から複数の階層画像を生成し、前記複数の階層画像に対する処理を並列に行う複数の演算手段と、前記複数の演算手段の何れに前記階層を割り当てるのかを示す分配方法を決定する決定手段と、を有し、前記演算手段は、前記分配方法に従って割り当てられた前記階層に対応する前記階層画像に対する処理を行うことを特徴とする。
【発明の効果】
【０００７】
本発明によれば、１つの画像から生成される複数の画像のそれぞれに対する処理を１つの階層における処理として当該処理を並列に行う際の処理時間を短くすることができる。
【図面の簡単な説明】
【０００８】
【図１】画像処理装置の構成を示す図である。
【図２】画像処理装置の処理の概要を説明するフローチャートである。
【図３】分配方法決定処理を説明するフローチャートである。
【図４】性能比を示す図である。
【図５】処理比を示す図である。
【図６】オーバーヘッド比を示す図である。
【図７】処理時間を示す図である。
【図８】並列処理を説明するフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら、実施形態を説明する。本実施形態では、以下に詳述するように、入力された画像から複数の階層画像を生成し、当該複数の階層画像に対する処理を並列に行う複数の演算ユニットの何れに前記階層を割り当てるのかを示す分配方法を決定する。そして、決定した分配方法に従って割り当てられた前記階層に対応する前記階層画像に対する処理を行う。
【００１０】
図１は、画像処理装置１００の構成の一例を示す機能ブロック図である。画像処理装置１００は、画像処理を含む各種の処理を行う。以下、画像処理装置１００の主要部を説明する。しかしながら、画像処理装置１００が、これ以外の処理部を備えていても構わない。画像処理装置１００のハードウェアは、例えば、ＣＰＵ、ＧＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ、および各種のハードウェアを用いることにより実現される。本実施形態では、画像処理装置１００が、相互に並列処理を行うことが可能な演算ユニットの一例として４台のＧＰＵを備える場合を例に挙げて説明するが、ＧＰＵに限定されない。尚、相互に並列処理を行うことが可能な演算ユニットの数は４台に限定されない。
【００１１】
画像処理装置１００は、入力された画像を縮小して複数の階層画像を生成する。複数の階層画像は、複数の縮小画像、又は複数の周波数成分の画像と表現することもできる。縮小率が小さいものほど（より小さく縮小するものほど）下位の階層になり、且つ、縮小率と１対１で対応するように定められた階層ごとに、階層画像に対する処理が行われる。図１に示す例では後述するように、４つの縮小率で入力画像を縮小するので、４つの階層１１３〜１１６が定められる。
【００１２】
分配方法決定部１０１は、処理時間が最速となるように、どの階層を、どの演算ユニット（ＧＰＵ）に実行させるのかを決定する。以下の説明では、その内容（複数の演算ユニット（ＧＰＵ）の何れに階層を割り当てるのか）を必要に応じて分配方法を称する。
本実施形態では、以下の情報に基づいて、分配方法が決定される。即ち、画像処理装置１００が保有する使用可能な演算ユニット（ＧＰＵ）の数と、各演算ユニット（ＧＰＵ）の処理速度に関する性能（定格クロック等）と、入力画像のサイズ（縮小率）と、メモリ転送のようなオーバーヘッドの量に基づき分配方法が決定される。この分配方法に従って、各演算ユニット（ＧＰＵ）は、各階層に対する処理を並列に行う。尚、後述するように、各演算ユニット（ＧＰＵ）は、自身に複数の階層が割り当てられた場合には、当該複数の階層に対する処理を、下位の階層から順に順番に行う（即ち、当該複数の階層に対する処理は並列処理にはならない）。
【００１３】
本実施形態では、最上位の第１の階層１１３における処理部として、縮小部１０２、ノイズ低減処理部１０６、および合成部１１０が含まれる。最上位から２番目の第２の階層１１４における処理部として、縮小部１０３、ノイズ低減処理部１０７、および合成部１１１が含まれる。最上位から３番目の第３の階層１１５における処理部として、縮小部１０４、ノイズ低減処理部１０８、および合成部１１２が含まれる。最下位の第４の階層１１６における処理部として、縮小部１０５、およびノイズ低減処理部１０９が含まれる。
【００１４】
縮小部１０２〜１０５は、入力画像に対して縮小処理を行う。本実施形態では、縮小部１０２、１０３、１０４、１０５における縮小率は、それぞれ、１、１／２、１／４、１／８であるものとする。しかしながら、各縮小部１０２〜１０５における縮小率は、これに限定されるものではない。尚、縮小処理自体は、公知の技術で実現することができるので、その詳細な説明を省略する。
【００１５】
このように本実施形態では、階層の数が４である場合を例に挙げて説明するが、階層の数は４に限定されない。
以上の分配方法決定部１０１と縮小部１０２〜１０５により、階層画像を生成する階層画像生成部１１７が構成される。言い換えれば、縮小部１０２〜１０５によって複数の周波数成分の画像を生成している。縮小部１０２〜１０５は、高周波成分から低周波成分の画像をそれぞれ生成している。本実施形態では、縮小部１０２〜１０５によって縮小された階層画像について説明するが、階層画像を周波数成分の画像として言い換えることもできる。
【００１６】
ノイズ低減処理部１０６、１０７、１０８、１０９は、それぞれ、縮小部１０２、１０３、１０４、１０５により縮小処理が施された画像に対して、ノイズ低減処理を行う。尚、ノイズ低減処理自体は、公知の技術で実現することができるので、その詳細な説明を省略する。最下位の第４の階層１１６におけるノイズ低減処理部１０９によりノイズ低減処理が施された画像は、当該階層１１６で処理された画像として、１つ上位の第３の階層１１５の合成部１１２に出力される。
以上のノイズ低減処理部１０６〜１０９により、各階層画像のノイズを低減するノイズ低減部１１８が構成される。尚、このように本実施形態では、画像に対する縮小率が小さいものほど下位の階層になるようにする場合を例に挙げて説明する。しかしながら、必ずしも、画像に対する縮小率が小さいものほど下位の階層になるようにする必要はない。
【００１７】
合成部１１０、１１１、１１２は、自身が属する階層１１３、１１４、１１５のノイズ低減処理部１０６、１０７、１０８によりノイズ低減処理が施された画像と、自身が属する階層の１つ下位の階層１１４、１１５、１１６で処理された画像とを合成する。そして、合成部１１１、１１２は、それぞれ、合成した画像を、自身が属する階層１１４、１１５で処理された画像として、１つ上位の階層１１３、１１４の合成部１１０、１１１に出力する。一方、合成部１１０は、合成した画像を出力画像として出力する。出力画像の出力の形態としては、例えば、記憶媒体への記憶、外部装置への送信、およびコンピュータディスプレイへの表示の少なくとも何れか１つを採用することができる。
以上の合成部１１０〜１１２により、各階層画像を合成する画像合成部１１９が構成される。
【００１８】
このように合成部１１０〜１１２は、異なる縮小率で縮小されてノイズ低減処理が施された複数の画像を合成する。
本実施形態では、各演算ユニット（ＧＰＵ）は、各階層１１３〜１１６の処理部（縮小部１０２〜１０５、ノイズ低減処理部１０６〜１０９、合成部１１０〜１１２）の機能を有しているものとする。
【００１９】
次に、図２のフローチャートを参照しながら、本実施形態の画像処理装置１００の処理の概要の一例を説明する。
まず、ステップＳ２０１において、分配方法決定部１０１は、分配方法決定処理を行う。分配方法決定処理の詳細については、図３を参照しながら後述する。本実施形態では、分配方法決定処理は、ＣＰＵを用いることにより実行されるものとするが、ＣＰＵに限定されない。
次に、ステップＳ２０２において、画像処理装置１００は、並列処理を行う。即ち、分配方法決定処理により決定された分配方法に従って各階層が演算ユニット（ＧＰＵ）の何れかに割り当てられると、演算ユニット（ＧＰＵ）は、自身に割り当てられた階層の処理部（縮小部、ノイズ低減処理部、合成部）による処理を行う。
【００２０】
次に、ステップＳ２０３において、画像処理装置１００は、全ての階層における処理が終了したか否かを判定する。即ち、画像処理装置１００は、出力画像が得られたか否かを判定する。本実施形態では、この判定は、ＣＰＵを用いることにより実行されるものとするが、ＣＰＵに限定されない。この判定の結果、全ての階層における処理が終了していない場合には、ステップＳ２０２に戻り、全ての階層における処理が終了するまで、ステップＳ２０２〜Ｓ２０３の処理を繰り返し行う。
そして、全ての階層における処理が終了すると、図２のフローチャートを終了する。
【００２１】
次に、図３のフローチャートを参照しながら、図２のステップＳ２０１の分配方法決定処理の一例を説明する。
まず、ステップＳ３０１において、分配方法決定部１０１は、入力画像に対する縮小率を決定する。前述したように本実施形態では、縮小部１０２、１０３、１０４、１０５における縮小率は、それぞれ、１、１／２、１／４、１／８である。したがって、分配方法決定部１０１は、入力画像に対する縮小率を、このように決定する。
【００２２】
次に、ステップＳ３０２において、分配方法決定部１０１は、演算ユニット（ＧＰＵ）の性能比を取得する。図４は、演算ユニットの性能比の一例を表形式で示す図である。
列４０１は、画像処理装置１００が使用可能な演算ユニットを表す。前述したように本ン実施形態では、画像処理装置１００は、１台のＣＰＵと４台のＧＰＵとを備える。そこで、図４では、ＣＰＵが１台、ＧＰＵが４台使用可能であるとしている。このように本実施形態では、画像処理装置１００は、ＣＰＵとＧＰＵとを有する。また、本実施形態では、ＣＰＵは、ＧＰＵを制御するための演算装置と位置づけ、図２のステップＳ２０２のような実処理は実施しないこととする。ただし、並列に処理を行うことが可能であれば、ＣＰＵが図２のステップＳ２０２の並列処理を実施してもよい。
【００２３】
列４０２は、列４０１の使用可能な演算ユニットの種類を表す。図４に示す例では、ＣＰＵはＣｏｒｅ＿ＸＸＸであり、４台のＧＰＵは全てＧＴＸ＿ＸＸＸであることを意味する。尚、列４０２の情報は、なくてもよい。
列４０３は、各演算ユニット（ＧＰＵ）の性能比を表す。本実施形態では、４台のＧＰＵが全て同じＧＰＵであるため、各ＧＰＵ１〜４の性能比は、何れも１である。ここで、性能比は、各ＧＰＵ１〜４の処理速度に関する性能の相対的な関係を示すものであり、値が大きいものほど、性能が高い（処理速度が速い）ものとする。
【００２４】
図３の説明に戻り、ステップＳ３０３において、分配方法決定部１０１は、入力画像に対する縮小率と演算ユニットの性能比とに基づいて、処理比を算出する。
図５は、演算ユニット（ＧＰＵ）の処理比の一例を表形式で示す図である。尚、図５において、階層１が最上位の階層であり、階層２、３、４の順に順位が下がるものとする。
【００２５】
分配方法決定部１０１は、画像処理装置１００が使用可能な演算ユニット（ＧＰＵ）から、１以上の演算ユニット（ＧＰＵ）を選択する選択パターンとしてとり得る全てのパターンを抽出する。このとき、複数の選択パターンが、同じ性能の演算ユニット（ＧＰＵ）の組み合わせからなる場合には、それら複数のユニット選択パターンを１つのユニット選択パターンとする。例えば、ＧＰＵ１、ＧＰＵ２、およびＧＰＵ３が同じ性能を有し、ＧＰＵ４が異なる性能を有する場合、２つの演算ユニットを選択する選択パターンとして、ＧＰＵ１とＧＰＵ２、ＧＰＵ１とＧＰＵ３、ＧＰＵ２とＧＰＵ３等を選択する選択パターンがある。この場合、ＧＰＵ１、ＧＰＵ２、およびＧＰＵ３は同じ性能を有するので、これら３つの選択パターンは同じ性能のＧＰＵの組み合わせからなる。よって、これら３つの選択パターンを１つに纏め、１つの選択パターンとする。尚、以下の説明では、このパターンを必要に応じてユニット選択パターンと称する。
【００２６】
本実施形態では、画像処理装置１００が使用可能な４台の演算ユニット（ＧＰＵ）の種類（性能）は全て同じである。このため、図５に示す例では、４台の演算ユニット（ＧＰＵ）から任意の１台、２台、３台、および４台がユニット選択パターンとして抽出される。一方、例えば、画像処理装置１００が使用可能な４台の演算ユニット（ＧＰＵ）が全て異なる種類（性能）である場合に、当該４台の演算ユニット（ＧＰＵ）から１台の演算ユニット（ＧＰＵ）を選択する場合には、それぞれの演算ユニット（ＧＰＵ）を選択する。即ち、この場合には、４通りのユニット選択パターンが抽出される。
【００２７】
分配方法決定部１０１は、このようにして抽出したユニット選択パターンのそれぞれについて、以下の処理を行う。
まず、分配方法決定部１０１は、ユニット選択パターンに属する演算ユニット（ＧＰＵ）を用いて各階層を処理する際の当該演算ユニット（ＧＰＵ）の単位時間当たりの処理量（処理速度）の相対値を算出する。
【００２８】
前述したように本実施形態では、画像処理装置１００が使用可能な４台の演算ユニット（ＧＰＵ）の性能は同じ（性能比が全て１）である。このため、ユニット選択パターンに属する演算ユニットの数が４台である場合、当該演算ユニット（ＧＰＵ）を用いて各階層を処理する際の当該演算ユニット（ＧＰＵ）の単位時間当たりの処理量（処理速度）の相対値は、縮小率と同値になる。従って、図５に示すように、演算ユニットの数が４台である場合の処理比は、１：１／２：１／４：１／８になる。尚、画像処理装置１００が使用可能な演算ユニット（ＧＰＵ）の性能が異なる場合には、性能が高い演算ユニット（ＧＰＵ）であるほど処理比が大きくなるようにする。即ち、縮小率が同じであると仮定した場合に、性能比が相対的に大きい演算ユニットにおける前述した相対値（単位時間当たりの処理量（処理速度）の相対値）が、小さい演算ユニットにおける前述した相対値よりも大きくなるように、処理比が算出される。例えば、全ての演算ユニット（ＧＰＵ）の性能が同じである場合の各演算ユニットの処理比に、それらの演算ユニットのうち性能が最低である演算ユニットの性能に対する当該演算ユニットの性能の比を乗算した値を、各演算ユニットの処理比にすることができる。
【００２９】
また、ユニット選択パターンに属する演算ユニットが１台の場合、当該演算ユニット（ＧＰＵ）を用いて階層１〜４を処理する際の当該演算ユニット（ＧＰＵ）の単位時間当たりの処理量（処理速度）の相対値は、縮小率の総和（＝１５／８）である。この場合、処理比は、１５／８になる。
【００３０】
一方、分配方法決定部１０１は、ユニット選択パターンに属する演算ユニット（ＧＰＵ）の数が２台以上、階層１〜４の総数（本実施形態では４台）未満である場合には、以下の処理を行って処理比を算出する。
前述したのと同様に分配方法決定部１０１は、ユニット選択パターンに属する演算ユニット（ＧＰＵ）を用いて各階層１〜４を処理する際の当該演算ユニット（ＧＰＵ）の単位時間当たりの処理量（処理速度）の相対値を算出する。ただし、この場合には、演算ユニット（ＧＰＵ）に割り当てることができる階層１〜４のパターンが複数存在する。そこで、分配方法決定部１０１は、これらそれぞれのパターンについて、前述した相対値を算出する。尚、以下の説明では、このパターンを必要に応じて階層選択パターンと称する。また、本実施形態では、１つの階層選択パターンに属する複数の階層は、順位が連続する階層であり、不連続の順位の複数の階層が１つの階層選択パターンに含まれることはないものとする。
【００３１】
そして、分配方法決定部１０１は、前述した相対値（単位時間当たりの処理量（処理速度）の相対値）の差が最も小さくなる階層選択パターンを抽出し、抽出した階層選択パターンにおける相対値の比を、処理比とする。
図５に示す例において、例えば、演算ユニット（ＧＰＵ）の数が３台である場合、階層選択パターンとして、階層１と、階層２と、階層３、４がある。さらに、この階層選択パターンの他にも、例えば、階層１、２と、階層３と、階層４等の階層選択パターンがある。前者の階層選択パターンにおける前述した相対値（単位時間当たりの処理量（処理速度）の相対値）は、図５に示すように、１、１／２、３／８である。これに対し、後者の階層選択パターンにおける前述した相対値（単位時間当たりの処理量（処理速度）の相対値）は、３／２、１／４、１／８である。
【００３２】
そして、前者の階層選択パターンにおける前述した相対値（単位時間当たりの処理量（処理速度）の相対値）の差の最大値は１／２（＝１−１／２）である。これに対し、後者の階層選択パターンにおける前述した相対値の差の最大値は１１／８（＝３／２−１／８）である。従って、前者の階層選択パターンにおける前述した相対値（単位時間当たりの処理量（処理速度）の相対値）の差の方が、後者の階層選択パターンにおける前述した相対値の差よりも小さくなる。このような計算を全ての階層選択パターンについて行うと、階層１と、階層２と、階層３、４の階層選択パターンにおける前述した相対値の差が最小になる。従って、図５に示すように、演算ユニットの数が３台である場合の処理比は、１：１／２：３／８になる。
以上のようにして図５に示す演算ユニット（ＧＰＵ）の数が３台である場合の処理比が算出される。図５に示す演算ユニット（ＧＰＵ）の数が２台である場合の処理比も、演算ユニット（ＧＰＵ）の数が３台である場合の処理比と同様にして算出されるので、ここでは、その詳細な説明を省略する。
【００３３】
図３の説明に戻り、分配方法決定部１０１は、処理比を算出した際に採用した階層選択パターンのそれぞれについて、オーバーヘッドの量の相対値であるオーバーヘッド比を設定する。本実施形態では、メモリ転送のようなオーバーヘッドを考慮するものとする。図６は、演算ユニット（ＧＰＵ）のオーバーヘッド比の一例を表形式で示す図である。
【００３４】
図５に示したように、演算ユニット（ＧＰＵ）の数が２台である場合には、階層１と、階層２〜４の階層選択パターンが採用される。演算ユニット（ＧＰＵ）の数が３台である場合には、階層１と、階層２と、階層３、４の階層選択パターンが採用される。
従って、図６に示すように、演算ユニット（ＧＰＵ）の数が２台、３台である場合には、これらの階層選択パターンについて、オーバーヘッド比が導出される。一方、演算ユニット（ＧＰＵ）の数が１台、４台である場合、階層選択パターンは１通りであるので、当該階層選択パターンについて、オーバーヘッド比が設定される。
【００３５】
図６において、演算ユニット（ＧＰＵ）の数が２台、３台である場合には、１つの演算ユニット（ＧＰＵ）で２以上の階層をまとめて処理する。本実施形態では、１つの演算ユニット（ＧＰＵ）で２以上の階層をまとめて処理する場合には、１つの演算ユニット（ＧＰＵ）で１つの階層を処理する場合に比べ、メモリ転送等によるオーバーヘッドが削減される前提でオーバーヘッド比が導出されるものとする。
【００３６】
また、本実施形態では、演算ユニット（ＧＰＵ）に割り当てることができる階層１〜４の全ての階層選択パターンについて、オーバーヘッド比を予め画像処理装置１００に記憶させておく。従って、分配方法決定部１０１は、このように記憶されているオーバーヘッド比を読み出して設定することになる。ただし、必ずしもオーバーヘッド比を予め画像処理装置１００に記憶させておく必要はない。例えば、分配方法決定部１０１は、ステップＳ３０１で決定した縮小率およびステップＳ３０２で取得した性能比に応じて、オーバーヘッド比を算出してもよい。
【００３７】
図３の説明に戻り、ステップＳ３０５において、分配方法決定部１０１は、処理比を算出した際に採用した階層選択パターンのそれぞれについて、各演算ユニット（ＧＰＵ）の処理時間［ｍｓ］を算出する。本実施形態では、この処理は、ステップＳ３０３およびステップＳ３０４にて算出された処理比およびオーバーヘッド比に基づいて、演算ユニット（ＧＰＵ）が処理に要する時間を見積もる処理となる。具体的に説明すると、例えば、処理時間は、図５における処理比×αと、図６におけるオーバーヘッド比×βとの加算（＝処理比×α＋オーバーヘッド比×β）により算出することができる。αは、処理比を時間に換算する係数であり、本実施形態では予め設定されるものとする。βは、オーバーヘッド比を時間に換算する係数であり、本実施形態では予め設定されるものとする。具体的に本実施形態では、αを１００（α＝１００）、βを１０（β＝１０）とする場合を例に挙げて説明する。ただし、α、βの値は、これらの値に限定されるものではない。
【００３８】
図７は、使用する演算ユニット（ＧＰＵ）の数に応じた階層選択パターンごとの処理時間の一例を表形式で示す図である。例えば、演算ユニット（ＧＰＵ）が２台の場合、図５より、処理比＝（１：７／８）、図６よりオーバーヘッド比＝（５：２）である。このため、階層１における処理時間は１５０［ｍｓ］（＝１×１００＋５×１０）となる。一方、階層２から階層４における処理時間は１０７．５［ｍｓ］（＝７／８×１００＋２×１０）となる。このような計算を全ての階層選択パターンについて行うことにより、図７に示す処理時間が得られる。
【００３９】
図３の説明に戻り、ステップＳ３０６において、分配方法決定部１０１は、ステップＳ３０５にて算出した処理時間に基づいて、分配方法（どの階層に対する処理を、どの演算ユニット（ＧＰＵ）に実行させるのか）を決定する。本実施形態では、処理比を算出した際に採用した階層選択パターンのうち、可及的に少ない演算ユニット（ＧＰＵ）で処理時間が最小になる階層選択パターンを選択する。図７を参照しながら、分配方法を決定する方法の具体例を説明する。本実施形態のシステム（画像処理装置１００）では、図１および図２にて示した通り、階層ごとに処理が依存しているという特徴がある。すなわち、下位の階層における処理が終了しないと上位の階層における処理が終了しないという特徴がある。従って、システムの全体の処理時間は、最大処理時間に依存する。このようなシステムにおいて、限られた演算ユニット（ＧＰＵ）を効率的に活用し処理を高速化するためには、例えば、以下のようにすることになる。即ち、或る階層選択パターンにおいて、当該階層選択パターンに属する階層群における処理時間のうち、１番目に長い処理時間と２番目に長い処理時間との差が小さいほど、効率的であると言える。
【００４０】
図７において、演算ユニット（ＧＰＵ）の数が２台の階層選択パターンに属する階層群における処理時間のうち、１番目に長い処理時間と２番目に長い処理時間との差は、４２．５（１５０−１０７．５）である（これをＴ２とする）。また、演算ユニット（ＧＰＵ）の数が３台の階層選択パターンに属する３つの階層群における処理時間のうち、１番目に長い処理時間と２番目に長い処理時間との差は、６０（１５０−９０）である（これをＴ３とする）。また、演算ユニット（ＧＰＵ）の数が４台の階層選択パターンに属する４つの階層群における処理時間のうち、１番目に長い処理時間と２番目に長い処理時間との差は、６０（１５０−９０）である（これをＴ４とする）。従って、Ｔ２＜Ｔ３＝Ｔ４となる。よって、本実施形態では、演算ユニット（ＧＰＵ）の数が２台の階層選択パターンが最適な分配方法となる。
以上のようにして分配方法が決定されると、図３のフローチャートによる処理を終了する。
【００４１】
次に、図８のフローチャートを参照しながら、図２のステップＳ２０２の並列処理の一例を説明する。図３のフローチャートで決定された分配方法により階層が割り当てられた演算ユニット（ＧＰＵ）のそれぞれが並列して図８のフローチャートを実行する。前述したように、本実施形態のシステム（画像処理装置１００）では、図１および図２にて示した通り、階層ごとに処理が依存し、下位の階層における処理が終了しないと上位の階層における処理が終了しない。そこで、この依存性を担保するために、本実施形態では、各演算ユニット（ＧＰＵ）は、自身が処理を実行する階層のうち、最下位の階層から順にシーケンシャルに処理を実行する。
【００４２】
ステップＳ８０１において、演算ユニット（ＧＰＵ）は、自身が処理を実行する階層のうち、最下位の階層を指定する。
次に、ステップＳ８０２において、ステップＳ８０１で指定された階層に対応する縮小部１０２、１０３、１０４または１０５は、縮小処理を行う。
次に、ステップＳ８０３において、ステップＳ８０１で指定された階層に対応するノイズ低減処理部１０６、１０７、１０８または１０９は、ノイズ低減処理を行う。
【００４３】
次に、ステップＳ８０４において、演算ユニット（ＧＰＵ）は、自身が処理を実行する全ての階層について、縮小処理とノイズ低減処理を実行したか否かを判定する。
この判定の結果、全ての階層について、縮小処理とノイズ低減処理を実行していない場合には、ステップＳ８０５に進む。そして、演算ユニット（ＧＰＵ）は、現在指定している階層の１つ上位の階層を指定する。そして、前述したステップＳ８０２に進む。この場合、ステップＳ８０２、Ｓ８０３では、それぞれ、ステップＳ８０１ではなく、ステップＳ８０５で指定された階層に対応する縮小部１０３、１０４または１０５、ノイズ低減処理部１０７、１０８または１０９が処理を行う。
【００４４】
そして、全ての階層について、縮小処理とノイズ低減処理を実行するまで、ステップＳ８０２〜Ｓ８０５の処理を繰り返し行う。このようにして全ての階層について、縮小処理とノイズ低減処理が実行されると、ステップＳ８０６に進む。
ステップＳ８０６に進むと、演算ユニット（ＧＰＵ）は、自身が処理を実行する階層よりも下位の階層における処理の結果があるか否かを判定する。この判定の結果、下位の階層における処理の結果がない場合には、図８のフローチャートによる処理を終了する。
【００４５】
一方、下位の階層における処理の結果がある場合には、ステップＳ８０７に進む。ステップＳ８０７に進むと、演算ユニット（ＧＰＵ）が処理を実行する全ての階層に対応する合成部１１０、１１１、１１２は、次の処理を行う。即ち、それらの合成部１１０、１１１、１１２は、自身が属する階層の１つ下位の階層における処理の結果として得られる画像と、自身が属する階層において縮小処理とノイズ低減処理とが行われた画像とを合成する。そして、図８のフローチャートによる処理を終了する。
【００４６】
図７において、演算ユニット（ＧＰＵ）の数が２台の階層選択パターンが分配方法として決定された場合には、まず、階層１に対して、縮小処理とノイズ低減処理が行われる。従って、階層１に対する処理を実行することが割り当てられた演算ユニット（ＧＰＵ）は、ステップＳ８０２、ステップＳ８０３の処理を１回だけ行う。
【００４７】
一方、階層２〜階層４に対しては、縮小処理とノイズ低減処理をそれぞれの階層について行う必要がある。従って、階層２〜４に対する処理を実行することが割り当てられた演算ユニット（ＧＰＵ）は、ステップＳ８０２、ステップＳ８０３の処理を３回行う必要がある。
尚、この場合、階層１に対応する縮小部およびノイズ低減処理部は、それぞれ縮小部１０２、ノイズ低減処理部１０６である。また、階層２、３、４に対応する縮小部およびノイズ低減処理部は、それぞれ縮小部１０３、１０４、１０５、ノイズ低減処理部１０７、１０８、１０９である。
【００４８】
以上のように本実施形態では、複数の演算ユニット（ＧＰＵ）は、画像に対する縮小率が小さいものほど下位の階層になり、且つ、縮小率と１対１で対応するように定められた階層ごとに、入力された画像に対する処理を並列に行う。この際、複数の演算ユニットから１以上の演算ユニットを選択する選択パターン（ユニット選択パターン）を抽出する。また、これらのユニット選択パターンのそれぞれにおいて、当該ユニット選択パターンに属する演算ユニットに割り当てることができる階層の選択パターン（階層選択パターン）を抽出する。これらの階層選択パターンのそれぞれにおいて、処理量とオーバーヘッドの量を導出する。そして、これら処理量とオーバーヘッドとに基づいて、階層選択パターンのそれぞれにおいて、処理時間を算出し、算出した処理時間に基づいて、分配方法（どの階層に対する処理を、どの演算ユニット（ＧＰＵ）に実行させるのか）を決定する。したがって、１つの画像から生成される複数の画像のそれぞれを１つの階層における処理として当該複数の画像を並列処理する際の処理時間を短くすることができる。
【００４９】
また、前述したように、本実施形態のシステム（画像処理装置１００）では、階層ごとに処理が依存し、下位の階層における処理が終了しないと上位の階層における処理が終了しない。このように、階層的に処理を施すと、階層間での処理に依存関係が生じる、このため、階層ごとに処理を並列化する場合、階層によっては、当該階層の処理時間が、依存関係のある階層の処理時間に依存し、待ち時間が生じる虞がある。そこで、本実施形態では、分配方法により複数の階層に対する処理を行う演算ユニットは、当該複数の階層のうち、下位の階層から順に処理を行う。したがって、複数の階層に対する処理を１つの演算ユニットでまとめて実施する際においても、階層間の依存関係を担保することが可能となる。
【００５０】
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００５１】
（その他の実施例）
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）が当該コンピュータプログラムを読み出して実行する。
【符号の説明】
【００５２】
１００：画像処理装置、１０１：分配方法決定部、１０２〜１０５：縮小部、１０６〜１０９：ノイズ低減処理部、１１０〜１１２：合成部
【図１】
2017107381.tif 000003
【図２】
2017107381.tif 000004
【図３】
2017107381.tif 000005
【図４】
2017107381.tif 000006
【図５】
2017107381.tif 000007
【図６】
2017107381.tif 000008
【図７】
2017107381.tif 000009
【図８】
2017107381.tif 000010