(第1の実施形態)
以下、本発明の実施形態について、図面を参照して説明する。第1の実施形態の画像処理装置(以下、「画像処理装置1」という)は、例えば、グレースケール画像など、それぞれの画素の値として輝度値のみが含まれる画像(以下、「輝度画像」という)の領域を複数に分割し、複数の演算リソースで並列に領域分割処理の演算を行う画像処理装置である。
最初に、第1の実施形態の画像処理装置1が行う領域分割処理の概念について説明する。図1A〜図1Cは、本発明の第1の実施形態の画像処理装置1における領域分割処理の概念を説明する図である。図1Aは、画像処理装置1において領域分割処理の対象となる輝度画像の一例を示している。図1Aに示した輝度画像は、周辺の画素の中で最も輝度値が高い画素(以下、「頂点画素」という)が3つあるグレースケール画像である。
図1Aに示したような輝度画像が入力されると、画像処理装置1は、まず、輝度画像に含まれるそれぞれの画素を、頂点画素に向かう勾配を示す値(以下、「勾配ラベル」という)で表した勾配データを生成する。ここで言う「勾配」とは、ある画素に注目したとき、その画素の周辺に位置する画素の中で輝度値が高い画素に向かう方向を示すものである。図1Bには、画像処理装置1が生成した勾配データの一例を示している。図1Bに示したように、勾配データは、頂点画素に向かう勾配ラベルを、それぞれの頂点画素の周辺に位置する画素(以下、「周辺画素」という)のそれぞれに付与したデータである。なお、勾配データは、それぞれの画素を勾配ラベルである値で表したデータであるが、図1Bでは、理解を容易にするため、図1Aに示した輝度画像上に、矢印で勾配を模式的に示した勾配ラベルを重畳した形で勾配データを示している。なお、図1Bにおいて「8」、「9」、「10」と示した位置に位置する画素は、頂点画素である。このように、頂点画素には、勾配ラベルではなく、頂点であることを示す値(以下、「頂点ラベル」という)が勾配データ内に表される。図1Bに示した勾配データでは、「8」、「9」、および「10」のそれぞれが、頂点ラベルである。
その後、画像処理装置1は、勾配データに含まれる勾配ラベルと頂点ラベルとに基づいて、輝度画像内の領域を、同じ頂点画素に属する画素が含まれる領域に分割する領域分割処理を行う。この領域分割処理において画像処理装置1は、同じ頂点画素に属するそれぞれの周辺画素に、同じ領域に属する画素であることを示す値(以下、「領域ラベル」という)を付与する演算を、複数の演算リソースで並列に行う。図1Cには、画像処理装置1が領域ラベルを付与する演算を行った結果である領域ラベルデータの一例を示している。図1Cに示したように、領域ラベルデータは、同じ頂点画素に属する周辺画素のそれぞれに、その頂点画素に付与された頂点ラベルと同じ値が領域ラベルとして付与されたデータである。なお、図1Cでは、理解を容易にするため、図1Aに示した輝度画像上に領域ラベルを重畳した形で領域ラベルデータを示している。
このようにして画像処理装置1では、同じ頂点画素に属する周辺画素に同じ領域ラベルを付与する領域分割処理を、複数の演算リソースで並列に行う。
次に、画像処理装置1の構成について説明する。図2は、本発明の第1の実施形態における画像処理装置1の概略構成の一例を示したブロック図である。図2に示した画像処理装置1は、勾配データ生成部11と、勾配データ記憶部12と、頂点座標記憶部13と、頂点座標分配信号生成部14と、頂点座標分配部15と、n個の領域ラベル生成部16−1〜領域ラベル生成部16−nと、領域ラベル記憶部17と、を備えている。
勾配データ生成部11は、入力された輝度画像に対応する勾配データを生成し、生成した勾配データを勾配データ記憶部12に出力する。より具体的には、勾配データ生成部11は、輝度画像に含まれるそれぞれの画素が頂点画素であるか、周辺画素であるかを判定し、頂点画素に頂点ラベルを、周辺画素に勾配ラベルをそれぞれ付与した勾配データを生成する。そして、勾配データ生成部11は、生成した勾配データを勾配データ記憶部12に出力する。また、勾配データ生成部11は、生成した勾配データに含まれる頂点画素の位置を表す座標(以下、「頂点座標」という)を頂点座標記憶部13に出力する。
勾配データ記憶部12は、勾配データ生成部11から出力された勾配データを記憶する。
頂点座標記憶部13は、勾配データ生成部11から出力された頂点座標を記憶する。
頂点座標分配信号生成部14は、頂点座標記憶部13に記憶された頂点座標に基づいて、輝度画像において同じ頂点画素に属する周辺画素に領域ラベルを付与する演算を、画像処理装置1に備えたそれぞれの演算リソースに分配する。そして、頂点座標分配信号生成部14は、演算リソースに演算を分配した情報を、頂点座標分配部15に出力する。より具体的には、頂点座標分配信号生成部14は、頂点座標記憶部13から読み出した頂点座標に基づいて、それぞれの頂点画素に属する周辺画素の領域の大きさ、つまり、それぞれの領域の面積を簡易的に推定する。そして、頂点座標分配信号生成部14は、推定した領域の面積に基づいて、それぞれの頂点画素に対する演算を行う演算リソースを割り当てる。そして、頂点座標分配信号生成部14は、割り当てた演算リソースを表す分配信号をそれぞれの頂点座標に付与して、頂点座標分配部15に出力する。
頂点座標分配部15は、頂点座標分配信号生成部14から入力された頂点座標に付与された分配信号に基づいて、対応する演算リソースに、入力されたそれぞれの頂点座標を分配する(振り分ける)。
領域ラベル生成部16−1〜領域ラベル生成部16−nのそれぞれは、輝度画像において同じ頂点画素に属する周辺画素に領域ラベルを付与する演算を行う、画像処理装置1に備えた演算リソースである。領域ラベル生成部16−1〜領域ラベル生成部16−nのそれぞれは、頂点座標分配部15から入力された頂点座標に位置する頂点画素に属する周辺画素のそれぞれに、頂点画素に付与された頂点ラベルと同じ値の領域ラベルを付与する。このとき、領域ラベル生成部16−1〜領域ラベル生成部16−nのそれぞれは、勾配データ記憶部12に記憶された勾配データに基づいて、同じ頂点画素に属する周辺画素の領域を演算する。そして、領域ラベル生成部16−1〜領域ラベル生成部16−nのそれぞれは、同じ頂点画素に属する周辺画素に付与した領域ラベルを領域ラベル記憶部17に出力する。なお、以下の説明において、領域ラベル生成部16−1〜領域ラベル生成部16−nのそれぞれを区別せずに表すときには、「領域ラベル生成部16」という。
領域ラベル記憶部17は、領域ラベル生成部16−1〜領域ラベル生成部16−nのそれぞれから出力された領域ラベルを記憶する。これにより、領域ラベル記憶部17には、図1Cに示したような領域ラベルデータが記憶される。
このような構成によって、画像処理装置1は、同じ頂点画素に属する周辺画素に頂点ラベルと同じ領域ラベルを付与した領域ラベルデータを生成する領域分割処理を、複数の演算リソースで並列に行う。
次に、画像処理装置1に備えたそれぞれの構成要素について説明する。まず、勾配データ生成部11について説明する。勾配データ生成部11は、入力された輝度画像の左上に配置された画素からラスター順に、頂点画素であるか周辺画素であるかの判定を行う。以下の説明においては、頂点画素であるか周辺画素であるかの判定を行っている現在の画素を、「注目画素」という。また、勾配データ生成部11は、注目画素が頂点画素であるか周辺画素であるかを判定した結果に応じて、それぞれの注目画素に頂点ラベルまたは勾配ラベルを付与する。このときに勾配データ生成部11がそれぞれの注目画素に付与する頂点ラベルや勾配ラベルの値は、注目画素の輝度値と、注目画素の周囲に位置する画素(以下、「周囲画素」という)の輝度値との関係に基づいて予め定めている。
図3A〜図3Iは、本発明の第1の実施形態の画像処理装置1において処理を行う画素(注目画素)に付与する頂点ラベルまたは勾配ラベルの一例を説明する図である。図3A〜図3Iのそれぞれには、丸で囲んで示した注目画素の輝度値と、注目画素の周囲に位置する8つの周囲画素の輝度値との関係に基づいて、勾配データ生成部11が注目画素に付与する頂点ラベルまたは勾配ラベルの値の一例を示している。図3A〜図3Hには、注目画素が周辺画素である場合に勾配データ生成部11が付与する勾配ラベルの値の一例を示し、図3Iには、注目画素が頂点画素である場合に勾配データ生成部11が付与する頂点ラベルの値の一例を示している。
上述したように、勾配ラベルは、注目画素の周辺に位置する画素の中で輝度値が高い画素に向かう方向を示すものである。このため、勾配データ生成部11は、注目画素よりも輝度値が高い画素が位置する方向によって、図3A〜図3Hに示したような、8種類の値のいずれか1つの値の勾配ラベルを、注目画素に付与する。例えば、図3Aに示した一例では、注目画素の周囲に位置する8つの周囲画素の内、注目画素の輝度値(=「54」)よりも高い値である周囲画素が4つある。そして、この4つの周囲画素において左斜め上方向に位置する周囲画素の輝度値(=「99」)が最も高い値となっている。この場合、勾配データ生成部11は、注目画素から見た勾配方向が左斜め上方向である、つまり、注目画素は周辺画素であり、この注目画素が属する頂点画素が左斜め上方向に位置すると判定する。注目画素の輝度値と周囲画素の輝度値が図3Aに示したような関係である場合、勾配データ生成部11は、値が「0」である勾配ラベルを注目画素に付与する。
同様に、勾配データ生成部11は、注目画素から見た、高い輝度値の周囲画素が位置する方向に対応する値(「1」〜「7」)の勾配ラベルを、それぞれの注目画素に付与する。図3Bには、勾配データ生成部11が、注目画素が属する頂点画素が上方向に位置すると判定し、値が「1」である勾配ラベルを注目画素に付与する場合の一例を示している。また、図3Cには、勾配データ生成部11が、注目画素が属する頂点画素が右斜め上方向に位置すると判定し、値が「2」である勾配ラベルを注目画素に付与する場合の一例を示している。また、図3Dには、勾配データ生成部11が、注目画素が属する頂点画素が左方向に位置すると判定し、値が「3」である勾配ラベルを注目画素に付与する場合の一例を示している。また、図3Eには、勾配データ生成部11が、注目画素が属する頂点画素が右方向に位置すると判定し、値が「4」である勾配ラベルを注目画素に付与する場合の一例を示している。また、図3Fには、勾配データ生成部11が、注目画素が属する頂点画素が左斜め下方向に位置すると判定し、値が「5」である勾配ラベルを注目画素に付与する場合の一例を示している。また、図3Gには、勾配データ生成部11が、注目画素が属する頂点画素が下方向に位置すると判定し、値が「6」である勾配ラベルを注目画素に付与する場合の一例を示している。また、図3Hには、勾配データ生成部11が、注目画素が属する頂点画素が右斜め下方向に位置すると判定し、値が「7」である勾配ラベルを注目画素に付与する場合の一例を示している。
また、上述したように、頂点ラベルは、注目画素が周辺に位置する画素の中で最も輝度値が高い画素であることを示すものである。このため、勾配データ生成部11は、注目画素が頂点画素である場合、図3Iに示したような、勾配ラベルと異なる値の頂点ラベルを、注目画素に付与する。例えば、図3Iに示した一例では、注目画素の周囲に位置する8つの周囲画素の画素値よりも、注目画素の画素値が高い値となっている。この場合、勾配データ生成部11は、この注目画素が、周辺に位置する画素よりも輝度値が高い頂点画素であると判定する。注目画素の輝度値と周囲画素の輝度値が図3Iに示したような関係である場合、勾配データ生成部11は、値が「8」以上である頂点ラベルを注目画素に付与する。なお、勾配データ生成部11は、それぞれの頂点画素に、異なる値の頂点ラベルを付与する。例えば、次に頂点画素であると判定した注目画素には、値が「9」である頂点ラベルを、その注目画素に付与する。
図4は、本発明の第1の実施形態の画像処理装置1に備えた勾配データ生成部11における処理手順を示したフローチャートである。勾配データ生成部11は、輝度画像が入力され、勾配データの生成を開始すると、まず、頂点ラベルの値の初期化を行う(ステップS11)。ここでは、勾配データ生成部11は、頂点ラベルの初期値を、図3Iに示した「8」とする。
続いて、勾配データ生成部11は、ステップS12のループにおいて、入力された輝度画像の左上に配置された画素からラスター順に注目画素として、それぞれの注目画素ごとに、注目画素が頂点画素であるか周辺画素であるかの判定処理を、輝度画像の1フレーム分、すなわち、輝度画像に含まれる全ての画素に対して行う。
勾配データ生成部11における注目画素の判定処理では、まず、注目画素の輝度値と、その注目画素の周囲に位置するそれぞれの周囲画素の輝度値とを輝度画像から取得し、現在の注目画素の輝度値とそれぞれの周囲画素の輝度値とを比較する(ステップS13)。
続いて、勾配データ生成部11は、現在の注目画素の輝度値が、いずれの周囲画素の輝度値よりも高い値であるか否かを判定する(ステップS14)。つまり、勾配データ生成部11は、ステップS14において、現在の注目画素が頂点画素であるか否かを判定する。
ステップS14において、現在の注目画素の輝度値が、いずれの周囲画素の輝度値よりも高い値ではない、つまり、現在の注目画素が周辺画素であると判定した場合(ステップS14の“NO”)、勾配データ生成部11は、ステップS15において、現在の注目画素よりも高い輝度値の周囲画素の中で、最も輝度値が高い周囲画素が位置する方向に対応する値の勾配ラベルを付与した勾配データを生成し、勾配データ記憶部12に出力する。そして、勾配データ生成部11は、ステップS12に戻って、次の注目画素に対する判定処理を行う。
一方、ステップS14において、現在の注目画素の輝度値が、いずれの周囲画素の輝度値よりも高い値である、つまり、現在の注目画素が頂点画素であると判定した場合(ステップS14の“YES”)、勾配データ生成部11は、ステップS16において、現在の注目画素に、現在の値の(最初は初期値(=「8」))の頂点ラベルを付与した勾配データを生成し、勾配データ記憶部12に出力する。また、勾配データ生成部11は、現在の注目画素の位置、すなわち、頂点画素の位置を表す頂点座標を、頂点座標記憶部13に出力する。さらに、勾配データ生成部11は、現在の頂点ラベルの値に「1」を加算して、次の頂点ラベルの値を異なる値(最初は、初期値(=「8」)に「1」を加えた「9」)に変更する。そして、勾配データ生成部11は、ステップS12に戻って、次の注目画素に対する判定処理を行う。
このように、勾配データ生成部11は、ステップS12のループで表された注目画素の判定処理を、輝度画像に含まれる全ての画素に対して行って、つまり、輝度画像の1フレーム分行って、入力された輝度画像に対応する勾配データを生成する。これにより、勾配データ記憶部12には、それぞれの画素に勾配ラベルまたは頂点ラベルが付与された勾配データが記憶される。また、頂点座標記憶部13には、勾配データ記憶部12に記憶された勾配データに含まれるそれぞれの頂点画素の位置を表す頂点座標のそれぞれが記憶される。
頂点座標分配信号生成部14は、頂点座標記憶部13に記憶された頂点座標に基づいて、それぞれの頂点座標に対応する頂点画素に対して演算を行う領域ラベル生成部16を割り当てる処理を行う。
次に、画像処理装置1に備えた頂点座標分配信号生成部14について説明する。図5は、本発明の第1の実施形態の画像処理装置1に備えた頂点座標分配信号生成部14の構成を示したブロック図である。図5に示した頂点座標分配信号生成部14は、領域面積推定部141と、領域面積記憶部142と、頂点座標分配スケジューリング部143と、を備えている。
領域面積推定部141は、頂点座標記憶部13に記憶されているそれぞれの頂点座標に基づいて、輝度画像に含まれるそれぞれの頂点画素に属する周辺画素の領域の大きさ(面積)を簡易的に推定する。そして、領域面積推定部141は、推定したそれぞれの頂点画素に属する周辺画素の領域の面積(以下、「領域面積」という)の情報を、領域面積記憶部142に出力する。
領域面積記憶部142は、領域面積推定部141から出力された領域面積の情報を記憶する。
頂点座標分配スケジューリング部143は、領域面積記憶部142に記憶された領域面積の情報に基づいて、それぞれの頂点画素に対する演算を、領域ラベル生成部16のそれぞれに割り当てる。そして、頂点座標分配スケジューリング部143は、演算を割り当てた領域ラベル生成部16を表す分配信号を、それぞれの頂点座標に付与する。
ここで、頂点座標分配信号生成部14に備えたそれぞれの構成要素について説明する。まず、領域面積推定部141について説明する。例えば、画像処理装置1において、入力された輝度画像に含まれる画素をラスター順に判定し、頂点画素であると判定された順に領域面積を求める演算を行うと、輝度画像内のそれぞれの頂点画素の配置によっては、それぞれの領域ラベル生成部16の演算負荷に大きな差が生じてしまう。つまり、それぞれの領域ラベル生成部16が演算を行う領域面積の大きさに差が生じ、演算負荷が均等ではなくなってしまう。そこで、画像処理装置1では、まず、領域面積推定部141が、頂点座標記憶部13に記憶されている頂点座標に基づいて、それぞれの頂点画素に属する領域面積を簡易的に推定する。これにより、画像処理装置1では、頂点座標分配スケジューリング部143が、推定した領域面積に基づいて、それぞれの領域ラベル生成部16が演算を行う領域面積の大きさの差が最小になるように、それぞれの頂点画素に対する演算を振り分けることができる。つまり、画像処理装置1では、推定した領域面積に基づいて、最終的に領域面積を演算する際の演算負荷がほぼ均等になるように、それぞれの頂点画素に対して演算する領域ラベル生成部16を振り分けることができる。
図6は、本発明の第1の実施形態の画像処理装置1に備えた領域面積推定部141において行う領域面積の推定処理の概念を説明する図である。図6では、輝度画像に含まれるそれぞれの頂点画素の位置を黒塗りの丸で示し、仮に画像処理装置1に備えた領域ラベル生成部16のそれぞれが領域分割処理を行ったときの最終的な領域面積の境界を点線で模式的に示している。
領域面積推定部141による領域面積の推定処理では、頂点画素を中心として予め定めた距離の閾値内に存在する他の頂点座標の数、すなわち、予め定めた距離の閾値で設定される領域内に存在する頂点画素の密度(以下、「頂点密度」という)によって、この頂点画素に属する領域面積を簡易的に推定する。
図6には、予め定めた距離の閾値で設定される領域(以下、「閾値領域」という)を、一点鎖線で示している。図6においては、頂点画素t3を中心とした閾値領域a1内に他の3つの頂点画素(頂点画素t1、頂点画素t2、および頂点画素t4)が存在し、頂点画素t5を中心とした閾値領域a2内に他の頂点画素が存在していない場合を示している。これは、閾値領域a1の頂点密度は、閾値領域a2の頂点密度よりも4倍高いことを示している。このように、頂点密度、すなわち、閾値領域で示された単位面積内に存在する頂点画素の数は、閾値領域内に存在する頂点画素に属する領域面積が狭い場合に大きくなり、領域面積が広い場合に小さくなる。このことから、領域面積推定部141では、頂点密度の逆数を用いて、それぞれの頂点画素に属する領域面積を簡易的に推定する。例えば、図6に示した一例では、閾値領域a1内のそれぞれの頂点画素に属する領域面積は閾値領域の1/4以下の面積であると推定し、閾値領域a2内の頂点画素に属する領域面積は閾値領域の面積以上であると推定する。
図7は、本発明の第1の実施形態の画像処理装置1に備えた領域面積推定部141における処理手順を示したフローチャートである。領域面積推定部141における領域面積の推定処理では、領域面積推定部141が、それぞれの頂点座標から求められる2つの頂点画素の間の距離に基づいて、頂点画素が閾値領域内に存在するか否かの判定を行う。より具体的には、領域面積推定部141は、頂点密度を算出する閾値領域の中心に位置する基準の頂点画素と、他の頂点画素との2つの頂点画素間の距離に基づいて、他の頂点画素が、基準の頂点画素の閾値領域内に存在するか否かを判定する。このとき領域面積推定部141は、すでに距離の算出が終了している2つの頂点画素に関しては、重複して距離の算出を行わないようにする。
以下の説明においては、頂点座標記憶部13に記憶された頂点座標の数が「3」であるものとし、1つ目の頂点画素を中心とした閾値領域内に、2つ目の頂点画素が存在するものとして、図7に示した領域面積推定部141の処理手順を説明する。そして、それぞれの頂点画素の一例として、図6に示した頂点画素t3を1つ目の頂点画素とし、頂点画素t4を2つ目の頂点画素とし、頂点画素t5を3つ目の頂点画素とした場合における一例を説明する。
領域面積推定部141は、領域面積の推定処理を開始すると、まず、それぞれの頂点画素に対応した頂点密度の値を「0」に初期化(クリア)する(ステップS21)。続いて、領域面積推定部141は、ステップS22の1回目のループにおいて、基準の頂点画素のループカウンタiを「0」に初期化(クリア)する。続いて、領域面積推定部141は、ステップS23の1回目のループにおいて、基準の頂点画素との距離を算出する他の頂点画素のループカウンタjを「ループカウンタi+1」=「1」に初期化する。
続いて、領域面積推定部141は、ループカウンタiに対応する、最初に閾値領域の中心となる基準の頂点画素の位置を表す頂点座標「0」(以下、「基準頂点座標[0]」という)と、ループカウンタjに対応する、基準の頂点画素との距離を算出する他の頂点画素の位置を表す頂点座標「1」(以下、「距離算出頂点座標[1]」という)とのそれぞれを、頂点座標記憶部13から取得する。そして、領域面積推定部141は、頂点座標記憶部13から取得した基準頂点座標[0]と距離算出頂点座標[1]とから2つの頂点画素間の距離を算出する(ステップS24)。なお、ステップS24における2つの頂点画素間の距離の算出は、例えば、ユークリッド距離や市街地距離など、既知の距離計算方法で行う。
例えば、領域面積推定部141は、1つ目の頂点画素t3の位置を表す頂点座標を基準頂点座標[0]とし、2つ目の頂点画素t4の位置を表す頂点座標を距離算出頂点座標[1]として、頂点座標記憶部13から取得し、1つ目の頂点画素t3と2つ目の頂点画素t4との間の距離を算出する。
続いて、領域面積推定部141は、算出した頂点画素間の距離が、予め定めた距離の閾値以下であるか否か、すなわち、基準頂点座標[0]を中心とした閾値領域内に距離算出頂点座標[1]が存在するか否かを判定する(ステップS25)。
例えば、ステップS25の処理では、領域面積推定部141は、1つ目の頂点画素t3に対応する基準頂点座標[0]を中心とした閾値領域a1内に、2つ目の頂点画素t4に対応する距離算出頂点座標[1]が存在するか否かを判定する。
ステップS25において、頂点画素間の距離が閾値以下である、つまり、基準頂点座標[0]を中心とした閾値領域内に距離算出頂点座標[1]が存在すると判定した場合(ステップS25の“YES”)、領域面積推定部141は、基準の頂点画素に対応した頂点密度[0]に「1」を加算する。さらに、領域面積推定部141は、基準の頂点画素との距離を算出した他の頂点画素に対応した頂点密度[1]に「1」を加算する(ステップS26)。これにより、基準頂点座標[0]を中心とした基準の頂点画素の閾値領域内に、距離算出頂点座標[1]に位置する他の頂点画素が存在することを示すとともに、距離算出頂点座標[1]を基準の頂点画素とした場合においても、距離算出頂点座標[1]を中心とした閾値領域内に、基準頂点座標[0]が他の頂点画素として存在することを同時に表す。
例えば、ステップS26の処理では、領域面積推定部141は、1つ目の頂点画素t3に対応する頂点密度[0]の値に「1」を加算し、2つ目の頂点画素t4に対応する頂点密度[1]の値に「1」を加算することにより、頂点画素t3と頂点画素t4とが、互いの閾値領域内に存在することを表す。
このように、距離が閾値以下である2つの頂点画素に対応するそれぞれの頂点密度を同時に更新することによって、互いの頂点画素がそれぞれの閾値領域内に存在することを表す。
そして、領域面積推定部141は、ステップS23の1回目のループを終了する。そして、領域面積推定部141は、ループカウンタjに「1」を加算してループカウンタjを「1+1」=「2」とし、ステップS23の2回目のループの処理を行う。ステップS23の2回目のループの処理では、領域面積推定部141は、ステップS24において、ループカウンタjに対応する距離算出頂点座標[2]を頂点座標記憶部13から取得し、基準頂点座標[0]と距離算出頂点座標[2]とから2つの頂点画素間の距離を算出する。
例えば、ステップS23の2回目のループにおけるステップS24の処理では、領域面積推定部141は、3つ目の頂点画素t5の位置を表す頂点座標を距離算出頂点座標[2]として頂点座標記憶部13から取得し、1つ目の頂点画素t3と3つ目の頂点画素t5との間の距離を算出する。
続いて、領域面積推定部141は、ステップS25において、算出した頂点画素間の距離が、予め定めた距離の閾値以下であるか否か、すなわち、基準頂点座標[0]を中心とした閾値領域内に距離算出頂点座標[2]が存在するか否かを判定する。
例えば、ステップS23の2回目のループにおけるステップS25の処理では、領域面積推定部141は、1つ目の頂点画素t3に対応する基準頂点座標[0]を中心とした閾値領域a1内に、3つ目の頂点画素t5に対応する距離算出頂点座標[2]が存在するか否かを判定する。
ステップS25において、頂点座標間の距離が閾値以下でない、つまり、基準頂点座標[0]を中心とした閾値領域内に距離算出頂点座標[2]が存在しないと判定した場合(ステップS25の“NO”)、領域面積推定部141は、ステップS23の2回目のループを終了する。そして、領域面積推定部141は、ループカウンタjに「1」を加算してループカウンタjを「2+1」=「3」とし、ステップS23の3回目のループの処理を行う。ただし、ここでは、頂点座標数が「3」であるため、領域面積推定部141は、ステップS23のループの処理を終了する条件(j<頂点座標数)から、ステップS23のループを終了する。
続いて、領域面積推定部141は、ループカウンタiに「1」を加算してループカウンタiを「0+1」=「1」とし、ステップS22の2回目のループの処理を行う。そして、領域面積推定部141は、ステップS22の2回目のループの処理におけるステップS23の1回目のループにおいて、基準の頂点画素との距離を算出する他の頂点画素のループカウンタjを「ループカウンタi+1」=「2」に初期化する。
続いて、領域面積推定部141は、ステップS24において、ループカウンタiに対応する、2番目に閾値領域の中心となる基準の頂点画素の位置を表す基準頂点座標[1]と、ループカウンタj=「2」に対応する距離算出頂点座標[2]とのそれぞれを、頂点座標記憶部13から取得する。そして、領域面積推定部141は、頂点座標記憶部13から取得した基準頂点座標[1]と距離算出頂点座標[2]とから2つの頂点画素間の距離を算出する。
例えば、ステップS22の2回目のループ内のステップS23の1回目のループにおけるステップS24の処理では、領域面積推定部141は、2つ目の頂点画素t4の位置を表す頂点座標を基準頂点座標[1]とし、3つ目の頂点画素t5の位置を表す頂点座標を距離算出頂点座標[2]として、頂点座標記憶部13から取得し、2つ目の頂点画素t4と3つ目の頂点画素t5との間の距離を算出する。
なお、ステップS22の2回目のループの処理では、ステップS23の1回目のループにおいて、2つ目の頂点画素t4と1つ目の頂点画素t3との間の距離を算出しない。これは、ステップS22の1回目のループの処理において、すでに1つ目の頂点画素t3と2つ目の頂点画素t4との間の距離の算出を終了しているため、同じ2つの頂点画素間の距離の算出を重複して行わないようにするためである。
続いて、領域面積推定部141は、ステップS25において、算出した頂点画素間の距離が、予め定めた距離の閾値以下であるか否か、すなわち、基準頂点座標[1]を中心とした閾値領域内に距離算出頂点座標[2]が存在するか否かを判定する。
例えば、ステップS22の2回目のループ内のステップS23の1回目のループにおけるステップS25の処理では、領域面積推定部141は、2つ目の頂点画素t4に対応する基準頂点座標[1]を中心とした不図示の閾値領域内に、3つ目の頂点画素t5に対応する距離算出頂点座標[2]が存在するか否かを判定する。
そして、領域面積推定部141は、ステップS22の1回目のループと同様に、ステップS25の判定の結果に応じて、対応した頂点密度[1]および頂点密度[2]の値を更新する。
そして、領域面積推定部141は、ステップS23の1回目のループを終了し、ループカウンタjに「1」を加算してループカウンタjを「2+1」=「3」として、ステップS23の2回目のループの処理を行う。ただし、ここでも、領域面積推定部141は、ステップS23のループの処理を終了する条件(j<頂点座標数)から、ステップS23のループを終了する。
続いて、領域面積推定部141は、ループカウンタiに「1」を加算してループカウンタiを「1+1」=「2」とし、ステップS22の3回目のループの処理を行う。ただし、ここでは、頂点座標数が「3」であるため、領域面積推定部141は、ステップS22のループの処理を終了する条件(i<頂点座標数)から、ステップS22のループを終了する。
このように、領域面積推定部141は、ステップS22のループで閾値領域の中心に位置する基準の頂点画素を順次変更し、ステップS23のループで基準の頂点画素と他の頂点画素との2つの頂点画素間の距離を算出することによって、基準の頂点画素の閾値領域内に他の頂点画素が存在するか否かを判定する。そして、基準の頂点画素の閾値領域内に他の頂点画素が存在すると判定した場合に、基準の頂点画素と他の頂点画素との頂点密度を更新する。これにより、領域面積推定部141は、更新した頂点密度の逆数を、頂点座標記憶部13に記憶されたそれぞれの頂点座標に対応する頂点画素に属する領域面積として簡易的に推定することができる。そして、領域面積推定部141は、推定した領域面積の情報(頂点密度の逆数)を、それぞれの頂点座標に紐付けて、領域面積記憶部142に記憶させる。
頂点座標分配スケジューリング部143は、領域面積記憶部142に記憶された領域面積の情報(頂点密度の逆数)が紐付けられた頂点座標を読み出し、それぞれの領域ラベル生成部16が演算を行う領域面積の総和の差が最小になるように、つまり、領域ラベル生成部16のそれぞれが行う演算負荷の総和が概ね均等になるように、読み出した頂点座標に分配信号を付与して頂点座標分配部15に出力する。
次に、頂点座標分配スケジューリング部143について説明する。図8は、本発明の第1の実施形態の画像処理装置1に備えた頂点座標分配スケジューリング部143の構成を示したブロック図である。図8に示した頂点座標分配スケジューリング部143は、ソート部1431と、ソート済み頂点座標記憶部1432と、分配信号付与部1433と、を備えている。
ソート部1431は、領域面積記憶部142から読み出した頂点座標に紐付けられた領域面積の情報に基づいて、それぞれの頂点座標を、予め定めた順番に並べ替える(ソートする)。例えば、ソート部1431は、それぞれの頂点座標を、対応する頂点画素に属する領域面積が大きい順番にソートする。より具体的には、ソート部1431は、頂点座標に紐付けられた領域面積の情報である頂点密度の逆数を昇順にソートする。そして、ソート部1431は、それぞれの頂点座標を、ソートした順番に、ソート済み頂点座標記憶部1432に出力する。
なお、ソート部1431がそれぞれの頂点座標をソートする順番は、頂点画素に属する領域面積が小さい順番、すなわち、頂点密度の逆数を降順であってもよい。
ソート済み頂点座標記憶部1432は、ソート部1431から順次出力されたそれぞれの頂点座標を記憶する。
分配信号付与部1433は、ソート済み頂点座標記憶部1432に記憶されたそれぞれの頂点座標を、ソート済み頂点座標記憶部1432に記憶された順番に順次読み出し、読み出した頂点座標に、演算を割り当てた領域ラベル生成部16を表す分配信号を付与して頂点座標分配部15に出力する。
ここで、頂点座標分配スケジューリング部143の動作について説明する。図9A〜図9Dは、本発明の第1の実施形態の画像処理装置1に備えた頂点座標分配スケジューリング部143による分配信号の付与処理の概念を説明する図である。なお、図9A〜図9Cにおいて、横軸は、それぞれの頂点座標の並びを表し、縦軸は、それぞれの頂点座標において推定された領域面積の大きさを表している。また、図9Dにおいて、横軸は、それぞれの領域ラベル生成部16を表し、縦軸は、それぞれの領域ラベル生成部16に割り当てられた演算負荷を領域面積の大きさで表している。
頂点座標分配スケジューリング部143内のソート部1431は、領域面積記憶部142から頂点座標を読み出す。このときソート部1431が読み出したそれぞれの頂点座標を読み出した順番に並べて、それぞれの頂点座標に紐付けられた領域面積の情報に基づいた領域面積の大きさを表すと、図9Aに示したように、領域面積は一定の順番に従っていない。そこで、ソート部1431は、それぞれの頂点座標を、領域面積が大きい順番にソートする。これにより、図9Bに示したように、領域面積が大きい順に並べ替えられたそれぞれの頂点座標が、頂点座標分配スケジューリング部143内のソート済み頂点座標記憶部1432に記憶される。
そして、頂点座標分配スケジューリング部143内の分配信号付与部1433は、ソート済み頂点座標記憶部1432に記憶されたそれぞれの頂点座標に分配信号を付与する。図9Cに示した一例では、画像処理装置1に3つの領域ラベル生成部16(領域ラベル生成部16−0〜領域ラベル生成部16−2)を備えている場合において、それぞれの頂点座標に割り当てる分配信号を、領域ラベル生成部16の付与した符号において、「−」に続く数字の部分を、それぞれの領域ラベル生成部16を識別する情報で示している。そして、図9Cに示した一例では、領域ラベル生成部16の順番が昇順と降順とを交互に繰り返すように、ソート部1431によって並び替えられたそれぞれの頂点座標を順番に割り当てている場合を示している。
より具体的には、図9Cに示した一例では、1つ目〜3つ目まで、領域ラベル生成部16−0〜領域ラベル生成部16−2に、頂点座標を昇順に割り当て、4つ目〜6つ目まで、領域ラベル生成部16−2〜領域ラベル生成部16−0に、頂点座標を降順に割り当てている。これにより、図9Cに示した一例では、1つ目の頂点座標と6つ目の頂点座標とが領域ラベル生成部16−0に割り当てられ、2つ目の頂点座標と5つ目の頂点座標とが領域ラベル生成部16−1に割り当てられ、3つ目の頂点座標と4つ目の頂点座標とが領域ラベル生成部16−2に割り当てられる。
図9Cに示したようにそれぞれの頂点座標を割り当てることにより、それぞれの領域ラベル生成部16の演算負荷(領域面積)の総和が概ね均等になる。図9Dには、図9Cに示した一例のようにそれぞれの頂点座標が割り当てられた場合における領域ラベル生成部16−0〜領域ラベル生成部16−2の演算負荷を、領域面積の大きさで表している。図9Cに示した一例のように、最も領域面積が大きい頂点座標と最も領域面積が小さい頂点座標というように組み合わせてそれぞれの領域ラベル生成部16に演算負荷を割り当てることによって、図9Dに示したように、それぞれの領域ラベル生成部16の演算負荷の総和が概ね均等になる。
次に、画像処理装置1に備えた分配信号付与部1433における分配信号の付与処理について説明する。図10は、本発明の第1の実施形態の画像処理装置1に備えた分配信号付与部1433における処理手順を示したフローチャートである。なお、以下の説明においては、画像処理装置1に、領域ラベル生成部16−0〜領域ラベル生成部16−(n−1)のn個の領域ラベル生成部16を備えているものとして説明する。
分配信号付与部1433は、分配信号の付与処理を開始すると、まず、分配信号の値の初期化を行う(ステップS31)。ここでは、分配信号付与部1433は、分配信号の初期値を「0」とする。
続いて、分配信号付与部1433は、ステップS32のループにおいて、頂点座標を読み込む頂点画素のループカウンタiを「0」にクリアする。
続いて、分配信号付与部1433は、ループカウンタiに対応する頂点座標「i」(以下、「分配頂点座標[i]」という)を、ソート済み頂点座標記憶部1432から取得する。そして、分配信号付与部1433は、ソート済み頂点座標記憶部1432から取得した分配頂点座標[i]に分配信号(ここでは、初期値=「0」の分配信号)を付与し、分配信号を付与した頂点座標を頂点座標分配部15に出力する(ステップS33)。
続いて、分配信号付与部1433は、ループカウンタiの値を、領域ラベル生成部16の個数nで除算(i÷n)した整数部が、偶数であるか否かを判定する(ステップS34)。
ステップS34において、(i÷n)の整数部が偶数である場合(ステップS34の“YES”)、分配信号付与部1433は、現在の分配信号の値に「1」を加算して、分配信号の値をインクリメントする(ステップS35)。
続いて、分配信号付与部1433は、インクリメントした分配信号の値が領域ラベル生成部16の個数n以上である場合、インクリメントした分配信号の値から「1」を減算し、分配信号の値を、個数n−1に固定(クリップ)する(ステップS36)。なお、インクリメントした分配信号の値が領域ラベル生成部16の個数n以上でない場合には、このステップS36の処理は行わない。そして、分配信号付与部1433は、ステップS32に戻って、次の頂点座標に対する分配信号の付与処理を行う。
一方、ステップS34において、(i÷n)の整数部が偶数でない、つまり、奇数である場合(ステップS34の“NO”)、分配信号付与部1433は、現在の分配信号の値から「1」を減算して、分配信号の値をデクリメントする(ステップS37)。
続いて、分配信号付与部1433は、デクリメントした分配信号の値が「0」以下である場合、デクリメントした分配信号の値に「1」を加算して、分配信号の値を、「0」に固定(クリップ)する(ステップS38)。なお、デクリメントした分配信号の値が「0」以下でない場合には、このステップS38の処理は行わない。そして、分配信号付与部1433は、ステップS32に戻って、次の頂点座標に対する分配信号の付与処理を行う。
分配信号付与部1433は、ステップS32のループで表された分配信号の付与処理を、ソート済み頂点座標記憶部1432に記憶された全ての頂点座標に対して行って、それぞれの頂点座標に分配信号を付与する。
このような構成および動作によって、頂点座標分配信号生成部14は、輝度画像において同じ頂点画素に属する周辺画素に領域ラベルを付与する演算が、画像処理装置1に備えたそれぞれの演算リソースである領域ラベル生成部16で概ね均等になるように分配するための分配信号を付与した頂点座標を、頂点座標分配部15に出力する。
そして、頂点座標分配部15は、頂点座標分配信号生成部14から入力された頂点座標に付与されている分配信号に基づいて、それぞれの頂点座標を、対応する領域ラベル生成部16に分配する(振り分ける)。これにより、図9Dに示したように、それぞれの領域ラベル生成部16の演算負荷の総和が概ね均等になり、それぞれの領域ラベル生成部16を遊休させることなく稼働させることができる。このことにより、画像処理装置1における全体の処理時間の短縮を図ることができる。
ここで、画像処理装置1に備えた領域ラベル生成部16について説明する。図11A〜図11Gは、本発明の第1の実施形態の画像処理装置1に備えた領域ラベル生成部16による領域ラベルの生成処理の一例を模式的に示した図である。図11A〜図11Gには、領域ラベル生成部16が、同じ頂点画素に属する周辺画素に領域ラベルを付与する処理を、段階的に示している。
図11Aには、勾配データ記憶部12に記憶されている勾配データの一例を示している。図11Aに示した勾配データでは、頂点画素が中心に位置し、その周囲に位置する周辺画素のそれぞれに勾配ラベルが付与されている。なお、図11Aに示した勾配データでは、頂点画素を「×」印で示し、勾配ラベルを、図1Bに示した勾配データと同様に、矢印で模式的に示している。
演算を行う対象の頂点画素(「×」印)の位置を表す頂点座標が入力されると、領域ラベル生成部16は、入力された頂点座標に位置する頂点画素の頂点ラベルと、その周囲の8画素分の周辺画素の勾配データとを、勾配データ記憶部12から読み出す。そして、領域ラベル生成部16は、読み出した8つの周辺画素の勾配データにそれぞれ付与されている勾配ラベルが、読み出した頂点画素に向かう勾配方向を表しているか否かを判定する。図11Bに示した一例では、8つの周辺画素の勾配データの内、頂点画素の右下の周辺画素の勾配データ以外が、頂点画素に向かう勾配方向を表している状態を示している。
領域ラベル生成部16は、頂点画素に向かう勾配方向を表している勾配データに対応する周辺画素のそれぞれに、頂点画素の頂点ラベルと同じ値の領域ラベルを付与する。図11Cに示した一例では、頂点画素に向かう勾配方向を表している周辺画素、つまり、頂点画素の右下の周辺画素以外に、頂点画素の頂点ラベルと同じ値(ここでは、丸で囲んだ「8」)の領域ラベルを付与した状態を示している。
その後、領域ラベル生成部16は、同じ領域ラベルを付与したそれぞれの周辺画素を順次中心として、その周囲の8画素分の周辺画素の勾配データを勾配データ記憶部12から読み出し、読み出した8つの周辺画素の勾配データにそれぞれ付与されている勾配ラベルが、中心とした周辺画素に向かう勾配方向を表しているか否かを判定する。図11Dに示した一例では、頂点画素の右上に位置する丸で囲んだ周辺画素を中心として、その周囲の8画素分の周辺画素の勾配データを勾配データ記憶部12から読み出した場合を示している。また、図11Dに示した一例では、読み出した8つの周辺画素の勾配データの内、左側中央の周辺画素の勾配データのみが、中心とした周辺画素に向かう勾配方向を表している状態を示している。
領域ラベル生成部16は、中心とした周辺画素に向かう勾配方向を表している勾配データに対応する周辺画素のそれぞれに、中心とした周辺画素に付与した領域ラベルと同じ値の領域ラベルを付与する。図11Eに示した一例では、中心とした周辺画素に向かう勾配方向を表している左側中央の周辺画素のみに、同じ値(ここでは、丸で囲んだ「8」)の領域ラベルを付与した状態を示している。
同様に、領域ラベル生成部16が、同じ領域ラベル(図11Cにおいて、丸で囲んだ「8」)を付与したそれぞれの周辺画素を順次中心とし、その中心とした周辺画素に向かう勾配方向を表しているか否かを判定することによって、図11Fに示したような領域の周辺画素に、頂点画素の頂点ラベルと同じ値(ここでは、丸で囲んだ「8」)の領域ラベルが付与される。
なお、図11Fでは、図11Bにおいて頂点画素に向かう勾配方向を表している周辺画素ではないと判定された、頂点画素の右下の周辺画素(網掛けで表した周辺画素)にも、同じ値の領域ラベルが付与されている。これは、頂点画素の下側中央の周辺画素を中心として、その中心とした周辺画素に向かう勾配方向を表しているか否かを判定した結果、頂点画素の右下の周辺画素は、頂点画素の下側中央の周辺画素に向かう勾配方向を表していると判定されたことによるものである。
その後、同様に、領域ラベル生成部16は、新たに同じ領域ラベルを付与したそれぞれの周辺画素を順次中心として、その中心とした周辺画素に向かう勾配方向を表しているか否かの判定を行い、中心とした周辺画素に向かう勾配方向を表していると判定された周辺画素に、同じ値の領域ラベルを付与する。
このように、領域ラベル生成部16は、中心に位置する頂点画素から順次、勾配方向を判定する領域を広げていき、最終的に全ての周辺画素が、中心とした周辺画素に向かう勾配方向を表していないと判定された場合に、同じ頂点画素に属する周辺画素に領域ラベルを付与する処理、つまり、領域ラベルの生成処理を終了する。図11Gには、図11Fにおいて丸で囲んだ周辺画素を順次中心として勾配方向を判定した結果に応じて領域ラベルを付与し、演算を行う対象の頂点画素(図11A、図11B、および図11Dにおいて「×」印で示した頂点画素)に対する領域ラベルの生成処理が終了した最終的な領域ラベルデータの一例を示している。
次に、画像処理装置1に備えた領域ラベル生成部16の構成および動作について説明する。図12は、本発明の第1の実施形態の画像処理装置1に備えた領域ラベル生成部16の構成を示したブロック図である。図12に示した領域ラベル生成部16は、勾配データ読み込み元アドレス生成部161と、最外周データ勾配判定部162と、を備えている。
勾配データ読み込み元アドレス生成部161は、頂点座標分配部15によって割り当てられた頂点座標に対応する頂点画素に属するそれぞれの周辺画素に領域ラベルを付与するため、勾配データ記憶部12から勾配ラベルまたは頂点ラベルを読み出すための勾配データ読み込み元アドレスを生成する。そして、勾配データ読み込み元アドレス生成部161は、生成した勾配データ読み込み元アドレスを勾配データ記憶部12に出力し、この勾配データ読み込み元アドレスに対応する記憶領域に記憶されている勾配ラベルまたは頂点ラベルを、最外周データ勾配判定部162に出力させる。さらに、勾配データ読み込み元アドレス生成部161は、生成した勾配データ読み込み元アドレスを、最外周データ勾配判定部162に出力する。また、勾配データ読み込み元アドレス生成部161は、最外周データ勾配判定部162から入力された勾配判定結果に基づいて、さらに別の勾配データ読み込み元アドレスを生成して、勾配データ記憶部12および最外周データ勾配判定部162に出力する。
最外周データ勾配判定部162は、勾配データ読み込み元アドレス生成部161から入力された勾配データ読み込み元アドレスと、勾配データ記憶部12から入力された勾配ラベルおよび頂点ラベルに基づいて、同じ頂点画素に属するそれぞれの周辺画素を判定する。そして、最外周データ勾配判定部162は、同じ頂点画素に属すると判定した周辺画素の勾配データ読み込み元アドレスを、同じ頂点画素に属すると判定した周辺画素の位置を表す座標を表した勾配判定結果として勾配データ読み込み元アドレス生成部161に出力する。これにより、勾配データ読み込み元アドレス生成部161が、さらに別の勾配ラベルの読み出しを行う。また、最外周データ勾配判定部162は、同じ頂点画素に属するそれぞれの周辺画素の位置を表す領域ラベル書き込み先アドレスを生成し、生成した領域ラベル書き込み先アドレスと、この領域ラベル書き込み先アドレスに対応する記憶領域に記憶させる領域ラベルとを領域ラベル記憶部17に出力する。これにより、領域ラベル記憶部17の領域ラベル書き込み先アドレスに対応する記憶領域に、対応する領域ラベルが記憶される。
ここで、領域ラベル生成部16に備えたそれぞれの構成要素の動作について説明する。まず、勾配データ読み込み元アドレス生成部161について説明する。図13は、本発明の第1の実施形態の画像処理装置1に備えた勾配データ読み込み元アドレス生成部161における処理手順を示したフローチャートである。
領域ラベル生成部16に、演算を行う対象の頂点画素の位置を表す頂点座標が入力されると、勾配データ読み込み元アドレス生成部161は、まず、入力された頂点座標に対応する頂点画素の勾配データを読み出すための勾配データ読み込み元アドレスと、頂点画素の周囲に位置する8画素分の周辺画素の勾配データを読み出すための勾配データ読み込み元アドレスとを生成する。そして、勾配データ読み込み元アドレス生成部161は、生成した勾配データ読み込み元アドレスを、勾配データ記憶部12に出力する(ステップS41)。
これにより、勾配データ記憶部12は、勾配データ読み込み元アドレスで指定された記憶領域に記憶している頂点画素の勾配データ(頂点ラベル)と、頂点画素の周囲に位置する8画素分の周囲画素の勾配データ(勾配ラベル)とを、最外周データ勾配判定部162に出力する。また、勾配データ読み込み元アドレス生成部161は、生成した勾配データ読み込み元アドレスを、最外周データ勾配判定部162に出力する。これにより、最外周データ勾配判定部162は、後述する処理手順によって、頂点画素に向かう勾配方向を表している周辺画素を判定し、勾配判定結果を勾配データ読み込み元アドレス生成部161に出力する。
続いて、勾配データ読み込み元アドレス生成部161は、最外周データ勾配判定部162から出力された勾配判定結果、つまり、同じ頂点画素に属すると判定された周辺画素の位置を表す座標を取得する(ステップS42)。
続いて、勾配データ読み込み元アドレス生成部161は、勾配判定結果に含まれるそれぞれの周辺画素の座標を記憶する(ステップS43)。また、勾配データ読み込み元アドレス生成部161は、勾配判定結果に含まれる周辺画素の座標数を記憶する(ステップS44)。例えば、勾配判定結果が、図11Bに示したように、8つの周辺画素の勾配データの内、頂点画素の右下の周辺画素の勾配データ以外が、頂点画素に向かう勾配方向を表している状態である場合、勾配データ読み込み元アドレス生成部161は、ステップS44の処理において、「7」を、周辺画素の座標数として記憶する。
続いて、勾配データ読み込み元アドレス生成部161は、ステップS45のループにおいて、記憶した周辺画素の座標数分(図11Bに示した一例においては7回)、それぞれの周辺画素を中心とした勾配データ読み込み元アドレスの生成処理を行う。ステップS45のループでは、まず、記憶した周辺画素の座標の内、いずれか1つの周辺画素の座標を読み出す(ステップS46)。
続いて、勾配データ読み込み元アドレス生成部161は、読み出した座標の周辺画素を中心とした場合に、その周囲に位置する8画素分の周辺画素の勾配データを読み出すための勾配データ読み込み元アドレスを生成し、生成した勾配データ読み込み元アドレスを、勾配データ記憶部12に出力する(ステップS47)。例えば、勾配データ読み込み元アドレス生成部161は、図11Dに示したように、いずれか1つの周辺画素を中心とした、周囲に位置する8画素分の周辺画素の勾配データを読み出すための勾配データ読み込み元アドレスを生成して、勾配データ記憶部12に出力する。また、勾配データ読み込み元アドレス生成部161は、生成した勾配データ読み込み元アドレスを、最外周データ勾配判定部162に出力する。
これにより、勾配データ記憶部12は、ステップS41の処理のときと同様に、勾配データ読み込み元アドレスで指定された記憶領域に記憶している周囲画素の勾配データ(勾配ラベル)を、最外周データ勾配判定部162に出力する。そして、最外周データ勾配判定部162は、後述する処理手順によって同様に、中心とした周辺画素に向かう勾配方向を表している周辺画素を判定し、新たな勾配判定結果を勾配データ読み込み元アドレス生成部161に出力する。
続いて、勾配データ読み込み元アドレス生成部161は、最外周データ勾配判定部162から出力された新たな勾配判定結果、つまり、同じ頂点画素に属すると判定されたさらに外周の周辺画素の位置を表す座標を取得する(ステップS48)。
続いて、勾配データ読み込み元アドレス生成部161は、勾配判定結果に含まれるそれぞれの周辺画素の座標を記憶する(ステップS49)。なお、このステップS49の処理において記憶する周辺画素の座標は、ステップS43の処理において記憶した周辺画素の座標に追加して記憶する。この場合、周辺画素の座標を記憶する記憶領域は、例えば、先入れ先出し(FIFO)形式の記憶領域が考えられる。なお、このステップS49の処理において周辺画素の座標を記憶する記憶領域は、ステップS43の処理において周辺画素の座標を記憶した記憶領域と異なる記憶領域であってもよい。
また、勾配データ読み込み元アドレス生成部161は、勾配判定結果に含まれる周辺画素の座標数を記憶する(ステップS410)。例えば、勾配判定結果が、図11Dに示したように、8つの周辺画素の勾配データの内、左側中央の周辺画素の勾配データのみが、中心とした周辺画素に向かう勾配方向を表している状態である場合、勾配データ読み込み元アドレス生成部161は、ステップS410の処理において、「1」を、周辺画素の座標数として記憶する。
なお、このステップS410の処理において記憶する周辺画素の座標数は、ステップS44の処理において記憶した周辺画素の座標数に累積加算して記憶する。従って、ステップS45のループを、ステップS44の処理において記憶した周辺画素の座標数=「7」回繰り返し、図11Cにおいて丸で囲んで示した、領域ラベルを付与した周辺画素の領域の勾配データの読み出しが終了すると、ステップS410の処理において記憶する周辺画素の座標数は、図11Fにおいて丸で囲んで示した周辺画素の数=「11」となる。
なお、周辺画素の座標数を記憶する記憶領域は、例えば、ステップS44の処理において周辺画素の座標数を記憶した記憶領域と異なるカウンタ形式の記憶領域が考えられる。ただし、ステップS44の処理において記憶した周辺画素の座標数が、今回のステップS45のループの処理を開始する際に、ステップS45のループカウンタに移行されて空き状態となる構成である場合には、ステップS410の処理において周辺画素の座標数を記憶する記憶領域と、ステップS44の処理において周辺画素の座標数を記憶した記憶領域と共有してもよい。そして、ステップS410の処理において記憶した周辺画素の座標数は、今回のステップS45のループの処理を終了した後に、ステップS45のループの処理を再度繰り返すか否かの判定に用いられる。
その後、勾配データ読み込み元アドレス生成部161は、ステップS44の処理において記憶した周辺画素の座標数=「7」回のステップS45のループを終了すると、ステップS410の処理において記憶されている周辺画素の座標数が「0」であるか否かを判定する(ステップS411)。
ステップS411において、記憶されている周辺画素の座標数が「0」でない、つまり、同じ頂点画素に属すると判定された周辺画素の勾配データの読み出しが終了していないと判定した場合(ステップS411の“NO”)、勾配データ読み込み元アドレス生成部161は、ステップS45に戻って、周辺画素の勾配データを読み出すための勾配データ読み込み元アドレスの生成を継続する。このとき、ステップS45のループを繰り返す回数は、ステップS410の処理において記憶された周辺画素の座標数分(図11Fに示した一例においては11回)である。これにより、例えば、図11Fにおいて丸で囲んで示した、領域ラベルを付与した周辺画素の領域の勾配データの読み出しを行う。
一方、ステップS411において、記憶されている周辺画素の座標数が「0」である、つまり、同じ頂点画素に属すると判定された周辺画素の勾配データの読み出しが終了したと判定した場合(ステップS411の“YES”)、勾配データ読み込み元アドレス生成部161は、勾配データ読み込み元アドレスを生成する処理を終了する。これにより、例えば、図11Gに示したように領域ラベルを付与した最終的な領域ラベルデータが生成される。
続いて、最外周データ勾配判定部162について説明する。図14は、本発明の第1の実施形態の画像処理装置1に備えた最外周データ勾配判定部162における処理手順を示したフローチャートである。最外周データ勾配判定部162は、図14に示した処理手順を、図13に示した勾配データ読み込み元アドレス生成部161の処理手順におけるステップS41とステップS47とのそれぞれに対応して実行する。以下の説明においては、最外周データ勾配判定部162が、ステップS41に対応して実行するものとして説明する。
最外周データ勾配判定部162は、勾配データ記憶部12から、勾配データ読み込み元アドレスに対応した頂点画素の勾配データ(頂点ラベル)と、頂点画素の周囲に位置する8画素分の周囲画素の勾配データ(勾配ラベル)とを受け取る。また、最外周データ勾配判定部162は、勾配データ読み込み元アドレス生成部161が生成した勾配データ読み込み元アドレスを、頂点画素および周囲画素の位置を表す座標として受け取る(ステップS51)。
続いて、最外周データ勾配判定部162は、ステップS52のループにおいて、受け取った8画素分の周囲画素の勾配データのそれぞれに対する勾配方向の判定処理を行う。ステップS52のループでは、まず、受け取った8画素分の周囲画素の勾配データの内、いずれか1つの周囲画素の勾配データに付与されている勾配ラベルが、中心の画素に向かう勾配方向を表しているか否か、つまり、同じ頂点画素に属しているか否かを判定する(ステップS53)。
ステップS53において、現在の周囲画素の勾配データに付与されている勾配ラベルが、中心の画素に向かう勾配方向を表していない、つまり、同じ頂点画素に属していないと判定した場合(ステップS53の“NO”)、最外周データ勾配判定部162は、次のいずれか1つの周囲画素に対するステップS52のループの処理を行う。
一方、ステップS53において、現在の周囲画素の勾配データに付与されている勾配ラベルが、中心の画素に向かう勾配方向を表している、つまり、同じ頂点画素に属していると判定した場合(ステップS53の“YES”)、最外周データ勾配判定部162は、ステップS54において、受け取った頂点画素の勾配データに付与されている頂点ラベルと同じ値の領域ラベルを、現在の周囲画素の領域ラベルとして領域ラベル記憶部17に出力する。また、最外周データ勾配判定部162は、領域ラベルを出力する周囲画素の位置を表す座標を、領域ラベル書き込み先アドレスとして領域ラベル記憶部17に出力する。
続いて、最外周データ勾配判定部162は、領域ラベルを出力する周囲画素の位置を表す座標を、勾配判定結果として勾配データ読み込み元アドレス生成部161に出力する(ステップS55)。そして、最外周データ勾配判定部162は、次のいずれか1つの周囲画素に対するステップS52のループの処理を行う。
このようにして、最外周データ勾配判定部162は、受け取った8画素分の周囲画素の勾配データのそれぞれに対して、勾配方向の判定処理を行う。これにより、例えば、図11C、図11E、図11Fというように、同じ頂点画素に属する周辺画素に領域ラベルを付与した領域が順次広がっていき、最終的に、図11Gに示したような、領域ラベルデータが領域ラベル記憶部17に記憶される。
このような構成および動作によって、領域ラベル生成部16は、同じ頂点画素に属する周辺画素に同じ領域ラベルを付与する領域分割処理を行う。この領域分割処理では、領域ラベル生成部16は、頂点画素から周囲画素へと広がるように領域ラベルを付与する。このため、画像処理装置1に備えた複数の領域ラベル生成部16のそれぞれは、異なる頂点画素に対する領域分割処理を並列に行うことができる。そして、画像処理装置1では、画像処理装置1に備えた領域ラベル生成部16の数に応じて期待される全体の処理時間の短縮を図ることができる。
なお、上述した説明では、図14に示した最外周データ勾配判定部162の処理手順を、図13に示した勾配データ読み込み元アドレス生成部161の処理手順のステップS41に対応して実行する場合について説明した。しかし、上述したように、図14に示した処理手順は、図13に示した勾配データ読み込み元アドレス生成部161の処理手順のステップS41とステップS47とのそれぞれに対応して実行される。図14に示した処理手順が、図13に示した勾配データ読み込み元アドレス生成部161の処理手順のステップS47に対応して実行される場合、最外周データ勾配判定部162は、前回の図14に示した処理手順によって同じ頂点画素に属すると判定した周辺画素を中心としたときの勾配データおよび座標を、頂点画素の勾配データおよび座標として受け取る。このため、受け取った頂点画素の勾配データには、頂点ラベルは付与されていない。従って、最外周データ勾配判定部162は、今回のステップS54の処理において、前回の図14に示した処理手順のステップS54の処理において出力した領域ラベルと同じ値の領域ラベルを、領域ラベル記憶部17に出力する。
第1の実施形態によれば、入力された画像(輝度画像)に含まれるそれぞれの画素に順次注目し、注目した画素(注目画素)の輝度値と、注目画素の周囲に位置する他の画素(周囲画素)の輝度値とに基づいて、輝度値が高い画素に向かう方向を示す値の第1のラベル(勾配ラベル)、または周囲に位置する全ての画素(周囲画素)よりも輝度値が高いことを示す値の第2のラベル(頂点ラベル)で、輝度画像に含まれるそれぞれの画素を表した勾配データを生成する勾配データ生成部(勾配データ生成部11)と、頂点ラベルで表された注目画素のそれぞれを頂点画素とし、頂点画素の位置を表す頂点座標に基づいて、輝度画像内の領域を、同じ頂点画素に属する画素(周辺画素)が含まれる領域に分割し、分割した領域に含まれるそれぞれの周辺画素を、同じ頂点画素に属する画素であることを示す値の第3のラベル(領域ラベル)で表した領域ラベルデータを生成する複数の領域ラベル生成部(領域ラベル生成部16)と、それぞれの領域ラベル生成部16が、輝度画像内の領域を同じ頂点画素に属する周辺画素が含まれる領域に分割する演算の負荷が均等になるように、演算を行う対象の頂点画素のそれぞれを、領域ラベル生成部16のそれぞれに分配する頂点画素分配部(頂点座標分配信号生成部14および頂点座標分配部15)と、を備える画像処理装置(画像処理装置1)が構成される。
また、第1の実施形態によれば、頂点画素分配部(頂点座標分配信号生成部14)は、頂点画素を中心としたときに、中心とした頂点画素から予め定めた範囲内の領域に位置する他の頂点画素の数に基づいて、中心とした頂点画素に属する周辺画素の領域の大きさを表す領域面積を、それぞれの頂点画素ごとに推定する領域面積推定部(領域面積推定部141)と、それぞれの領域面積に基づいて、演算を行う対象の頂点画素に対応する領域面積の差が最小になるように、それぞれの頂点画素を領域ラベル生成部16のそれぞれに割り当て、割り当てた領域ラベル生成部16を表す分配信号を、それぞれの頂点画素に対応する頂点座標に付与する頂点座標分配スケジューリング部(頂点座標分配スケジューリング部143)と、それぞれの頂点座標に付与された分配信号に基づいて、分配信号が表す領域ラベル生成部16に頂点座標を出力する頂点座標分配部(頂点座標分配部15)と、を備える画像処理装置1が構成される。
また、第1の実施形態によれば、領域面積推定部141は、中心とした頂点画素の頂点座標と、他の頂点画素の頂点座標とに基づいて、2つの頂点画素の間の距離をそれぞれ算出し、算出した2つの頂点画素の間の距離に基づいて、中心とした頂点画素の位置から予め定めた距離の範囲内の領域(閾値領域)に存在する他の頂点画素の数を計数し、計数した他の頂点画素の数の逆数を用いて、それぞれの頂点画素に対応する領域面積を推定する画像処理装置1が構成される。
また、第1の実施形態によれば、頂点座標分配スケジューリング部143は、頂点画素を、予め定めた順番で領域ラベル生成部16のそれぞれに割り当てる画像処理装置1が構成される。
また、第1の実施形態によれば、頂点座標分配スケジューリング部143は、対応する領域面積に基づいて、それぞれの頂点画素を予め定めた順番に並び替えるソート部(ソート部1431)、を備え、ソート部1431が並び替えた後の頂点画素を、領域ラベル生成部16のそれぞれに割り当てる画像処理装置1が構成される。
また、第1の実施形態によれば、頂点座標分配スケジューリング部143は、複数の領域ラベル生成部16の順番が昇順と降順とを交互に繰り返すように、頂点画素を、領域ラベル生成部16のそれぞれに割り当てる画像処理装置1が構成される。
また、第1の実施形態によれば、領域ラベル生成部16のそれぞれは、頂点座標に対応する頂点画素を中心とし、頂点画素の周囲に位置するそれぞれの画素(周辺画素)を表すそれぞれの勾配データを取得する勾配データ取得部(勾配データ読み込み元アドレス生成部161)と、取得した勾配データに含まれるそれぞれの周辺画素を表す勾配ラベルの値が、頂点画素に向かう方向を示す値であるか否かを判定し、頂点画素に向かう方向を示す値の勾配ラベルで表された周辺画素を、頂点画素を表す頂点ラベルの値と同じ値の領域ラベルで表した領域ラベルデータを生成する勾配判定部(最外周データ勾配判定部162)と、を備える画像処理装置1が構成される。
また、第1の実施形態によれば、勾配データ読み込み元アドレス生成部161は、最外周データ勾配判定部162によって頂点画素に向かう方向を示す値の勾配ラベルであると判定されたそれぞれの周辺画素を順次中心とし、中心とした周辺画素の周囲に位置するそれぞれの画素(周辺画素)を表すそれぞれの勾配データをさらに取得し、最外周データ勾配判定部162は、さらに取得した勾配データに含まれるそれぞれの画素を表す勾配ラベルの値が、中心とした周辺画素に向かう方向を示す値であるか否かを順次判定し、中心とした周辺画素に向かう方向を示す値の勾配ラベルで表された周辺画素を、中心とした周辺画素を表す領域ラベルの値と同じ値の領域ラベルで表した領域ラベルデータを順次生成する画像処理装置1が構成される。
また、第1の実施形態によれば、勾配データ読み込み元アドレス生成部161は、順次中心とするそれぞれの周辺画素の領域が、頂点画素に対応する頂点座標の位置から順次外周の周辺画素に広がるように、それぞれの周辺画素を表すそれぞれの勾配データを取得し、最外周データ勾配判定部162は、頂点画素を表す頂点ラベルの値と同じ値の領域ラベルで表した領域が、頂点画素に対応する頂点座標の位置から順次外周の周辺画素に広がる領域ラベルデータを生成する画像処理装置1が構成される。
このように、第1の実施形態の画像処理装置1では、頂点座標分配信号生成部14が、それぞれの領域ラベル生成部16の演算負荷の総和、つまり、それぞれの領域ラベル生成部16が領域ラベルを付与する周辺画素の領域の面積の総和が概ね均等になるように、演算を行う対象の頂点画素の頂点座標に、領域ラベル生成部16の割り当てを表す分配信号を予め付与する。そして、第1の実施形態の画像処理装置1では、頂点座標分配部15が、頂点座標に付与された分配信号に基づいて、それぞれの頂点座標を、対応する領域ラベル生成部16に分配する(振り分ける)。これにより、それぞれの領域ラベル生成部16を遊休させることなく稼働させ、画像処理装置1における全体の処理時間の短縮を図ることができる。
(第1の実施形態の第1の変形例)
なお、第1の実施形態の画像処理装置1では、頂点座標分配信号生成部14が、図9Cに示したように、領域ラベル生成部16の順番が昇順と降順とを交互に繰り返すように、それぞれの頂点座標を割り当てる分配信号を付与する場合について説明した。しかし、頂点座標分配信号生成部14がそれぞれの頂点座標を割り当てる際の順番は、図9Cに示した順番、すなわち、図10に示した処理手順に限定されるものではない。例えば、頂点座標分配信号生成部14内の頂点座標分配スケジューリング部143に備えた分配信号付与部1433が、領域ラベル生成部16の順番を昇順または降順のいずれか一方を繰り返すように、それぞれの頂点座標を割り当てる分配信号を付与してもよい。
ここで、この場合の頂点座標分配スケジューリング部143の動作について説明する。図15A〜図15Dは、本発明の第1の実施形態の画像処理装置1に備えた頂点座標分配スケジューリング部143による分配信号の付与処理の別の方法を説明する図である。図15A〜図15Cにおいても、図9A〜図9Cと同様に、横軸はそれぞれの頂点座標の並びを表し、縦軸はそれぞれの頂点座標において推定された領域面積の大きさを表している。また、図15Dにおいても、図9Dと同様に、横軸はそれぞれの領域ラベル生成部16を表し、縦軸はそれぞれの領域ラベル生成部16に割り当てられた演算負荷を領域面積の大きさで表している。なお、図15Aおよび図15Bは、図9Aおよび図9Bと同様であるため、詳細な説明は省略する。
図15Cに示した一例では、分配信号付与部1433が、領域ラベル生成部16の順番として昇順を繰り返すように、ソート部1431によって並び替えられたそれぞれの頂点座標を順番に割り当てている場合を示している。より具体的には、図15Cに示した一例では、1つ目〜3つ目まで、領域ラベル生成部16−0〜領域ラベル生成部16−2に、頂点座標を昇順に割り当て、4つ目〜6つ目まで、領域ラベル生成部16−0〜領域ラベル生成部16−2に、頂点座標を昇順に割り当てている。これにより、図15Cに示した一例では、1つ目の頂点座標と4つ目の頂点座標とが領域ラベル生成部16−0に割り当てられ、2つ目の頂点座標と5つ目の頂点座標とが領域ラベル生成部16−1に割り当てられ、3つ目の頂点座標と6つ目の頂点座標とが領域ラベル生成部16−2に割り当てられる。
図15Cに示したようにそれぞれの頂点座標を割り当てることによっても、それぞれの領域ラベル生成部16の演算負荷(領域面積)の総和が概ね均等になる。図15Dには、図15Cに示した一例のようにそれぞれの頂点座標が割り当てられた場合における領域ラベル生成部16−0〜領域ラベル生成部16−2の演算負荷を、領域面積の大きさで表している。ただし、図9Dに示した一例と図15Dに示した一例とを比べてわかるように、図9Dに示した一例の方が、演算負荷(領域面積)の総和がより均等に近い。しかし、図15Cに示したように振り分けるための処理手順は、図9Cに示したように振り分けるための処理手順(図10参照)よりも、より簡易な処理手順である。
(第1の実施形態の第2の変形例)
また、例えば、頂点座標分配スケジューリング部143は、分配信号を付与した後に、それぞれの領域ラベル生成部16に割り当てた頂点座標に対して簡易的に推定した領域面積の合計(総和)に基づいて、頂点座標の割り当てを変更(補正)するようにしてもよい。この場合、頂点座標分配スケジューリング部143に備えた分配信号付与部1433は、それぞれの領域ラベル生成部16に割り当てた領域面積の総和の差に基づいて、頂点座標の割り当てを変更する。
この場合の一例について説明する。図16Aおよび図16Bは、本発明の第1の実施形態の画像処理装置1に備えた頂点座標分配スケジューリング部143による分配信号の付与処理のさらに別の方法を説明する図である。図16Aおよび図16Bは、図9Dおよび図15Dと同様に、横軸にそれぞれの領域ラベル生成部16を表し、縦軸にそれぞれの領域ラベル生成部16に割り当てられた演算負荷を領域面積の大きさで表している。そして、図16Aには、頂点座標の割り当てを変更(補正)する前の状態を示し、図16Bには、頂点座標の割り当てを変更(補正)した後の状態を示している。
図16Aに示したように、特定の領域ラベル生成部16(図16Aにおいては、領域ラベル生成部16−0)に割り当てた頂点座標に対して推定した領域面積の総和が、他の領域ラベル生成部16(図16Aにおいては、領域ラベル生成部16−1および領域ラベル生成部16−2)に割り当てた頂点座標に対して推定した領域面積の総和よりも大きい場合を考える。この場合、分配信号付与部1433は、領域面積の総和の差を、領域ラベル生成部16の数で除算する。そして、分配信号付与部1433は、除算した領域面積に相当する領域面積である頂点座標を、領域面積の総和が大きい領域ラベル生成部16以外の領域ラベル生成部16に割り当て直すように、その頂点座標に付与した分配信号を変更(補正)する。
図16Bには、領域面積の総和が大きい領域ラベル生成部16−0に割り当てた頂点座標を、領域面積の総和が小さい領域ラベル生成部16−1および領域ラベル生成部16−2に割り当て直した場合の一例を示している。このように、頂点座標分配スケジューリング部143が、分配信号を付与した後に、それぞれの領域ラベル生成部16への頂点座標の割り当てを変更(補正)することによって、図16Bに示したように、それぞれの領域ラベル生成部16に割り当てた頂点座標に対して推定した領域面積の総和が、より均等に近くなり、それぞれの領域ラベル生成部16をより効率的に稼働させることができる。
第1の実施形態の第2の変形例によれば、頂点座標分配スケジューリング部143は、それぞれの領域ラベル生成部16に割り当てられた領域面積の総和の内、最も大きい領域面積の総和と最も小さい領域面積の総和との差を、領域ラベル生成部16の数で除算し、除算した結果の領域面積に相当する領域面積に対応する頂点画素を、領域面積の総和が最も大きい領域ラベル生成部16以外の領域ラベル生成部16のそれぞれに割り当て直す画像処理装置1が構成される。
(第1の実施形態の第3の変形例)
なお、第1の実施形態の画像処理装置1では、頂点座標分配信号生成部14が、図6に示したように、予め定めた距離の閾値で設定される閾値領域(単位面積)内に存在する頂点画素の数で表される頂点密度の逆数を用いて、領域面積を簡易的に推定する方法について説明した。しかし、頂点座標分配信号生成部14が領域面積を推定する方法は、図6に示した方法、すなわち、図7に示した処理手順に限定されるものではない。例えば、頂点座標分配信号生成部14内の領域面積推定部141が、閾値領域(単位面積)内に存在する頂点画素の数を、予め定めた任意の数の閾値と比較することによって、領域面積の簡易的な推定を離散的に行ってもよい。つまり、領域面積推定部141が、予め定めた範囲ごとに切り分けるように領域面積を推定してもよい。
この場合の処理手順について説明する。図17は、本発明の第1の実施形態の画像処理装置1に備えた領域面積推定部141における別の処理手順を示したフローチャートである。なお、図17に示した領域面積推定部141における領域面積の推定処理では、予め定めた領域面積の閾値として、複数の領域面積θ(以下、「推定領域面積θ」という)が離散的に設定されている。領域面積推定部141は、閾値領域内に存在する頂点画素の数と、推定領域面積θの逆数で表される頂点数とを比較することによって、それぞれの頂点画素に属する領域面積を、推定領域面積θのいずれかに推定する。以下の説明においては、n個の推定領域面積θ(推定領域面積θ0〜推定領域面積θn,θ0>θn)が設定されているものとし、例えば、図7に示した処理手順によって閾値領域内に存在する頂点画素の数の検出が終了した後に、領域面積を、いずれかの推定領域面積θに推定する場合について説明する。
領域面積推定部141が、閾値領域内に存在する頂点画素の数の検出が終了すると、検出した頂点画素の数が、推定領域面積θ0の逆数(推定領域面積θ0に対応する頂点数)よりも少ないか否かを判定する(ステップS61)。ステップS61において、検出した頂点画素の数が、推定領域面積θ0に対応する頂点数よりも少ないと判定した場合(ステップS61の“YES”)、領域面積推定部141は、ステップS62において、領域面積は、推定領域面積θ0と同等であると推定する。つまり、領域面積推定部141は、ステップS61およびステップS62において、推定領域面積θ0よりも小さい領域面積は、推定領域面積θ0と同等であると推定する。そして領域面積推定部141は、推定した領域面積の情報(=推定領域面積θ0)を、閾値領域内に存在するそれぞれの頂点座標に紐付けて、領域面積記憶部142に記憶させ、領域面積の推定処理を終了する。
一方、ステップS61において、検出した頂点画素の数が、推定領域面積θ0に対応する頂点数よりも少なくない、つまり、検出した頂点画素の数が推定領域面積θ0に対応する頂点数以上であると判定した場合(ステップS61の“NO”)、領域面積推定部141は、ステップS63の処理に進む。
続いて、領域面積推定部141は、検出した頂点画素の数が、推定領域面積θ1の逆数(推定領域面積θ1に対応する頂点数)よりも少ないか否かを判定する(ステップS63)。ステップS63において、検出した頂点画素の数が、推定領域面積θ1に対応する頂点数よりも少ないと判定した場合(ステップS63の“YES”)、領域面積推定部141は、ステップS64において、領域面積は、推定領域面積θ1と同等であると推定する。つまり、領域面積推定部141は、ステップS63およびステップS64において、推定領域面積θ0以下で、推定領域面積θ1よりも大きい範囲の領域面積は、推定領域面積θ1と同等であると推定する。そして領域面積推定部141は、推定した領域面積の情報(=推定領域面積θ1)を、閾値領域内に存在するそれぞれの頂点座標に紐付けて、領域面積記憶部142に記憶させ、領域面積の推定処理を終了する。
一方、ステップS63において、検出した頂点画素の数が、推定領域面積θ1に対応する頂点数よりも少なくない、つまり、検出した頂点画素の数が推定領域面積θ1に対応する頂点数以上であると判定した場合(ステップS63の“NO”)、領域面積推定部141は、ステップS65の処理に進む。
同様に、領域面積推定部141は、検出した頂点画素の数と、推定領域面積θ2〜推定領域面積θn−2の逆数(推定領域面積θ2〜推定領域面積θn−2に対応する頂点数)との比較を行う。
続いて、領域面積推定部141は、検出した頂点画素の数が、推定領域面積θn−1の逆数(推定領域面積θn−1に対応する頂点数)よりも少ないか否かを判定する(ステップS65)。ステップS65において、検出した頂点画素の数が、推定領域面積θn−1に対応する頂点数よりも少ないと判定した場合(ステップS65の“YES”)、領域面積推定部141は、ステップS66において、領域面積は、推定領域面積θn−1と同等であると推定する。つまり、領域面積推定部141は、ステップS65およびステップS66において、推定領域面積θn−2以下で、推定領域面積θn−1よりも大きい範囲の領域面積は、推定領域面積θn−1と同等であると推定する。そして領域面積推定部141は、推定した領域面積の情報(=推定領域面積θn−1)を、閾値領域内に存在するそれぞれの頂点座標に紐付けて、領域面積記憶部142に記憶させ、領域面積の推定処理を終了する。
一方、ステップS65において、検出した頂点画素の数が、推定領域面積θn−1に対応する頂点数よりも少なくない、つまり、検出した頂点画素の数が推定領域面積θn−1に対応する頂点数以上であると判定した場合(ステップS65の“NO”)、領域面積推定部141は、ステップS67において、領域面積は、推定領域面積θnと同等であると推定する。つまり、領域面積推定部141は、ステップS65およびステップS67において、推定領域面積θn−1以上の領域面積は、推定領域面積θnと同等であると推定する。そして領域面積推定部141は、推定した領域面積の情報(=推定領域面積θn)を、閾値領域内に存在するそれぞれの頂点座標に紐付けて、領域面積記憶部142に記憶させ、領域面積の推定処理を終了する。
このように、領域面積推定部141は、予め定めた推定領域面積θの逆数(推定領域面積θに対応する頂点数)を閾値として、検出した頂点画素の数と比較することによっても、領域面積を予め定めた範囲ごとに切り分けて簡易的に推定することができる。これにより、頂点座標分配スケジューリング部143は、領域面積記憶部142に記憶された領域面積の情報(=推定領域面積θ)が紐付けられた頂点座標に基づいて、領域ラベル生成部16のそれぞれが行う演算負荷の総和が概ね均等になるように、それぞれの頂点座標を領域ラベル生成部16のそれぞれに割り当てることができる。
第1の実施形態の第3の変形例によれば、領域面積推定部141は、中心とした頂点画素から予め定めた範囲内の領域に位置する他の頂点画素の数と、予め定めた複数の領域面積の閾値(推定領域面積θ)で表される頂点画素の数とに基づいて、それぞれの頂点画素に対応する領域面積を、予め定めた複数の推定領域面積θのいずれかに推定する画像処理装置1が構成される。
(第1の実施形態の第4の変形例)
なお、第1の実施形態の画像処理装置1では、頂点座標分配信号生成部14が、図9または図15に示したように、頂点座標分配信号生成部14内の頂点座標分配スケジューリング部143に備えたソート部1431によって、それぞれの頂点座標を予め定めた順番に並べ替え(ソートし)、この順番に従って分配信号付与部1433が、それぞれの頂点座標を領域ラベル生成部16に割り当てる構成について説明した。しかし、頂点座標分配信号生成部14がそれぞれの頂点座標を領域ラベル生成部16に割り当てる構成は、図5に示した構成、すなわち、図9〜図10、および図15に示した処理を行う構成に限定されるものではない。例えば、頂点座標分配信号生成部14に備えた領域面積記憶部142の構成を用いて、頂点座標分配信号生成部14内の頂点座標分配スケジューリング部143に備えたソート部1431と同様の機能を実現する構成であってもよい。
より具体的には、領域面積記憶部142の記憶領域(メモリ空間)の構成を、対応する領域面積ごとに離散的に分割した構成とする。そして、頂点座標分配信号生成部14に備えた領域面積推定部141が、推定した領域面積の情報をそれぞれの頂点座標に紐付けて領域面積記憶部142に記憶させる際に、対応する領域面積のメモリ空間に静的に記憶させることによって、ソート部1431と同様の機能を実現する構成であってもよい。つまり、領域面積推定部141が、推定した領域面積の情報をそれぞれの頂点座標に紐付けて領域面積記憶部142に記憶させる際のアドレス制御によって、ソート部1431と同様の機能を実現する構成であってもよい。
この場合の頂点座標分配信号生成部14の構成について説明する。図18は、本発明の第1の実施形態の画像処理装置1に備えた頂点座標分配信号生成部14の別の構成を示したブロック図である。図18に示した頂点座標分配信号生成部14aは、領域面積推定部141aと、領域面積記憶部142aと、頂点座標分配スケジューリング部143aと、を備えている。
領域面積推定部141aは、領域面積推定部141と同様に、頂点座標記憶部13に記憶されているそれぞれの頂点座標に基づいて、輝度画像に含まれるそれぞれの頂点画素に属する周辺画素の領域面積を簡易的に推定する。そして、領域面積推定部141aは、推定したそれぞれの頂点画素に属する周辺画素の領域面積の情報を領域面積記憶部142aのアドレスとし、それぞれの頂点画素の頂点座標を領域面積記憶部142aに記憶するデータとして、領域面積記憶部142aに出力する。
領域面積記憶部142aは、領域面積推定部141から出力されたそれぞれの頂点画素の頂点座標を、アドレスとして指定された領域面積に対応するメモリ空間に記憶する。図18には、領域面積記憶部142aのメモリ空間を、予め定めn個の推定領域面積θ(推定領域面積θ0〜推定領域面積θn,θ0>θn)のそれぞれに対応するn個のメモリ空間(推定領域面積θ0用空間〜推定領域面積θn用空間)に分割した構成の領域面積記憶部142aを示している。
頂点座標分配スケジューリング部143aは、領域面積記憶部142aのそれぞれのメモリ空間に記憶されたそれぞれの頂点画素の頂点座標を、予め定めた順番で順次読み出し、読み出したそれぞれの頂点画素に対する演算を、領域ラベル生成部16のそれぞれに割り当てる。ここで、頂点座標分配スケジューリング部143aがそれぞれの頂点画素の頂点座標を読み出す順番が、頂点座標分配スケジューリング部143に備えたソート部1431と同様の機能を実現する。
例えば、ソート部1431の機能が、頂点画素に属する領域面積が大きい順番に並び替える(ソートする)機能である場合には、頂点座標分配スケジューリング部143aは、領域面積が最も大きい推定領域面積θ0に対応するメモリ空間(推定領域面積θ0用空間)から順番にそれぞれの頂点画素の頂点座標を読み出す。これにより、頂点座標分配スケジューリング部143aは、頂点画素に属する領域面積が大きい順番、すなわち、昇順に並び替えた(ソートした)状態と同様の順番で、それぞれの頂点画素の頂点座標を読み出すことができる。
なお、頂点座標分配スケジューリング部143aがそれぞれの頂点画素の頂点座標を読み出す順番を、領域面積が最も小さい推定領域面積θnに対応するメモリ空間(推定領域面積θn用空間)からにすることによって、領域面積が小さい順番、すなわち、降順にすることもできる。
そして、頂点座標分配スケジューリング部143aは、頂点座標分配スケジューリング部143と同様に、領域ラベル生成部16のそれぞれが行う演算負荷の総和が概ね均等になるように、読み出した頂点座標に分配信号を付与して頂点座標分配部15に出力する。
なお、図18に示した頂点座標分配信号生成部14aの構成では、上述したように、頂点座標分配スケジューリング部143aが領域面積記憶部142aからそれぞれの頂点画素の頂点座標を読み出す順番によって、ソート部1431と同様の機能を実現している。このため、頂点座標分配スケジューリング部143aには、図8に示した頂点座標分配スケジューリング部143において備えていたソート部1431とソート済み頂点座標記憶部1432との構成要素を備えていなくてもよい。
第1の実施形態の第4の変形例によれば、領域面積推定部(領域面積記憶部142a)は、それぞれの頂点画素に対応する領域面積を推定する際に、推定したそれぞれの頂点画素を予め定めた順番に並び替え、頂点座標分配スケジューリング部(頂点座標分配スケジューリング部143a)は、並び替えた後の頂点画素を、予め定めた順番で領域ラベル生成部16のそれぞれに割り当てる画像処理装置1が構成される。
このような構成および動作によって、第1の実施形態の画像処理装置1では、それぞれの領域ラベル生成部16の演算負荷が概ね均等になるように、演算を行う対象の頂点画素の頂点座標をそれぞれの領域ラベル生成部16に割り当てる。これにより、遊休する領域ラベル生成部16の発生を抑制し、それぞれの領域ラベル生成部16を効率的に稼働させることができる。このことにより、画像処理装置1において領域分割処理に要する全体の処理時間の短縮を図ることができる。
(第2の実施形態)
次に、本発明の第2の実施形態の画像処理装置について説明する。第2の実施形態の画像処理装置(以下、「画像処理装置2」という)も、第1の実施形態の画像処理装置1と同様に、例えば、グレースケール画像などの輝度画像の領域を複数に分割し、複数の演算リソースで並列に領域分割処理の演算を行う画像処理装置である。なお、第2の実施形態の画像処理装置2が行う領域分割処理の概念も、図1に示した第1の実施形態の画像処理装置1における領域分割処理の概念と同様である。従って、第2の実施形態の画像処理装置2が行う領域分割処理の概念に関する詳細な説明は省略する。
次に、画像処理装置2の構成について説明する。図19は、本発明の第2の実施形態における画像処理装置2の概略構成の一例を示したブロック図である。図2に示した画像処理装置2は、勾配データ生成部11bと、勾配データ記憶部12と、頂点座標分配信号生成部14bと、頂点座標分配部15と、n個の領域ラベル生成部16−1〜領域ラベル生成部16−nと、領域ラベル記憶部17と、を備えている。
なお、第2の実施形態における画像処理装置2の構成要素には、第1の実施形態の画像処理装置1の構成要素と同様の構成要素も含まれている。従って、第2の実施形態における画像処理装置2の構成要素において、第1の実施形態の画像処理装置1の構成要素と同様の構成要素には、同一の符号を付与し、それぞれの構成要素に関する詳細な説明は省略する。
勾配データ生成部11bは、第1の実施形態の画像処理装置1に備えた勾配データ生成部11と同様に、入力された輝度画像に対応する勾配データを生成し、生成した勾配データを勾配データ記憶部12に出力する。ただし、勾配データ生成部11bでは、第1の実施形態の画像処理装置1に備えた勾配データ生成部11において出力していた頂点座標を出力しない。勾配データ生成部11bにおけるその他の動作は、第1の実施形態の勾配データ生成部11と同様であるため、勾配データ生成部11bの動作に関する詳細な説明は省略する。
頂点座標分配信号生成部14bは、勾配データ記憶部12に記憶された勾配データに含まれる、頂点画素に付与された頂点ラベルに基づいて、輝度画像において同じ頂点画素に属する周辺画素に領域ラベルを付与する演算を、画像処理装置2に備えたそれぞれの演算リソースに分配する。そして、頂点座標分配信号生成部14bは、第1の実施形態の画像処理装置1に備えた頂点座標分配信号生成部14と同様に、演算リソースに演算を分配した情報を、頂点座標分配部15に出力する。
より具体的には、頂点座標分配信号生成部14bは、勾配データ記憶部12から読み出した勾配データの中から、頂点ラベルが付与された頂点画素の位置を検出する。そして、頂点座標分配信号生成部14bは、検出した頂点画素の位置を表す座標を頂点座標とし、この頂点座標に基づいて、検出した頂点画素の位置を中心とした予め定めた単位面積内に存在する、頂点ラベルが付与された他の頂点画素の数から、それぞれの頂点画素に属する周辺画素の領域面積を簡易的に推定する。そして、頂点座標分配信号生成部14bは、推定した領域面積に基づいて、第1の実施形態の画像処理装置1に備えた頂点座標分配信号生成部14と同様に、それぞれの頂点画素に対する演算を行う演算リソースを割り当て、割り当てた演算リソースを表す分配信号を付与した頂点座標を、頂点座標分配部15に出力する。
頂点座標分配信号生成部14bの構成は、図5に示した第1の実施形態の画像処理装置1に備えた頂点座標分配信号生成部14の構成と同様である。ただし、頂点座標分配信号生成部14bに備える領域面積推定部141(以下、「領域面積推定部141b」という)の動作が、第1の実施形態の頂点座標分配信号生成部14に備えた領域面積推定部141と異なる。この領域面積推定部141bの動作に関する詳細な説明は、後述する。
このような構成によって、画像処理装置2は、第1の実施形態の画像処理装置1と同様に、同じ頂点画素に属する周辺画素に頂点ラベルと同じ領域ラベルを付与した領域ラベルデータを生成する領域分割処理を、複数の演算リソースで並列に行う。
次に、画像処理装置2に備えた頂点座標分配信号生成部14bについて説明する。ここでは、頂点座標分配信号生成部14bに備えた領域面積推定部141bについて説明する。図20は、本発明の第2の実施形態の画像処理装置2に備えた領域面積推定部141bにおいて行う領域面積の推定処理の概念を説明する図である。図20でも、図6に示した第1の実施形態の画像処理装置1に備えた領域面積推定部141における領域面積の推定処理の概念と同様に、輝度画像に含まれるそれぞれの頂点画素の位置を黒塗りの丸で示し、仮に画像処理装置2に備えた領域ラベル生成部16のそれぞれが領域分割処理を行ったときの最終的な領域面積の境界を点線で模式的に示している。
領域面積推定部141bによる領域面積の推定処理では、頂点画素を中心とした予め定めた単位面積内に存在する頂点ラベルが付与された他の頂点画素の数、すなわち、単位面積内に存在する頂点画素の密度(頂点密度)によって、この頂点画素に属する領域面積を簡易的に推定する。
図20には、予め定めた単位面積の領域(以下、「閾値領域」という)を、一点鎖線で示している。図20に示した閾値領域からもわかるように、領域面積推定部141bにおいて予め定められる単位面積は、第1の実施形態の頂点座標分配信号生成部14に備えた領域面積推定部141のように、距離の閾値によって設定される領域ではないため、矩形の領域である。
なお、図20においても、第1の実施形態と同様に、頂点画素t3を中心とした閾値領域a3内に他の3つの頂点画素(頂点画素t1、頂点画素t2、および頂点画素t4)が存在し、頂点画素t5を中心とした閾値領域a4内に他の頂点画素が存在していない場合を示している。これも、第1の実施形態と同様に、閾値領域a3の頂点密度は、閾値領域a4の頂点密度よりも4倍高いことを示している。このときの領域面積推定部141bにおける領域面積の推定の考え方は、第1の実施形態の画像処理装置1に備えた領域面積推定部141における領域面積の推定の考え方と同様である。従って、領域面積推定部141bにおける領域面積の推定の考え方に関する詳細な説明は省略する。
図21は、本発明の第2の実施形態の画像処理装置2に備えた領域面積推定部141bにおける処理手順を示したフローチャートである。領域面積推定部141bにおける領域面積の推定処理では、領域面積推定部141bが、勾配データ記憶部12に記憶された勾配データを画素ごとにラスター順に読み出し、読み出した勾配データに付与された頂点ラベルを確認することによって頂点画素の検出を行う。そして、領域面積推定部141bは、検出した頂点画素を注目頂点画素として、矩形の閾値領域内に他の頂点画素が存在するか否かの判定を行う。
なお、領域面積推定部141bにおける領域面積の推定処理の方法は、矩形の閾値領域内に存在する勾配データの数、すなわち、輝度画像の画素数が、全ての頂点画素の数よりも少ない場合、第1の実施形態の画像処理装置1に備えた領域面積推定部141において2つの頂点画素間の距離に基づいて他の頂点画素が閾値領域内に存在するか否かの判定を行って領域面積の推定処理を行う方法よりも、演算負荷が少なくて済む方法である。
より具体的には、勾配データに含まれる全ての頂点画素の数を「n」とし、矩形の閾値領域内に存在する勾配データの数を「m」とした場合、領域面積推定部141bにおける領域面積の推定処理の演算量は、n×mである。一方、第1の実施形態の画像処理装置1に備えた領域面積推定部141における領域面積の推定処理の演算量は、n2である。従って、勾配データに含まれる全ての頂点画素の数nが、矩形の閾値領域内に存在する勾配データの数mよりも多い場合には、領域面積推定部141bによる領域面積の推定処理の演算量の方が、第1の実施形態の画像処理装置1に備えた領域面積推定部141による領域面積の推定処理の演算量よりも少なくなる。
以下の説明においては、勾配データ記憶部12に記憶された勾配データ内に、頂点ラベルが付与された頂点画素の数が「3」であるものとし、1つ目の頂点画素を中心とした閾値領域内に、2つ目の頂点画素が存在するものとして、図21に示した領域面積推定部141bの処理手順を説明する。そして、それぞれの頂点画素の一例として、図20に示した頂点画素t3を1つ目の頂点画素とし、頂点画素t4を2つ目の頂点画素とし、頂点画素t5を3つ目の頂点画素とした場合における一例を説明する。そして、頂点画素t3に対応した勾配データに値が「8」である頂点ラベルが付与されており、頂点画素t4に対応した勾配データに値が「9」である頂点ラベルが付与されており、頂点画素t5に対応した勾配データに値が「10」である頂点ラベルが付与されているものとして説明する。
領域面積推定部141bは、領域面積の推定処理を開始すると、まず、それぞれの頂点画素に対応した頂点密度の値を「1」に初期化する(ステップS71)。続いて、領域面積推定部141bは、ステップS72のループにおいて、勾配データ記憶部12に記憶された勾配データを、左上に配置された画素からラスター順に読み出す。
続いて、領域面積推定部141bは、今回読み出した勾配データに、頂点ラベルが付与されているか否かを判定する(ステップS73)。より具体的には、領域面積推定部141bは、今回読み出した勾配データに付与されたラベルの値を取得し、取得したラベルの値が、頂点であることを示す値(頂点ラベル)であるか、頂点画素に向かう勾配を示す値(勾配ラベル)であるかを判定する。つまり、領域面積推定部141bは、読み出した勾配データが、頂点画素の勾配データであるか、周辺画素の勾配データであるかを判定する。
ステップS71において、今回読み出した勾配データに頂点ラベルが付与されていない、つまり、今回読み出した勾配データが周辺画素の勾配データであると判定した場合(ステップS72の“NO”)、領域面積推定部141bは、ステップS72に戻って、次の勾配データに対する判定を行う。
一方、ステップS71において、今回読み出した勾配データに頂点ラベルが付与されている、つまり、今回読み出した勾配データが頂点画素の勾配データであると判定した場合(ステップS72の“YES”)、領域面積推定部141bは、今回読み出した勾配データを注目頂点画素とし、この注目頂点画素を中心とした矩形の閾値領域内の勾配データを読み出す(ステップS74)。また、領域面積推定部141bは、今回読み出した勾配データの頂点画素の位置を表す座標を頂点座標とする。
例えば、領域面積推定部141bは、1つ目の頂点画素t3に対応した勾配データに頂点ラベルが付与されていると判定した場合、1つ目の頂点画素t3を注目頂点画素とし、閾値領域a3内の勾配データを読み出す。また、領域面積推定部141bは、1つ目の頂点画素t3の位置を表す座標を、1つ目の頂点画素t3の頂点座標とする。
続いて、領域面積推定部141bは、読み出した矩形の閾値領域内のそれぞれの勾配データに付与されている頂点ラベルの数を計数(カウント)する(ステップS75)。より具体的には、領域面積推定部141bは、読み出したそれぞれの勾配データに付与されたラベルの値を取得し、取得したラベルの値が、頂点ラベルの値であるか、勾配ラベルの値であるかを判定する。そして、領域面積推定部141bは、頂点ラベルの値であると判定した回数をカウントする。
例えば、ステップS75の処理では、1つ目の頂点画素t3を中心とした閾値領域a3内に含まれる、2つ目の頂点画素t4に対応した勾配データに付与されたラベルの値(ここでは、「9」)が頂点ラベルの値であると判定し、頂点ラベルの計数値に「1」を加算する。これにより、頂点ラベルの計数値は、「1+1」=「2」となる。
続いて、領域面積推定部141bは、注目頂点画素に対応した頂点密度[t]に、カウントした頂点ラベルの数を記憶する(ステップS76)。ここで、頂点密度[t]におけるインデックスtは、注目頂点画素とした今回読み出した勾配データを識別するための索引である。このインデックスtには、例えば、注目頂点画素に付与されている頂点ラベルの値を用いる。
例えば、1つ目の頂点画素t3に付与されている頂点ラベルの値(=「8」)をインデックスtとし、1つ目の頂点画素t3に対応した頂点密度[8]に頂点ラベルの計数値(=「2」)を記憶する。これにより、1つ目の頂点画素t3を中心とした閾値領域a3内に、頂点画素t3を含めて、2つの頂点画素が存在することを表す。
その後、領域面積推定部141bは、ステップS72に戻って、次の勾配データに対する判定を行う。
このように、領域面積推定部141bは、ステップS72のループで勾配データ記憶部12に記憶されたそれぞれの勾配データをラスター順に順次読み出し、頂点画素の勾配データを検出した場合、この頂点画素の位置を中心とした矩形の閾値領域内に存在する他の頂点画素の数をカウントすることによって、頂点密度を得る。これにより、領域面積推定部141bは、勾配データ記憶部12に記憶された頂点画素の数分の頂点密度を得ることができる。
例えば、領域面積推定部141bは、1つ目の頂点画素t3に対応した頂点密度[8]=「2」、2つ目の頂点画素t4に対応した頂点密度[9]=「2」、3つ目の頂点画素t5に対応した頂点密度[10]=「1」のそれぞれを得ることができる。また、領域面積推定部141bは、1つ目の頂点画素t3、2つ目の頂点画素t4、3つ目の頂点画素t5のそれぞれの頂点画素の位置を表す座標を、それぞれの頂点座標とする。
これにより、領域面積推定部141bは、第1の実施形態の画像処理装置1に備えた領域面積推定部141と同様に、取得した頂点密度の逆数を、勾配データ記憶部12に記憶されたそれぞれの頂点座標に対応する頂点画素に属する領域面積として簡易的に推定することができる。そして、領域面積推定部141bは、第1の実施形態の画像処理装置1に備えた領域面積推定部141と同様に、推定した領域面積の情報(頂点密度の逆数)を、それぞれの頂点座標に紐付けて、領域面積記憶部142に記憶させる。
頂点座標分配スケジューリング部143は、領域面積記憶部142に記憶された領域面積の情報(頂点密度の逆数)が紐付けられた頂点座標を読み出し、領域ラベル生成部16のそれぞれが行う演算負荷の総和が概ね均等になるように、読み出した頂点座標に分配信号を付与して頂点座標分配部15に出力する。
このように、第2の実施形態の画像処理装置2でも、第1の実施形態の画像処理装置1と同様に、頂点座標分配信号生成部14bが、それぞれの領域ラベル生成部16の演算負荷の総和が概ね均等になるように、演算を行う対象の頂点画素の頂点座標に、領域ラベル生成部16の割り当てを表す分配信号を予め付与する。このとき、第2の実施形態の画像処理装置2では、頂点座標分配信号生成部14bに備えた領域面積推定部141bが、領域面積を推定するためにそれぞれの頂点画素に対応する頂点密度を得る際に、勾配データから検出した頂点画素を中心とした矩形の閾値領域内に存在する他の頂点画素の数をカウントする。このため、第2の実施形態の画像処理装置2では、矩形の閾値領域内に存在する勾配データの数mが、勾配データに含まれる全ての頂点画素の数nよりも少ない場合には、第1の実施形態の画像処理装置1よりも、領域面積の推定に要する演算コストが小さくなり、画像処理装置2における領域分割処理の全体の処理時間を短縮することができる。
なお、第2の実施形態の画像処理装置2では、領域面積推定部141bが、頂点密度を得る際に頂点画素の数をカウントする予め定めた単位面積が、頂点画素(注目頂点画素)を中心とした矩形の領域(矩形の閾値領域)である場合につて説明した。しかし、単位面積の形状は、矩形の領域に限定されるものではない。例えば、単位面積の形状は、頂点画素(注目頂点画素)を中心としていれば、円形やひし形など、矩形以外の形状であってもよい。
(第3の実施形態)
次に、本発明の第3の実施形態の画像処理装置について説明する。第3の実施形態の画像処理装置(以下、「画像処理装置3」という)も、第1の実施形態の画像処理装置1および第2の実施形態の画像処理装置2と同様に、例えば、グレースケール画像などの輝度画像の領域を複数に分割し、複数の演算リソースで並列に領域分割処理の演算を行う画像処理装置である。なお、第3の実施形態の画像処理装置3が行う領域分割処理の概念も、図1に示した第1の実施形態の画像処理装置1における領域分割処理の概念と同様である。従って、第3の実施形態の画像処理装置3が行う領域分割処理の概念に関する詳細な説明は省略する。
画像処理装置3の構成は、図2に示した第1の実施形態の画像処理装置1に備えた頂点座標分配信号生成部14、または図19示した第2の実施形態の画像処理装置2に備えた頂点座標分配信号生成部14bの構成が異なるのみである。従って、以下の説明においては、画像処理装置3に備えた頂点座標分配信号生成部14を「頂点座標分配信号生成部14c」とし、その他の構成要素は、第1の実施形態の画像処理装置1の構成要素と同一の符号を用いて、詳細な説明は省略する。
頂点座標分配信号生成部14cは、第1の実施形態の画像処理装置1に備えた頂点座標分配信号生成部14と同様に、頂点座標記憶部13に記憶された頂点座標に基づいて、輝度画像において同じ頂点画素に属する周辺画素に領域ラベルを付与する演算を、画像処理装置2に備えたそれぞれの演算リソースに分配する。そして、頂点座標分配信号生成部14cは、第1の実施形態の画像処理装置1に備えた頂点座標分配信号生成部14と同様に、演算リソースに演算を分配した情報を、頂点座標分配部15に出力する。
次に、頂点座標分配信号生成部14cの構成について説明する。図22は、本発明の第3の実施形態の画像処理装置3に備えた頂点座標分配信号生成部14cの構成を示したブロック図である。図22に示した頂点座標分配信号生成部14cは、領域面積推定部141と、頂点座標分配スケジューリング部143cと、を備えている。
領域面積推定部141は、第1の実施形態の画像処理装置1に備えた頂点座標分配信号生成部14内の領域面積推定部141と同様である。ただし、画像処理装置3に備えた頂点座標分配信号生成部14c内の領域面積推定部141は、簡易的に推定した領域面積の情報(頂点密度の逆数)を、それぞれの頂点座標に紐付けて、頂点座標分配スケジューリング部143cに順次出力する。
頂点座標分配スケジューリング部143cは、領域面積推定部141から順次出力された領域面積の情報(頂点密度の逆数)が紐付けられた頂点座標を、領域ラベル生成部16のそれぞれに順次分配する。このとき、頂点座標分配スケジューリング部143cは、演算負荷が最も少ない領域ラベル生成部16に頂点座標を割り当てるように、領域面積推定部141から順次出力された頂点座標に分配信号を付与して頂点座標分配部15に出力する。
次に、頂点座標分配スケジューリング部143cの動作について説明する。図23A〜図23Dは、本発明の第3の実施形態の画像処理装置3に備えた頂点座標分配スケジューリング部143cによる分配信号の付与処理の概念を説明する図である。なお、図23Aにおいて、横軸は、それぞれの頂点座標が出力される順番を表し、縦軸は、それぞれの頂点座標において推定された領域面積の大きさを表している。また、図23B〜図23Dにおいて、横軸は、それぞれの領域ラベル生成部16を表し、縦軸は、それぞれの領域ラベル生成部16に割り当てられた演算負荷を領域面積の大きさで表している。図23には、画像処理装置3に3つの領域ラベル生成部16(領域ラベル生成部16−0〜領域ラベル生成部16−2)を備えている場合における頂点座標分配スケジューリング部143cによる分配信号の付与処理の概念の一例を示している。
頂点座標分配スケジューリング部143cには、図23Aに示したように、領域面積の情報(頂点密度の逆数)が紐付けられた頂点座標が、領域面積推定部141から順次(時系列的に)入力される。頂点座標分配スケジューリング部143cは、入力されたそれぞれの頂点座標を順次、領域ラベル生成部16のそれぞれに順次割り当てる。図23Bには、領域面積推定部141から入力された1つ目〜3つ目までの頂点座標を、領域ラベル生成部16−0〜領域ラベル生成部16−2のそれぞれに順次割り当てた状態を示している。より具体的には、1つ目の頂点座標を領域ラベル生成部16−0に、2つ目の頂点座標を領域ラベル生成部16−1に、3つ目の頂点座標を領域ラベル生成部16−2に、それぞれ割り当てた状態を示している。
その後、頂点座標分配スケジューリング部143cは、4つ目以降の頂点座標を領域ラベル生成部16−0〜領域ラベル生成部16−2のいずれかに割り当てる際に、領域面積推定部141から順次入力された頂点座標を、そのときに最も演算負荷が少ない領域ラベル生成部16に割り当てる。図23Cには、領域面積推定部141から入力された4つ目の頂点座標を、その前の段階(図23B参照)において最も演算負荷が少ない領域ラベル生成部16−2に割り当てた状態を示している。
このようにして、頂点座標分配スケジューリング部143cは、領域面積推定部141から順次入力された頂点座標を順次、最も演算負荷が少ない領域ラベル生成部16に割り当てる。これにより、画像処理装置3に備えたそれぞれの領域ラベル生成部16の演算負荷(領域面積)の総和は、図23Dに示したように、概ね均等になる。
ここで、頂点座標分配スケジューリング部143cにおける分配信号の付与処理について説明する。図24は、本発明の第3の実施形態の画像処理装置3に備えた頂点座標分配スケジューリング部143cにおける処理手順を示したフローチャートである。なお、以下の説明においては、画像処理装置3に、領域ラベル生成部16−0〜領域ラベル生成部16−2の3個の領域ラベル生成部16を備えているものとして、図23を参照して説明する。
頂点座標分配スケジューリング部143cは、領域面積の情報(頂点密度の逆数)が紐付けられた1つ目の頂点座標を受け取る(ステップS81)。頂点座標分配スケジューリング部143cは、頂点座標が割り当てられていない領域ラベル生成部16があるか否かを判定する(ステップS82)。
なお、画像処理装置3では、画像処理装置3に備えた領域ラベル生成部16のそれぞれに対応して、領域ラベル生成部16に割り当てられた演算負荷、すなわち、領域面積の総和を記憶する記憶領域である累積領域面積バッファが設けられている。そして、ステップS82の判定では、それぞれの領域ラベル生成部16に対応する累積領域面積バッファに記憶された領域面積の総和に基づいて判定する。
より具体的には、頂点座標分配スケジューリング部143cは、いずれかの領域ラベル生成部16に対応する累積領域面積バッファに記憶された領域面積の総和が「0」である場合に、頂点座標が割り当てられていない領域ラベル生成部16があると判定する。また、頂点座標分配スケジューリング部143cは、いずれの領域ラベル生成部16に対応する累積領域面積バッファに記憶された領域面積の総和も「0」でない場合に、頂点座標が割り当てられていない領域ラベル生成部16がないと判定する。
ステップS82において、頂点座標が割り当てられていない領域ラベル生成部16があると判定した場合(ステップS81の“YES”)、頂点座標分配スケジューリング部143cは、頂点座標が割り当てられていない領域ラベル生成部16に対応する累積領域面積バッファに、受け取った頂点座標に対応する頂点画素に属する領域面積の大きさの値、つまり、頂点密度の逆数を記憶する(ステップS83)。図23Bに示した一例では、まず、領域ラベル生成部16−0に対応する累積領域面積バッファ[0]に、1つ目の頂点座標に対応する頂点画素に属する領域面積の大きさの値を記憶する。なお、図23B〜図23Dにおいて縦軸に示した演算負荷の大きさを表す領域面積は、累積領域面積バッファに記憶された領域面積の総和を表していることに相当する。
続いて、頂点座標分配スケジューリング部143cは、頂点座標が割り当てられていない領域ラベル生成部16を表す分配信号(ここでは、「0」の分配信号)を受け取った頂点座標に付与し、分配信号を付与した頂点座標を、頂点座標分配部15に出力する(ステップS84)。
その後、頂点座標分配スケジューリング部143cは、ステップS81に戻って、ステップS81〜ステップS84の処理を繰り返す。これにより、図23Bに示したように、画像処理装置3に備えた領域ラベル生成部16−0〜領域ラベル生成部16−2のそれぞれに、1つ目〜3つ目までの頂点座標が順次割り当てられる。このとき、例えば、領域ラベル生成部16−1に対応する累積領域面積バッファ[1]には、2つ目の頂点座標に対応する頂点画素に属する領域面積の大きさの値が記憶される。また、例えば、領域ラベル生成部16−2に対応する累積領域面積バッファ[2]には、3つ目の頂点座標に対応する頂点画素に属する領域面積の大きさの値が記憶される。
一方、ステップS81において、領域面積の情報(頂点密度の逆数)が紐付けられた次の頂点座標を受け取り、ステップS82において、頂点座標が割り当てられていない領域ラベル生成部16がないと判定した場合(ステップS81の“NO”)、頂点座標分配スケジューリング部143cは、ステップS85のループで表された分配信号の付与処理を行う。
ステップS85のループの処理では、画像処理装置3に備えた領域ラベル生成部16のそれぞれに対応する累積領域面積バッファを確認し、領域面積の総和が最も少ない、つまり、演算負荷が最も少ない領域ラベル生成部16を検出する。そして、頂点座標分配スケジューリング部143cは、領域面積の総和が最も少ない領域ラベル生成部16に対応する累積領域面積バッファに、受け取った頂点座標に対応する頂点画素に属する領域面積の大きさの値を加算して記憶する(ステップS86)。ここでは、例えば、領域面積の情報(頂点密度の逆数)が紐付けられた4つ目の頂点座標を受け取ってステップS85のループの処理を行うことにより、図23Cに示したように、領域ラベル生成部16−2に対応する累積領域面積バッファ[2]に、4つ目の頂点座標に対応する頂点画素に属する領域面積の大きさの値を加算して記憶する。
続いて、頂点座標分配スケジューリング部143cは、領域面積の総和が最も少ない領域ラベル生成部16を表す分配信号(ここでは、「2」の分配信号)を受け取った頂点座標に付与し、分配信号を付与した頂点座標を、頂点座標分配部15に出力する(ステップS87)。
続いて頂点座標分配スケジューリング部143cは、領域面積推定部141から、領域面積の情報(頂点密度の逆数)が紐付けられた全ての頂点座標を受け取ったか否かを判定する(ステップS88)。
ステップS88において、領域面積推定部141から全ての頂点座標を受け取っていないと判定した場合(ステップS88の“NO”)、頂点座標分配スケジューリング部143cは、ステップS89において、領域面積の情報(頂点密度の逆数)が紐付けられた次の頂点座標を受け取り、ステップS85のループの処理を繰り返す。
ここでは、頂点座標分配スケジューリング部143cが、ステップS89において、例えば、領域面積の情報(頂点密度の逆数)が紐付けられた5つ目の頂点座標を受け取ったことによるステップS85のループの処理と、領域面積の情報(頂点密度の逆数)が紐付けられた6つ目の頂点座標を受け取ったことによるステップS85のループの処理とを行った場合を考える。この場合、5つ目の頂点座標に対するステップS85のループの処理では、頂点座標分配スケジューリング部143cは、ステップS86において、図23Dに示したように、領域ラベル生成部16−1に対応する累積領域面積バッファ[1]に、5つ目の頂点座標に対応する頂点画素に属する領域面積の大きさの値を加算して記憶する。そして、頂点座標分配スケジューリング部143cは、ステップS87において、受け取った5つ目の頂点座標に、領域ラベル生成部16−1を表す分配信号を付与し、分配信号を付与した5つ目の頂点座標を、頂点座標分配部15に出力する。また、6つ目の頂点座標に対するステップS85のループの処理では、頂点座標分配スケジューリング部143cは、ステップS86において、図23Dに示したように、領域ラベル生成部16−0に対応する累積領域面積バッファ[0]に、6つ目の頂点座標に対応する頂点画素に属する領域面積の大きさの値を加算して記憶する。そして、頂点座標分配スケジューリング部143cは、ステップS87において、受け取った6つ目の頂点座標に、領域ラベル生成部16−0を表す分配信号を付与し、分配信号を付与した6つ目の頂点座標を、頂点座標分配部15に出力する。
一方、ステップS88において、領域面積推定部141から全ての頂点座標を受け取ったと判定した場合(ステップS88の“YES”)、頂点座標分配スケジューリング部143cは、ステップS85のループの処理を終了し、分配信号の付与処理を終了する。
このような構成および動作によって、頂点座標分配スケジューリング部143cは、画像処理装置3に備えた領域ラベル生成部16の数よりも多くの頂点座標が領域面積推定部141から入力された場合に、入力されたそれぞれの頂点座標を、そのときに最も演算負荷が少ない領域ラベル生成部16に割り当てる。これにより、頂点座標分配スケジューリング部143cは、領域面積推定部141から入力された領域面積の情報(頂点密度の逆数)が紐付けられた頂点座標をそれぞれの領域ラベル生成部16に割り当てる際に、領域ラベル生成部16のそれぞれが行う演算負荷の総和が概ね均等になるように分配し、分配信号を付与したそれぞれの頂点座標を頂点座標分配部15に出力することができる。
第3の実施形態によれば、頂点座標分配スケジューリング部(頂点座標分配スケジューリング部143c)は、頂点画素が割り当てられていない領域ラベル生成部(領域ラベル生成部16)に頂点画素を順次割り当て、頂点画素が割り当てられていない領域ラベル生成部16がない場合には、割り当てられた領域面積の総和が最も小さい領域ラベル生成部16に、頂点画素を順次割り当てる画像処理装置(画像処理装置3)が構成される。
このように、第3の実施形態の画像処理装置3でも、第1の実施形態の画像処理装置1と同様に、頂点座標分配信号生成部14cが、それぞれの領域ラベル生成部16の演算負荷の総和が概ね均等になるように、演算を行う対象の頂点画素の頂点座標に、領域ラベル生成部16の割り当てを表す分配信号を予め付与する。このとき、第3の実施形態の画像処理装置3では、頂点座標分配信号生成部14cに備えた頂点座標分配スケジューリング部143cが、領域面積推定部141から順次入力された頂点座標を、そのときに最も演算負荷が少ない領域ラベル生成部16に逐次割り当てる。つまり、第3の実施形態の画像処理装置3では、第1の実施形態の画像処理装置1に備えた頂点座標分配信号生成部14内の頂点座標分配スケジューリング部143のように頂点座標を予め定めた順番に並べ替える(ソートする)処理を行わない。これにより、第3の実施形態の画像処理装置3では、それぞれの頂点座標を領域ラベル生成部16に分配するまでの処理を、輝度画像のフレームよりも小さな単位でパイプライン処理することができる。このことにより、第3の実施形態の画像処理装置3では、勾配データ生成部11が勾配データを生成したときから、それぞれの頂点座標を領域ラベル生成部16に分配するまでの処理の遅延量を削減する、つまり、スループットを短くすることができ、画像処理装置3における領域分割処理の全体の処理時間を短縮することができる。
なお、第3の実施形態の画像処理装置3では、図2に示した第1の実施形態の画像処理装置1に備えた頂点座標分配信号生成部14に代わって、頂点座標分配信号生成部14cを備えた構成および動作について説明した。しかし、上述したように、頂点座標分配信号生成部14cは、図19示した第2の実施形態の画像処理装置2に備えた頂点座標分配信号生成部14bに代わって備える構成であってもよい。しかし、頂点座標分配信号生成部14cを図19示した第2の実施形態の画像処理装置2に備える構成の画像処理装置3においても、その構成および動作は、上述した構成および動作と同様に考えることができるため、詳細な説明は省略する。
上記に述べたように、本発明の各実施形態によれば、入力された輝度画像に基づいて勾配データを生成し、生成した勾配データに含まれる頂点画素の位置を表す頂点座標に基づいて、それぞれの頂点画素に属する周辺画素の領域の面積(領域面積)を簡易的に推定する。そして、本発明の各実施形態では、推定した領域面積に基づいて、領域分割処理を並列に行う複数の演算リソースのそれぞれに、頂点画素に対する演算を分配する。これにより、本発明の各実施形態では、領域分割処理を複数の演算リソースで並列に行う際に、遊休する演算リソースの発生を抑制し、それぞれの演算リソースを効率的に稼働させることができる。このことにより、本発明の各実施形態では、画像処理装置1において領域分割処理に要する全体の処理時間の短縮を図ることができる。
なお、本発明の各実施形態では、それぞれの実施形態毎に異なる構成要素を備えた画像処理装置の構成を示した。しかし、それぞれの実施形態は、排他的な構成ではなく、それぞれの実施形態で示した構成は、各実施形態に示したいずれの構成の画像処理装置に備えてもよい。
また、本発明の各実施形態では、頂点座標分配スケジューリング部143および頂点座標分配スケジューリング部143cが、頂点座標を領域ラベル生成部16に割り当てるいくつかの方法(分配信号の付与処理)を説明したが、頂点座標を領域ラベル生成部16に割り当てる方法は、各実施形態で示した方法に限定されるものではない。
また、本発明の各実施形態では、例えば、頂点座標のように、画素の位置を座標で表す場合について説明したが、画素の位置を表す情報は、各実施形態で示したような座標に限定されるものではない。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。