JP2010134612A - 画像処理方法およびプログラム - Google Patents
画像処理方法およびプログラム Download PDFInfo
- Publication number
- JP2010134612A JP2010134612A JP2008308618A JP2008308618A JP2010134612A JP 2010134612 A JP2010134612 A JP 2010134612A JP 2008308618 A JP2008308618 A JP 2008308618A JP 2008308618 A JP2008308618 A JP 2008308618A JP 2010134612 A JP2010134612 A JP 2010134612A
- Authority
- JP
- Japan
- Prior art keywords
- image data
- pixels
- pixel
- rearranging
- simd
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Image Processing (AREA)
Abstract
【課題】SIMDを用いた画像データの空間フィルタ処理をより高速に実行する。
【解決手段】ステップS1において、演算ユニットは、処理対象の画像データにおいて水平方向に並んでいる画素が、メモリ上においてプロセッサエレメント数と同じ間隔で並ぶように画素を並び替え、ステップS2において、SDMI型プロセッサは、水平方向の空間フィルタ処理を実行する。ステップS3において、演算ユニットは、処理対象の画像データにおいて垂直方向に並んでいる画素が、メモリ上においてプロセッサエレメント数と同じ間隔で並ぶように画素を並び替え、ステップS4において、SDMI型プロセッサは、垂直方向の空間フィルタ処理を実行する。ステップS5において、演算ユニットは、画素の配列を元に戻す。本発明は、例えば、画像処理装置に適用できる。
【選択図】図2
【解決手段】ステップS1において、演算ユニットは、処理対象の画像データにおいて水平方向に並んでいる画素が、メモリ上においてプロセッサエレメント数と同じ間隔で並ぶように画素を並び替え、ステップS2において、SDMI型プロセッサは、水平方向の空間フィルタ処理を実行する。ステップS3において、演算ユニットは、処理対象の画像データにおいて垂直方向に並んでいる画素が、メモリ上においてプロセッサエレメント数と同じ間隔で並ぶように画素を並び替え、ステップS4において、SDMI型プロセッサは、垂直方向の空間フィルタ処理を実行する。ステップS5において、演算ユニットは、画素の配列を元に戻す。本発明は、例えば、画像処理装置に適用できる。
【選択図】図2
Description
本発明は、画像処理方法およびプログラムに関し、特に、SIMD(Single Instruction Multiple Data)を用いて空間フィルタ処理を行う場合に用いて好適な画像処理方法およびプログラムに関する。
従来、空間フィルタ処理などの画像処理を行う際に、SIMD(Single Instruction Multiple Data)の実行が可能なSIMD型プロセッサが用いられる場合がある(例えば、特許文献1または2参照)。SIMD型プロセッサを用いると、複数の画素に対して1つの命令で同じ処理を施すことができるため、処理の高速化が期待できる。
しかしながら、SIMD型プロセッサを用いて画像データの空間フィルタ処理を行う場合、例えば、処理対象となる画像データの幅が、SIMD型プロセッサが備えるプロセッサエレメントの数(以下、プロセッサエレメント数と称する)、すなわち、SIMD型プロセッサが1つの命令で処理することができるデータの数の倍数でないとき、SIMD型プロセッサ内で、シャッフル命令等を用いて何度も画素の並び替えを行う必要が生じる。その結果、処理が複雑になり、処理時間が長くなってしまう。
本発明は、このような状況を鑑みてなされたものであり、SIMDを用いた画像データの空間フィルタ処理をより高速に実行できるようにするものである。
本発明の一側面の画像処理方法またはプログラムは、空間フィルタ処理を行う方向であって、画像データの交差する2方向のいずれか一方である第1の方向に並んでいる画素が、メモリ上で所定の数と同じ間隔で並ぶように画像データの画素を並び替える第1の並び替えステップと、1つの命令で2以上の所定の数のデータに対する処理を行う演算手段を用いて、第1の並び替えステップにより画素を並び替えた後の画像データに対して第1の方向の空間フィルタ処理を実行する第1のフィルタステップと、メモリ上の画像データの画素の配列を、第1の並び替えステップにより並び替える前の配列に戻す復旧ステップとを含む。
本発明の一側面においては、空間フィルタ処理を行う方向であって、画像データの交差する2方向のいずれか一方である第1の方向に並んでいる画素が、メモリ上で所定の数と同じ間隔で並ぶように画像データの画素が並び替えられ、画素を並び替えた後の画像データに対して第1の方向の空間フィルタ処理が実行され、メモリ上の画像データの画素の配列が、並び替える前の配列に戻される。
本発明によれば、SIMDを用いた画像データの空間フィルタ処理をより高速に実行することができる。
以下、図面を参照して本発明を適用した実施の形態について説明する。
図1は、本発明を適用した情報処理装置の一実施の形態を示すブロック図である。図1の情報処理装置1においては、SIMD(Single Instruction Multiple Data)機能を有するプロセッサ(以下、適宜SIMD型プロセッサと称する)11が、キャッシュメモリ12に接続され、キャッシュメモリ12と主記憶装置13が相互に接続されている。
SIMD型プロセッサ11は、SIMD型プロセッサ11が備えるプロセッサエレメント数と同じ数のデータに対する処理を、1つの命令で実行可能なプロセッサである。SIMD型プロセッサ11においては、SIMD演算ユニット21およびSIMDレジスタ22が、内部バス25に接続され、内部バス25と外部インタフェース26が相互に接続されている。また、外部インタフェース26には、キャッシュメモリ12が接続されている。
SIMD演算ユニット21は、所定の数のプロセッサエレメントを備えており、最大でプロセッサエレメント数と同じ数のデータに対する処理を、1つの命令で実行することが可能である。SIMDレジスタ22は、SIMD演算ユニット21の演算対象となるデータを、プロセッサエレメント数の倍数単位で、外部インタフェース26および内部バス25を介して、キャッシュメモリ12から読み出し、格納する。SIMD演算ユニット21は、SIMDレジスタ22に格納されたデータを利用して各種の演算を実行し、演算結果を示すデータをSIMDレジスタ22に格納する。SIMDレジスタ22は、内部バス25および外部インタフェース26を介して、演算結果を示すデータをキャッシュメモリ12に書き込む。
また、SIMD型プロセッサ11は、内部バス25に接続する演算ユニット23とレジスタ24を有している。演算ユニット23とレジスタ24で構成される部分は、通常のプロセッサ、すなわち、1つの命令で1つのデータに対する処理を実行可能なプロセッサを構成している。この部分においては、演算ユニット23およびレジスタ24が、内部バス25に接続され、内部バス25と外部インタフェース26が相互に接続されている。また、外部インタフェース26には、キャッシュメモリ12が接続されている。
レジスタ24は、演算ユニット23の演算対象となるデータを、外部インタフェース26および内部バス25を介して、キャッシュメモリ12から読み出し、格納する。演算ユニット23は、レジスタ24に格納されたデータを利用して各種の演算を実行し、演算結果を示すデータをレジスタ24に格納する。レジスタ24は、内部バス25および外部インタフェース26を介して、演算結果を示すデータをキャッシュメモリ12に書き込む。
なお、以下、説明を分かりやすくするために、SIMD演算ユニット21とキャッシュメモリ12との間、SIMDレジスタ22とキャッシュメモリ12との間、演算ユニット23とキャッシュメモリ12との間、および、レジスタ24とキャッシュメモリ12との間の通信経路における、内部バス25および外部インタフェース26の記載を省略するものとする。また、以下の説明でSIMD型演算を行う部分をSIMD型プロセッサ部と呼ぶことがある。
キャッシュメモリ12は、主記憶装置13と比較して、容量が小さく高速な記憶媒体であり、例えば、SRAM(Static Random Access Memory)により構成される。一方、主記憶装置13は、キャッシュメモリ12と比較して、容量が大きく低速な記憶媒体であり、例えば、ハードディスクドライブにより構成される。キャッシュメモリ12は、SIMD型プロセッサ11とは独立して、主記憶装置13からデータを読み出し保持したり、保持しているデータを主記憶装置13に記憶させたりする。
そして、SIMD型プロセッサ11は、キャッシュメモリ12を介して、主記憶装置13へのアクセスを行う。すなわち、SIMD型プロセッサ11は、読み出すデータがキャッシュメモリ12に保持されている場合、キャッシュメモリ12からそのデータを読み出す。一方、読み出すデータがキャッシュメモリ12に保持されていない場合、キャッシュメモリ12が、SIMD型プロセッサ11の指示の基に、そのデータを主記憶装置13から読み出し、SIMD型プロセッサ11は、キャッシュメモリ12が読み出したデータを取得する。従って、SIMD型プロセッサ11が使用するデータがキャッシュメモリ12に保持されている確率が高くなるほど、演算速度を高速化することができる。
また、SIMD型プロセッサ11は、主記憶装置13にデータを書き込む場合、そのデータをキャッシュメモリ12に書き込み、キャッシュメモリ12が、書き込まれたデータを主記憶装置13に記憶させる。
また、主記憶装置13には、例えば、SIMD型プロセッサ11が実行するプログラムが格納される。そのプログラムは、例えば、図示せぬプログラム記録媒体などからインストールされる。
次に、図2のフローチャートを参照して、情報処理装置1により実行される空間フィルタ処理について説明する。
なお、以下、SIMD型プロセッサ部が備えるプロセッサエレメント数を4つとして説明する。すなわち、SIMD型プロセッサ11のSIMD演算ユニット21が、1つの命令で4つのデータに対する処理を行うことが可能であるものとする。
また、以下、図3に示される縦10行×横9列の画像データID1に対して、図4に示される縦3行×横3列のカーネル61を用いた平均化フィルタ処理を行う場合の処理を、適宜具体例として挙げながら説明する。なお、この平均化フィルタ処理により、画像データID1の各画素の画素値が、その画素を中心とする縦3行×横3列の範囲内の画素の画素値の平均値に置き換えられる。
さらに、以下、画像データID1の行番号をaからjまでのアルファベットにより表し、列番号を1から9までの数字で表す。また、画像データID1の座標(x,y)の画素をPxyと表し、その画素値をVxyと表す。例えば、画像データID1の座標(1,a)の画素P1aの画素値はV1aとなり、座標(9,j)の画素P9jの画素値はV9jとなる。
また、図5および図6は、主記憶装置13上での画像データID1の画素の配列を示している。図5は、主記憶装置13上での画像データID1の画素の配列を、横に並べて示した図であり、図6は、SIMD型プロセッサ部のプロセッサエレメント数と同じ数の4画素ごとに改行して示した図である。図5および図6に示されるように、画像データID1の画素は、主記憶装置13において、ラスタ順(画像の左上の画素から右に向かって配置し、次に下の段に移って配置を繰り返す配置順)に並べて配置されている。
ステップS1において、演算ユニット23は、処理対象の画像データにおいて水平方向に並んでいる画素が、メモリ上においてプロセッサエレメント数と同じ間隔で並ぶように画素を並び替える。
ここで、図7乃至図9を参照して、ステップS1の処理における最終的な画素の配列の決め方について説明する。
まず、画像データの行数、すなわち、画像データの垂直方向の画素数が、SIMD型プロセッサ部のプロセッサエレメント数の倍数でない場合、行数がプロセッサエレメント数の倍数になるように、ダミーの画素からなるダミー行を画像データに付加する。
例えば、図3の画像データID1の場合、行数が10行であり、プロセッサエレメント数の倍数、すなわち、4の倍数でないため、図7に示されるように、行数が4の倍数の12行になるように、画像データID1の下端に2行のダミー行が付加される。なお、ダミー行の画素の画素値は、任意の値とすることができる。
なお、画像データの行数が、SIMD型プロセッサ部のプロセッサエレメント数の倍数である場合には、ダミー行を付加する必要はない。
次に、行数をプロセッサエレメント数の倍数とした後の画像データを、プロセッサエレメント数と同じ行数ごとのブロックに分割する。例えば、画像データID1にダミー行を付加した後の図7の画像データID2が、4行ごとのブロックB21乃至B23に分割される。なお、ブロックB21は、画像データID2の1行目から4行目に相当し、ブロックB22は、画像データID2の5行目から8行目に相当し、ブロックB23は、画像データID2の9行目から12行目(ただし、11,12行目はダミー行)に相当する。
次に、ブロックごとに縦横を入れ替え、入れ替えた後のブロックを縦に並べた画像データを生成する。例えば、図7の画像データID2から、図8に示される、ブロックB31乃至B33が縦に並べられた画像データID3が生成される。なお、ブロックB31は、画像データID2のブロックB21の左上隅の画素P1aを基点にして、ブロックB21の縦横を入れ替えたブロックであり、ブロックB32は、画像データID2のブロックB22の左上隅の画素P1eを基点にして、ブロックB22の縦横を入れ替えたブロックであり、ブロックB33は、画像データID2のブロックB23の左上隅の画素P1iを基点にして、ブロックB23の縦横を入れ替えたブロックである。
そして、生成した画像データの画素をラスタ順に並べたものが、ステップS1の処理における最終的な画素の配列となる。
図9は、図3の画像データID1に対する、ステップS1における最終的な画素の配列を示している。すなわち、図9の画素の配列は、図8の画像データID3の画素をラスタ順に横に並べたものである。逆に、図8の画像データID3の画素の配列は、図9の画素の配列を、SIMD型プロセッサ部のプロセッサエレメント数と同じ数の4画素ごとに改行したものと等しい。
図8および図9の画素の配列では、画像データID1において水平方向に隣接する画素が、プロセッサエレメント数と同じ間隔で、すなわち、4つおきに配置されている。例えば、画像データID1のa行目について見た場合、図9の画素の配列において、画素P1aが先頭から1番目、画素P2aが先頭から5番目、画素P3aが先頭から9番目といったように、画像データID1のa行目において水平方向に隣接する画素が4つ置きに配置されている。これは、他の行の画素についても同様である。
なお、上述したようにダミー行を付加することにより、画像データID1の行数がプロセッサエレメント数の倍数でなくても、画像データID1の全ての行の画素について、水平方向に隣接する画素が4つ置きに配置されるようになる。
ステップS1において、演算ユニット23は、例えば、図3の画像データID1が処理対象となっている場合、主記憶装置13上で図5に示されるように並べられている画素の配列を、図9に示される最終的な画素の配列となるように、すなわち、図8の画像データID3の画素のラスタ順と同じ順番に、画像データID1の画素の並び替えを行う。
ステップS2において、SIMD型プロセッサ部は、水平方向の空間フィルタ処理を実行する。いまの例の場合、SIMD演算ユニット21は、画像データID1に対して、水平方向の平均化フィルタ処理を行う。すなわち、SIMD演算ユニット21は、画像データID1の各画素について、その画素とその画素の水平方向に隣接する画素との画素値の平均値を求め、求めた平均値を新しい画素値として置き換える。例えば、画素P5eについて考えた場合、画素P5e、画素P4eおよび画素P6eの画素値の平均値V5e'(=(V4e+V5e+V6e)÷3)を求め、求めた平均値V5e'を画素P5eの新しい画素値とする処理が行われる。
なお、以下、水平方向の平均化フィルタ処理を実行した後の画像データID1の座標(x,y)の画素Pxyの画素値を、Vxy'と表す。
ところで、上述したように、SIMD演算ユニット21は、1つの命令で4つのデータに対する処理を行うことが可能である。また、上述したように、ステップS1の処理において並べ替えた後の画素の配列においては、画像データID1の水平方向に隣接する画素が、SIMD型プロセッサ部のプロセッサエレメント数と同じ4つおきに配置されている。
従って、例えば、図8に示される画素の配列において注目する行(以下、注目行と称する)の4つの画素の水平方向の平均化フィルタ処理を、注目行と注目行の上下に隣接する行の、主記憶装置13上で連続して配置されている12個の画素を用いて一度に行うことができる。例えば、画素P4e乃至P4h、画素P5e乃至P5h、および、画素P6e乃至P6hの、主記憶装置13上で連続して配置されている12個の画素を用いて、画素P5e乃至P5hの4つの画素の水平方向の平均化フィルタ処理を一度に行うことができる。
なお、注目行の画素が画像データID1の左端または右端の画素である場合は、注目行と注目行の上または下のどちらか一方の行の8個の画素を用いて水平方向の平均化フィルタ処理が行われることになる。
これにより、SIMD演算ユニット21は、図8に示される画素の配列において、先頭の行から順番に4画素ずつ読み出していきながら、先頭の行から順番に4画素ずつ水平方向の平均化フィルタ処理を実行することができる。従って、シャッフル命令等を用いて、SIMD型プロセッサ部内で画素の並び替えを行う必要がない。また、画像データID1の画素を配列の先頭から順番に読み出していけばよいため、必要な画素がキャッシュメモリ12に保持されている確率を上げることができるとともに、必要な画素が格納されている主記憶装置13のアドレスを頻繁に検索する必要がなくなる。その結果、処理を実行するためのプログラムの構成を簡素化することができ、処理時間を短縮することができる。
なお、ステップS2において、ステップS1に付加したダミーの画素についても、他の画素と同様に処理されるが、その演算結果は、画像データID1の他の画素に影響を及ぼすものではなく、そのまま廃棄すればよい。
ステップS3において、演算ユニット23は、処理対象の画像データにおいて垂直方向に並んでいる画素が、メモリ上においてプロセッサエレメント数と同じ間隔で並ぶように画素を並び替える。
ここで、図10乃至図12を参照して、ステップS3の処理における最終的な画素の配列の決め方について説明する。
まず、画像データの列数、すなわち、画像データの水平方向の画素数が、SIMD型プロセッサ部のプロセッサエレメント数の倍数でない場合、列数がプロセッサエレメント数の倍数になるように、ダミーの画素からなるダミー列を画像データに付加する。
例えば、図3の画像データID1の場合、列数が9列であり、プロセッサエレメント数の倍数、すなわち、4の倍数でないため、図10に示されるように、列数が4の倍数の12列になるように、画像データID1の右端に3列のダミー列が付加される。なお、ダミー列の画素の画素値は、任意の値とすることができる。
なお、画像データの列数が、SIMD型プロセッサ部のプロセッサエレメント数の倍数である場合には、ダミー列を付加する必要はない。
次に、列数をプロセッサエレメント数の倍数とした後の画像データを、プロセッサエレメント数と同じ列数ごとのブロックに分割する。例えば、画像データID1にダミー列を付加した後の図10の画像データID4が、4列ごとのブロックB41乃至B43に分割される。なお、ブロックB41は、画像データID4の1列目から4列目に相当し、ブロックB42は、画像データID4の5列目から8列目に相当し、ブロックB43は、画像データID4の9列目から12列目(ただし、10乃至12列目はダミー列)に相当する。
次に、各ブロックを縦に並べた画像データを生成する。例えば、図10の画像データID4から、図11に示される、画像データID4のブロックB41乃至B43を縦に並べた画像データID5が生成される。
そして、生成した画像データの画素をラスタ順に並べたものが、ステップS3の処理における最終的な画素の配列となる。
図12は、図3の画像データID1に対する、ステップS3における最終的な画素の配列を示している。すなわち、図12の画素の配列は、図11の画像データID4の画素をラスタ順に横に並べたものである。逆に、図11の画像データID5の画素の配列は、図12の画素の配列を、SIMD型プロセッサ部のプロセッサエレメント数と同じ数の4画素ごとに改行したものと等しい。
図11および図12の画素の配列では、画像データID1において垂直方向に隣接する画素が、プロセッサエレメント数と同じ間隔で、すなわち、4つおきに配置されている。例えば、画像データID1の1列目について見た場合、図12の画素の配列において、画素P1aが先頭から1番目、画素P1bが先頭から5番目、画素P1cが先頭から9番目といったように、画像データID1の1列目において垂直方向に隣接する画素が4つ置きに配置されている。これは、他の列の画素についても同様である。
なお、上述したようにダミー列を付加することにより、画像データID1の列数がプロセッサエレメント数の倍数でなくても、画像データID1の全ての列の画素について、垂直方向に隣接する画素が4つ置きに配置されるようになる。
ステップS3において、演算ユニット23は、例えば、図3の画像データID1が処理対象となっている場合、主記憶装置13上で図9に示されるように並べられている画素の配列を、図12に示される最終的な画素の配列となるように、すなわち、図11の画像データID4の画素のラスタ順と同じ順番に、水平方向の平均化フィルタ処理を実行した後の画像データID1の画素の並び替えを行う。
ステップS4において、SIMD型プロセッサ部は、垂直方向の空間フィルタ処理を実行する。いまの例の場合、SIMD演算ユニット21は、画像データID1に対して、垂直方向の平均化フィルタ処理を行う。すなわち、SIMD演算ユニット21は、水平方向の平均化フィルタ処理を実行した後の画像データID1の各画素について、その画素とその画素の垂直方向に隣接する画素との画素値の平均値を求め、求めた平均値を新しい画素値として置き換える。例えば、画素P5eについて考えた場合、画素P5e、画素P5dおよび画素P5fの画素値の平均値V5e''(=(V5d'+V5e'+V5f')÷3)を求め、求めた平均値V5e''を画素P5eの新しい画素値とする処理が行われる。
なお、以下、垂直方向の平均化フィルタ処理を実行した後の画像データID1の座標(x,y)の画素Pxyの画素値を、Vxy''と表す。
ところで、上述したように、ステップS3の処理において並べ替えた後の画素の配列においては、画像データID1の垂直方向に隣接する画素が、SIMD型プロセッサ部のプロセッサエレメント数と同じ4つおきに配置されている。従って、ステップS2の処理と同様に、SIMD演算ユニット21は、図11に示される画素の配列において、先頭の行から順番に4画素ずつ読み出していきながら、先頭の行から順番に4画素ずつ垂直方向の平均化フィルタ処理を実行することができる。そして、このステップS4の処理は、処理対象となる画素の配列が変更されているだけで、ステップS2の処理と実質的に同じ処理となる。
ここで、図13を参照して、ステップS2およびS4の処理で実行される平均化フィルタ処理の演算について、もう少し詳細に説明する。なお、以下、画像データID1の画素P5fに注目して、説明を行う。
図13は、ステップS2およびS4の処理において、注目画素である画素P5fおよび画素P5fに隣接する8つの画素(画素P4e,P5e,P6e,P4f,P6f,P4g,P5gおよびP6g)の画素値の変化を示した図である。
図13のいちばん上の図は、処理前の画素値を示している。処理前の画素P4e乃至P6gの画素値は、それぞれV4e乃至V6gである。
図13のまん中の図は、ステップS2の処理で水平方向の平均化フィルタ処理を実行した後の画素値を示している。水平方向の平均化フィルタ処理の実行後の画素P4e乃至P6gの画素値は、それぞれV4e'乃至V6g'となる。そのうち、画素P5e乃至P5gの画素値V5e'乃至V5g'は、以下の式(1)乃至(3)により求められる。
V5e'=(V4e+V5e+V6e)/3 ・・・(1)
V5f'=(V4f+V5f+V6f)/3 ・・・(2)
V5g'=(V4g+V5g+V6g)/3 ・・・(3)
V5f'=(V4f+V5f+V6f)/3 ・・・(2)
V5g'=(V4g+V5g+V6g)/3 ・・・(3)
図13のいちばん下の図は、ステップS4の処理で垂直方向の平均化フィルタ処理を実行した後の画素値を示している。垂直方向の平均化フィルタ処理の実行後の画素P4e乃至P6gの画素値は、それぞれV4e''乃至V6g''となる。そのうち、注目画素P5fの画素値V5f''は、以下の式(4)により求められる。
V5f''=(V5e'+V5f'+V5g')/3
={(V4e+V5e+V6e)/3+(V4f+V5f+V6f)/3+(V4g+V5g+V6g)/3}/3
=(V4e+V5e+V6e+V4f+V5f+V6f+V4g+V5g+V6g)/9 ・・・(4)
={(V4e+V5e+V6e)/3+(V4f+V5f+V6f)/3+(V4g+V5g+V6g)/3}/3
=(V4e+V5e+V6e+V4f+V5f+V6f+V4g+V5g+V6g)/9 ・・・(4)
なお、この方法では、各画素の画素値を求める際に、2回除算を行う必要があり、厳密に言えば、式(4)の最終式を直接用いて1回の除算だけで画素値を求める場合と比較して、演算結果に相違が出る場合がある。しかし、各画素の画素値は量子化されるため、その演算結果の相違は、実際には問題にならないレベルとなる。
図2に戻り、ステップS5において、演算ユニット23は、画素の配列を元に戻す。すなわち、演算ユニット23は、主記憶装置13上における画像データの画素の配列を、ステップS1の処理により並び替える前の画素の配列に戻す。いまの例の場合、主記憶装置13上における、水平方向および垂直方向の平均化フィルタ処理を実行した後の画像データID1の画素の配列が、図12に示される配列から、図5に示される配列に戻される。
ステップS6において、演算ユニット23は、各画素に対して最終的な処理を行う。なお、この処理は、現在例として挙げている平均化フィルタ処理では実行する必要はないため、具体例として、図13乃至図15を参照しながら、8方向のラプラシアンフィルタを画像データID1に適用する場合について説明する。なお、以下、画像データID1の画素P5fに注目して、説明を行う。
図14は、8方向のラプラシアンフィルタに用いるカーネルの例を示している。カーネル101を用いたラプラシアンフィルタを適用した場合、注目画素P5fの画素値Vは、以下の式(5)により求められる。
V=V4e×(-1)+V5e×(-1)+V6e×(-1)+V4f×(-1)+V5f×8+V6f×(-1)
+V4g×(-1)+V5g×(-1)+V6g×(-1) ・・・(5)
+V4g×(-1)+V5g×(-1)+V6g×(-1) ・・・(5)
ただし、実際の処理では、まず、ステップS2およびS4の処理において、図15の縦3行×横3列のカーネル111を用いた空間フィルタ処理が行われる。すなわち、ステップS2において、以下の式(6)乃至(8)の演算が行われる。
V5e'=V4e×(-1)+V5e×(-1)+V6e×(-1) ・・・(6)
V5f'=V4f×(-1)+V5f×(-1)+V6f×(-1) ・・・(7)
V5g'=V4g×(-1)+V5g×(-1)+V6g×(-1) ・・・(8)
V5f'=V4f×(-1)+V5f×(-1)+V6f×(-1) ・・・(7)
V5g'=V4g×(-1)+V5g×(-1)+V6g×(-1) ・・・(8)
次に、ステップS4において、以下の式(9)の演算が行われる。
V5f''=V5e'+V5f'+V5g'
=V4e×(-1)+V5e×(-1)+V6e×(-1)+V4f×(-1)+V5f×(-1)+V6f×(-1)
+V4g×(-1)+V5g×(-1)+V6g×(-1) ・・・(9)
=V4e×(-1)+V5e×(-1)+V6e×(-1)+V4f×(-1)+V5f×(-1)+V6f×(-1)
+V4g×(-1)+V5g×(-1)+V6g×(-1) ・・・(9)
最後に、ステップS6において、以下の式(10)の演算が行われる。
V5f'''=V5f''+V5f×9
=V4e×(-1)+V5e×(-1)+V6e×(-1)+V4f×(-1)+V5f×8+V6f×(-1)
+V4g×(-1)+V5g×(-1)+V6g×(-1) ・・・(10)
=V4e×(-1)+V5e×(-1)+V6e×(-1)+V4f×(-1)+V5f×8+V6f×(-1)
+V4g×(-1)+V5g×(-1)+V6g×(-1) ・・・(10)
このようにして、カーネルの範囲内の各画素に対する演算が、画素ごとに異なる空間フィルタ処理についても実行することが可能になる。
以上のようにして、SIMDを用いた画像データの空間フィルタ処理をより高速に実行することが可能になる。
なお、上述した例とは逆に、垂直方向、水平方向の順番に空間フィルタ処理を実行する場合、図2のステップS1およびS2の処理と、ステップS3およびS4の処理の順番を入れ替えるようにすればよい。
また、水平方向の空間フィルタ処理のみを実行する場合、ステップS3およびS4の処理を省略することができ、垂直方向の空間フィルタ処理のみを実行する場合、ステップS1およびS2の処理を省略することができる。
さらに、以上の説明では、平均化フィルタ処理およびラプラシアンフィルタ処理を実行する場合の例を示したが、本発明は、その他の空間フィルタ処理を実行する場合にも適用することが可能である。
また、上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。
なお、SIMD型プロセッサ11が実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
1 情報処理装置, 11 SIMD型プロセッサ, 12 キャッシュメモリ, 13 主記憶装置, 21 SIMD演算ユニット, 22 SIMDレジスタ, 23 演算ユニット, 24 レジスタ
Claims (5)
- 1つの命令で2以上の所定の数のデータに対する処理を行う演算手段を用いて、画像データの空間フィルタ処理を行う画像処理方法において、
空間フィルタ処理を行う方向であって、前記画像データの交差する2方向のいずれか一方である第1の方向に並んでいる画素が、メモリ上で前記所定の数と同じ間隔で並ぶように前記画像データの画素を並び替える第1の並び替えステップと、
前記演算手段を用いて、第1の並び替えステップにより画素を並び替えた後の前記画像データに対して前記第1の方向の空間フィルタ処理を実行する第1のフィルタステップと、
前記メモリ上の前記画像データの画素の配列を、前記第1の並び替えステップにより並び替える前の配列に戻す復旧ステップと
を含むことを特徴とする画像処理方法。 - 前記画像データの画素がラスタ順に前記メモリ上に配置される場合、前記第1の並び替えステップにおいて、前記第1の方向が水平方向であるとき、前記所定の数と同じ行数ごとのブロックに前記画像データを分割し、分割したブロックごとに縦横を入れ替え、縦横を入れ替えた後のブロックを縦に並べることにより生成される画像データの画素のラスタ順と同じ順番に画素を並び替え、前記第1の方向が垂直方向であるとき、前記所定の数と同じ列数ごとのブロックに前記画像データを分割し、分割したブロックを縦に並べることにより生成される画像データの画素のラスタ順と同じ順番に画素を並び替える
ことを特徴とする請求項1に記載の画像処理方法。 - 前記第1の並び替えステップにおいて、前記画像データの前記第1の方向と直交する第2の方向の画素数が前記所定の数の倍数でない場合、前記第2の方向の画素数が前記所定の数の倍数になるようにダミーの画素を付加し、前記ダミーの画素を付加した前記画像データに対して画素の並び替えを行う
ことを特徴とする請求項2に記載の画像処理方法。 - 前記第1の方向と直交する第2の方向の空間フィルタ処理をさらに行う場合、
前記第1の並び替えステップと前記復旧ステップとの間において、
前記画像データの前記第2の方向に並んでいる画素が、前記メモリ上で前記所定の数と同じ間隔で並ぶように前記画像データの画素を並び替える第2の並び替えステップと、
前記演算手段を用いて、前記第2の並び替えステップにより画素を並び替えた後の前記画像データに対して前記第2の方向の空間フィルタ処理を実行する第2のフィルタステップと
をさらに含むことを特徴とする請求項1乃至3のいずれかに記載の画像処理方法。 - 1つの命令で2以上の所定の数のデータに対する処理を行う演算手段を備えるコンピュータに、
空間フィルタ処理を行う方向であって、画像データの交差する2方向のいずれか一方である第1の方向に並んでいる画素が、メモリ上で前記所定の数と同じ間隔で並ぶように前記画像データの画素を並び替える第1の並び替えステップと、
前記演算手段を用いて、第1の並び替えステップにより画素を並び替えた後の前記画像データに対して前記第1の方向の空間フィルタ処理を実行する第1のフィルタステップと、
前記メモリ上の前記画像データの画素の配列を、前記第1の並び替えステップにより並び替える前の配列に戻す復旧ステップと
を含む処理を実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008308618A JP2010134612A (ja) | 2008-12-03 | 2008-12-03 | 画像処理方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008308618A JP2010134612A (ja) | 2008-12-03 | 2008-12-03 | 画像処理方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010134612A true JP2010134612A (ja) | 2010-06-17 |
Family
ID=42345865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008308618A Withdrawn JP2010134612A (ja) | 2008-12-03 | 2008-12-03 | 画像処理方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010134612A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180018785A (ko) | 2015-11-06 | 2018-02-21 | 오므론 가부시키가이샤 | 조밀 탐색 방법 및 화상 처리 장치 |
-
2008
- 2008-12-03 JP JP2008308618A patent/JP2010134612A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180018785A (ko) | 2015-11-06 | 2018-02-21 | 오므론 가부시키가이샤 | 조밀 탐색 방법 및 화상 처리 장치 |
US10366307B2 (en) | 2015-11-06 | 2019-07-30 | Omron Corporation | Coarse-to-fine search method, image processing device and recording medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6992005B2 (ja) | コンピューティングシステムにおけるアンチエイリアシング動作の実行 | |
KR100935308B1 (ko) | 실행 엔진을 포함하는 프로세싱 시스템에서 피연산자에 대해 인스트럭션을 실행하는 방법, 장치 및 시스템 | |
WO2019127517A1 (zh) | 数据处理方法、设备、dma控制器及计算机可读存储介质 | |
KR100503094B1 (ko) | 넓은 메모리 밴드위스를 갖는 디지털 신호 처리 장치 및그 메모리 맵핑 방법 | |
CN106960412B (zh) | 包括多个缓冲区的存储器设备和驱动存储器的方法 | |
WO2022206556A1 (zh) | 图像数据的矩阵运算方法、装置、设备及存储介质 | |
US20160026646A1 (en) | Recording medium having data recorded therein in data file format structure for visualization of large capacity cfd parallel data and method for generating said data file format structure | |
JP2022508028A (ja) | 3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末 | |
JP2020126651A (ja) | ニューラルネットワークのコンボルーション演算を処理する方法及び装置 | |
JP2008524723A (ja) | 単一命令複数データ実行エンジンのフラグレジスタのための評価ユニット | |
US10902087B2 (en) | Device and method for accelerating matrix multiply operations as a sum of outer products | |
US11409840B2 (en) | Dynamically adaptable arrays for vector and matrix operations | |
KR102574449B1 (ko) | 데이터 처리 방법 및 장치 | |
JP2010134612A (ja) | 画像処理方法およびプログラム | |
WO2021070303A1 (ja) | 演算処理装置 | |
US8473948B1 (en) | Method for synchronizing independent cooperative thread arrays running on a graphics processing unit | |
CN110087088B (zh) | 一种基于运动估计的数据存储方法、终端设备及存储介质 | |
US20180095929A1 (en) | Scratchpad memory with bank tiling for localized and random data access | |
US9317474B2 (en) | Semiconductor device | |
KR101547366B1 (ko) | 병렬 프로세서용 어드레싱 디바이스 | |
WO2020192212A1 (zh) | 图片处理方法、图集处理方法、计算机设备和存储介质 | |
CN113076520A (zh) | 基于gpu的异构大型矩阵求解方法 | |
US8416252B2 (en) | Image processing apparatus and memory access method thereof | |
JP7420100B2 (ja) | 処理装置、処理方法、およびプログラム | |
JP2013073247A (ja) | Simdプロセッサ及びコントロールプロセッサ並びにプロセッサ要素 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20120207 |