JP2016018490A - エッジ検出方法、エッジ検出装置及びエッジ検出プログラム - Google Patents
エッジ検出方法、エッジ検出装置及びエッジ検出プログラム Download PDFInfo
- Publication number
- JP2016018490A JP2016018490A JP2014142407A JP2014142407A JP2016018490A JP 2016018490 A JP2016018490 A JP 2016018490A JP 2014142407 A JP2014142407 A JP 2014142407A JP 2014142407 A JP2014142407 A JP 2014142407A JP 2016018490 A JP2016018490 A JP 2016018490A
- Authority
- JP
- Japan
- Prior art keywords
- pixel
- gradient
- value
- intensity
- pixel value
- 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.)
- Pending
Links
Images
Landscapes
- Image Analysis (AREA)
Abstract
【課題】画像中の画素毎に各段階の処理結果を格納する場合に比べて少ない内部バッファで、Canny法によるエッジ検出の処理効率を向上する。【解決手段】画像中の注目画素における画素値である注目画素値の勾配の強度及び注目画素値の勾配の方向を算出し、注目画素値の勾配が算出される毎に、注目画素値の非最大抑制処理のうち、注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を注目画素値の勾配の強度との比較の対象として参照する第1処理と、第1画素のそれぞれに対する非最大抑制処理のうち、注目画素値の勾配の強度を第1画素の画素値の勾配の強度との比較の対象として参照する第2処理とを実行し、第1画素を含む非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び第2画素を囲む複数の画素の画素値の勾配の強度のそれぞれと、第1閾値及び第1閾値よりも大きい第2閾値との比較に基づいて、第2画素がエッジであるか否かを判定する。【選択図】 図1
Description
本発明は、エッジ検出方法、エッジ検出装置及びエッジ検出プログラムに関する。
Canny法によるエッジ検出技術は、画像から高い精度でエッジを検出することができる(例えば、特許文献1、特許文献2、特許文献3及び特許文献4参照)。
Canny法によるエッジ検出技術では、3段階の処理により、画像からエッジを検出する。第1段階の処理は、Sobelフィルタなどを用いて各画素における輝度値等の勾配を求める処理である。第2段階の処理は、画像の中の注目する画素である注目画素において求められた勾配の強度と、勾配の方向に注目画素に隣接する2つの画素の勾配の強度との比較に基づいて、注目画素がエッジである可能性があるか否かを判定する処理である。第2段階の処理は、注目画素の勾配の強度が隣接する画素の何れかの勾配の強度以下である場合に、注目画素の勾配の強度を、例えば、値「0」に置き換えることで、エッジとして検出されることを抑制することから、非最大抑制処理と呼ばれる場合がある。第3段階の処理は、注目画素の勾配の強度及び注目画素に隣接する画素の勾配の強度のそれぞれと第1閾値及び第1閾値よりも大きい第2閾値のそれぞれとの比較に基づいて、注目画素がエッジであるか否かを判定する処理である。第3段階の処理は、2つの閾値を用いることから、ヒステリシス閾値処理と呼ばれる場合がある。ヒステリシス閾値処理では、まず、注目画素の勾配の強度が第2閾値よりも大きい場合に、注目画素をエッジとして検出する。また、ヒステリシス閾値処理では、例えば、注目画素の勾配の強度が第1閾値よりも大きく、第2閾値以下であり、かつ、注目画素に隣接する画素の中に第2閾値よりも大きい勾配の強度を持つ画素がある場合に、注目画素をエッジとして検出する。
Canny法によるエッジ検出処理の各段階の処理は、前の段階の処理結果を用いるため、並列化が困難である。また、画像に含まれる全ての画素について各段階の処理で得られる結果を示す情報量は大きい。このため、Canny法によるエッジ検出処理の各段階を実行する処理ユニットの内部に、画像中の全ての画素について各段階の処理で得られた結果を示す情報を格納可能な容量を持つバッファメモリを設けることは困難である。一方、Canny法の各段階の処理の結果を保持させるために、エッジ検出処理用の処理ユニットの外部にフレームメモリなどの記憶装置を設けると、バッファメモリを用いる場合に比べてエッジ検出処理にかかる時間が長くなってしまう。なぜなら、フレームメモリとして用いられるSDRAM(Synchronous Dynamic Random Access Memory)等へのアクセスには、バッファメモリへのアクセスに比べて長い時間がかかるため、各段階の処理結果の書き出し及び参照にかかる時間が増大するからである。
本件開示のエッジ検出方法、エッジ検出装置及びエッジ検出プログラムは、画像中の画素毎に各段階の処理結果を格納する場合に比べて少ない内部バッファを用いて、Canny法によるエッジ検出の処理効率の向上を実現する技術を提供することを目的とする。
一つの観点によれば、エッジ検出方法は、画像における画素の並び順に従って順次に特定される注目画素の画素値と注目画素の周囲の複数の画素の画素値とに基づいて、注目画素における画素値である注目画素値の勾配の強度及び注目画素値の勾配の方向を算出し、注目画素値の勾配が算出される毎に、注目画素値の勾配の強度が注目画素値の勾配の方向に隣接する画素の少なくとも一方の画素値の勾配の強度よりも小さい場合に注目画素値の勾配の強度を第1閾値よりも小さい値に置き換える処理である非最大抑制処理のうち、注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を注目画素値の勾配の強度との比較の対象として参照する第1処理と、第1画素のそれぞれに対する非最大抑制処理のうち、注目画素値の勾配の強度を第1画素の画素値の勾配の強度との比較の対象として参照する第2処理とを実行し、第1画素を含む非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び第2画素を囲む複数の画素の画素値の勾配の強度のそれぞれと、第1閾値及び第1閾値よりも大きい第2閾値との比較に基づいて、第2画素がエッジであるか否かを判定する第3処理を実行する。
別の観点によれば、エッジ検出装置は、画像における画素の並び順に従って順次に特定される注目画素の画素値と注目画素の周囲の複数の画素の画素値とに基づいて、注目画素における画素値である注目画素値の勾配の強度及び注目画素値の勾配の方向を算出する算出部と、算出部で算出した注目画素値の勾配を用いて、注目画素値の勾配の強度が注目画素値の勾配の方向に隣接する画素の少なくとも一方の画素値の勾配の強度よりも小さい場合に注目画素値の勾配の強度を第1閾値よりも小さい値に置き換える処理である非最大抑制処理のうち、注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を注目画素値の勾配の強度との比較の対象として参照する第1処理を行う第1抑制部と、算出部で算出した注目画素値の勾配を用いて、第1画素のそれぞれに対する非最大抑制処理のうち、注目画素値の勾配の強度を第1画素の画素値の勾配の強度との比較の対象として参照する第2処理を行う第2抑制部と、第1画素を含む非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び第2画素を囲む各画素の画素値の勾配の強度のそれぞれと、第1閾値及び第1閾値よりも大きい第2閾値との比較に基づいて、第2画素がエッジであるか否かを判定する第3処理を実行する判定部とを有する。
また、別の観点によれば、エッジ検出プログラムは、画像における画素の並び順に従って順次に特定される注目画素の画素値と注目画素の周囲の複数の画素の画素値とに基づいて、注目画素における画素値である注目画素値の勾配の強度及び注目画素値の勾配の方向を算出し、注目画素値の勾配が算出される毎に、注目画素値の勾配の強度が注目画素値の勾配の方向に隣接する画素の少なくとも一方の画素値の勾配の強度よりも小さい場合に注目画素値の勾配の強度を第1閾値よりも小さい値に置き換える処理である非最大抑制処理のうち、注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を注目画素値の勾配の強度との比較の対象として参照する第1処理と、第1画素のそれぞれに対する非最大抑制処理のうち、注目画素値の勾配の強度を第1画素の画素値の勾配の強度との比較の対象として参照する第2処理とを実行し、第1画素を含む非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び第2画素を囲む複数の画素の画素値の勾配の強度のそれぞれと、第1閾値及び第1閾値よりも大きい第2閾値との比較に基づいて、第2画素がエッジであるか否かを判定する第3処理を実行する、処理をコンピュータに実行させる。
本件開示のエッジ検出方法、エッジ検出装置及びエッジ検出プログラムは、画像中の画素毎に各段階の処理結果を格納する場合に比べて少ない内部バッファを用いて、Canny法によるエッジ検出の処理効率の向上を実現することができる。
以下、図面に基づいて、実施形態を説明する。
図1は、エッジ検出装置の一実施形態を示す。図1に示したエッジ検出装置10は、SDRAMなどを用いて設けられたフレームメモリMMと、画像処理装置PRとに接続されている。
フレームメモリMMには、例えば、デジタルカメラ等で撮影された画像を示す画像データが格納されている。フレームメモリMMは、撮影された画像に含まれる各画素に対応して、例えば、YUV形式で各画素の輝度Y及び色度U,Vを示す画像データを格納する。以下の説明では、フレームメモリMMに例えば幅W画素×高さH画素で示されるサイズを持つ画像データが格納され、フレームメモリMMから、画像の横幅方向に並んだW画素を含む1ライン毎に画像データの輝度値Yをエッジ検出装置10に渡す場合を説明する。ここで、W及びHのそれぞれは、3より大きい正の整数である。画像の横幅方向に並んだ画素の集まりである1ラインに含まれる画素数Wは、例えば2000から8000程度であり、また、画像に含まれるライン数Hは、例えば、1500から5000程度である。なお、フレームメモリMMに格納される画像データの形式は、YUV形式に限らず、例えば、RGB形式等の他の形式でもよい。また、フレームメモリMMからエッジ検出部10に渡される情報は、各ラインの画像データの輝度値Yに限られない。例えば、フレームメモリMMにRGB形式の画像データが格納されている場合に、エッジ検出装置10は、フレームメモリMMから各画素の画像データのG成分を受けてもよい。
エッジ検出装置10は、Canny法によるエッジ検出を行う処理ユニットの一例であり、バッファメモリBMと、算出部11と、第1抑制部12と、第2抑制部13と、判定部14とを含んでいる。エッジ検出装置10は、フレームメモリMMから渡される画像データImgに対して図2から図4を用いて説明する処理を行うことで、Canny法によるエッジ検出を行う。エッジ検出装置10は、Canny法によるエッジ検出により、画像に含まれる各画素がエッジであるか否かを示すエッジ情報Erを生成し、生成したエッジ情報Erを画像処理装置PRに渡す。なお、エッジ検出装置10は、生成したエッジ情報ErをフレームメモリMMに渡してもよい。この場合に、フレームメモリMMに渡されたエッジ情報Erは、画像データが格納された記憶領域とは別にフレームメモリMM内部に設けられた記憶領域に格納される。
画像処理装置PRは、例えば、エッジ検出装置10からエッジ情報Erを受け、受けたエッジ情報Erに基づいて、画像に含まれる物体を認識する処理等を実行する。なお、エッジ検出装置10からフレームメモリMMにエッジ情報Erが渡される場合に、画像処理装置PRは、フレームメモリMMからエッジ情報を受けてもよい。
算出部11、第1抑制部12、第2抑制部13及び判定部14のそれぞれは、バッファメモリBMに接続されている。
バッファメモリBMは、例えば、フレームメモリMM内の画像中の複数のラインのそれぞれに含まれる各画素に対応付けられる記憶領域を含んでおり、フレームメモリMMから渡される各ラインの画像データImgは順次にバッファメモリBMに保持される。また、バッファメモリBMは、算出部11、第1抑制部12、第2抑制部13及び判定部14のそれぞれによる処理で得られる情報の保持に用いられる。なお、バッファメモリBM内の記憶領域とフレームメモリMM内の画像に含まれる各画素との対応関係は、図5を用いて後述される。
算出部11は、画像における画素の並び順に従って順次に特定される注目画素Paと、注目画素Paの周囲の複数の画素に対応してバッファメモリBMに格納された情報に基づいて、注目画素Paにおける輝度値Yの勾配の強度及び方向を算出する。例えば、算出部11は、画像の上側の端からj(jは3以上の整数)番目のラインに含まれる各画素を画像の左端から順次に注目画素Paとし、注目画素Paにおける輝度値Yの勾配の強度及び方向を次に述べるようにして算出する。
j+1番目のラインに含まれる各画素の画像データImgがバッファメモリBMに保持され、注目画素Paを含む領域Ra内の各画素の輝度値Yが揃った段階で、算出部11は、領域Ra内の各画素の輝度値をバッファメモリBMから受ける。なお、図1の例は、注目画素Paと注目画素Paの周囲の8画素を含む領域Raを破線の矩形で示し、領域Ra内の3×3画素に対応してバッファメモリBMに保持された輝度値が算出部11に渡される場合を示す。
算出部11は、バッファメモリBMから受けた3×3画素の輝度値に対して、例えば、Sobelフィルタを示す3行3列の行列を乗算することで、注目画素Paにおける輝度値の勾配を示すベクトルS(Sh,Sv)を求める。ここで、ベクトルSの成分Shは、画像に含まれる各ラインにおける画素の並び方向である水平方向の輝度値Yの勾配の成分を示し、成分Svは、画像において水平方向と垂直な方向の輝度値Yの勾配の成分を示す。
また、算出部11は、Sobelフィルタを用いて求めた勾配の成分Sh,Svと次に述べる式(1)、(2)とを用いて、注目画素Paにおける勾配の強度Saと勾配の方向Sdを求める。なお、式(2)において、勾配の方向の一例として示した方向d0は水平方向を示し、方向d1は水平方向から反時計回りに45度傾いた方向を示す。また、式(2)において、勾配の方向の別例として示した方向d2は水平方向に対して垂直な方向を示し、方向d3は水平方向から時計回りに45度傾いた方向を示す。
なお、算出部11において、注目画素Paにおける勾配を求めるために用いるフィルタは、3行3列の行列で示されるカーネルサイズ3のSobelフィルタに限らず、3より大きいカーネルサイズのSobelフィルタでもよい。また、算出部11は、微分作用を持つフィルタであれば、ラプラシアンフィルタなど、他の種類のフィルタを用いて勾配の算出を行ってもよい。
算出部11によって求められた注目画素Paにおける勾配の強度Sa及び勾配の方向Sdは、第1抑制部12及び第2抑制部13に渡されるとともに、バッファメモリBMに注目画素Paに対応して保持される。
算出部11により注目画素Paの輝度値Yの勾配が算出される毎に、第1抑制部12は、図2を用いて説明するようにして、注目画素Paを対象とする非最大抑制処理の一部を実行する。以下の説明では、輝度値Yの勾配を、単に、勾配と称する場合がある。
ここで、注目画素Paを含むj番目のラインよりも前にバッファメモリBMに渡されたj−1番目のラインに含まれる各画素及び注目画素Paの左隣の画素の勾配の算出は、算出部11により注目画素Paの勾配が算出される前に行われている。したがって、算出部11により注目画素Paの勾配の強度及び勾配の方向が算出された段階で、j−1番目のラインに含まれる各画素と注目画素Paの左隣の画素の勾配の強度及び勾配の方向は既にバッファメモリBMに保持されている。
第1抑制部12は、注目画素Paを対象とする非最大抑制処理のうち、注目画素Paよりも前に勾配が算出された画素の中で注目画素Paに隣接する第1画素のそれぞれに対応してバッファメモリBMに保持された勾配の強度を参照する処理を実行する。なお、図1に一点鎖線で囲んで示した領域Rmに含まれる画素P1−1,P1−2,P1−3,P1−4のそれぞれは、注目画素Paよりも前に算出部11によって勾配が算出された画素の中で注目画素Paに隣接する第1画素の例である。
例えば、第1抑制部12は、注目画素Paを対象とする非最大抑制処理の一部として、注目画素Paの勾配の強度と、注目画素Paの勾配の方向に注目画素Paに隣接する第1画素の勾配の強度とを比較する処理を行う。そして、第1抑制部12は、注目画素Paの勾配の強度が隣接する第1画素の勾配の強度よりも大きいか否かを示す情報を、注目画素Paに対応付けてバッファメモリBMに保持させる。
また、算出部11により注目画素Paの勾配が算出される毎に、第2抑制部13は、図3で説明するようにして、注目画素Paよりも前に勾配が算出された画素の中で注目画素Paに隣接する第1画素のそれぞれを対象とする非最大抑制処理の一部を実行する。例えば、第2抑制部13は、図1に示した第1画素P1−1〜P1−4のそれぞれの勾配の方向に注目画素Paが隣接する場合に、第1画素P1−1〜P1−4のそれぞれにおける勾配強度が注目画素Paの勾配強度よりも大きいか否かを判定する。そして、第2抑制部13は、注目画素Paを示す向きの勾配方向を持つ第1画素について得た判定結果と、当該第1画素に対応して第1抑制部12によって得られた判定結果とから、当該第1画素の勾配強度が隣接する画素の勾配強度よりも大きいか否かを判定する。また、第2抑制部13は、勾配強度が勾配方向に隣接する2つの画素の少なくとも一方以下であると判定した第1画素に対応してバッファメモリBMに保持された勾配強度を、例えば、値0に置き換える。これにより、第2抑制部13は、勾配方向に隣接する画素の中で、勾配強度が最大でないとされた第1画素がエッジとして検出されることを抑制する。一方、第2抑制部13は、勾配強度が勾配方向に隣接する2つの画素よりも大きいと判定した第1画素に対応してバッファメモリBMに保持された勾配強度をそのまま維持させる。なお、第2抑制部13において、勾配強度が最大でないとされた第1画素の勾配強度の置き換えに用いる値は、値0に限らず、図4で説明するヒステリシス閾値処理に用いられる2つの閾値のうち小さい値を持つ第1閾値よりも小さい値であればよい。
即ち、注目画素Paを対象とする非最大抑制処理のうち、注目画素Paよりも後に算出される勾配を参照して行われる処理は、第1抑制部12により注目画素Paを対象とする非最大抑制処理の一部が実行された後に、第2抑制部13により実行される。つまり、図1に示したエッジ検出装置10において、注目画素Paを対象とする非最大抑制処理は、第1抑制部12によって実行される処理と、第2抑制部13によって実行される処理とに分割して実行される。
ところで、注目画素Paにおける勾配が算出部11によって算出された段階までに第2抑制部13によって実行される処理により、第1画素P1−1を対象とする非最大抑制処理は、第1画素P1−1における勾配の方向にかかわらず完了することになる。なお、図1に示した第1画素P1−1は、注目画素Paの左上に隣接する第1画素であり、注目画素Paに隣接する第1画素の中で、第2抑制部13によって行われた注目画素Paの勾配の強度を参照する処理により非最大抑制処理が完了した第1画素の例である。
そして、第2抑制部13は、注目画素Paの勾配の強度を参照する処理により、領域Rmに含まれる第1画素P1−1を対象とする非最大抑制処理が完了したことを示す情報を判定部14に渡す。
判定部14は、図4で説明するようにして、第1画素P1−1と第1画素P1−1よりも前に非最大抑制処理が完了した画素とで囲まれた画素である第2画素P2がエッジであるか否かを判定する処理であるヒステリシス閾値処理を実行する。
ここで、第1画素P1−1を含むj−1番目のラインよりも前にバッファメモリBMに渡されたラインに含まれる各画素及び第1画素P1−1の左隣の画素を対象とする非最大抑制処理は、第1画素P1−1の処理が完了した段階で、既に完了している。したがって、第1画素P1−1を対象とする非最大抑制処理が完了した段階で、判定部14は、バッファメモリBMを参照することで、図1に点線で囲んで示した領域Rhに含まれる各画素に対応する非最大抑制処理の後の勾配強度を示す情報を参照可能である。
例えば、判定部14は、領域Rhの中央に位置する第2画素P2及び第2画素P2を囲む複数の画素のそれぞれを対象とする非最大抑制処理後の勾配強度と、第1閾値及び第1閾値よりも大きい第2閾値との比較に基づいて、第2画素P2がエッジであるか否かを判定する。また、判定部14は、第2画素P2がエッジであるか否かを示すエッジ情報を、バッファメモリBMに第2画素P2に対応して保持させる。
第2画素P2に対応するエッジ情報がバッファメモリBMに保持された後に、図1に示した領域Rhにおいて、第2画素P2の左上に位置する画素Peに対応するエッジ情報ErがバッファメモリBMから出力される。そして、バッファメモリBMから出力されたエッジ情報Erは、画像処理装置PRに渡され、画像処理装置PRによる物体認識処理などに用いられる。
その後、算出部11は、注目画素Paを順次にずらしながら、注目画素Paにおける勾配の算出を行う。そして、算出部11により、新たな注目画素Paにおける勾配が算出される毎に、第1抑制部12及び第2抑制部13による非最大抑制処理と、判定部14によるヒステリシス閾値処理とが実行される。
以上に説明したように、算出部11は、バッファメモリBMに保持された画像データに基づいてCanny法によるエッジ検出処理の第1段階の処理を実行し、第1段階の処理の結果である注目画素Paの勾配の強度及び方向をバッファメモリBMに保持する。また、第1抑制部12及び第2抑制部13は、バッファメモリBMに保持された勾配強度のうち勾配方向に隣接する画素の勾配強度以下である勾配強度を抑制することで、Canny法によるエッジ検出処理の第2段階の処理を実行する。そして、判定部14は、バッファメモリBMに保持された非最大抑制処理後の勾配を示す情報に基づいて、Canny法によるエッジ検出処理の第3段階の処理であるヒステリシス閾値処理を実行する。即ち、図1に示したエッジ検出装置10は、フレームメモリMMから各ラインの画像データを受けた後、フレームメモリMMに対するアクセスを行うことなく、Canny法によるエッジ検出処理を実行し、各画素に対応するエッジ情報Erを出力することができる。つまり、図1に示したエッジ検出装置10は、フレームメモリMMを介して各段階の処理の結果を授受する場合に比べて、フレームメモリMMに対するアクセスを削減することができるので、Canny法によるエッジ検出処理を高速に実行することができる。即ち、Canny法によるエッジ検出処理の効率を、従来に比べて向上することができる。
また、図1に示したエッジ検出装置10は、非最大抑制処理を第1抑制部12と第2抑制部13とで分割して実行することにより、バッファメモリBMとして用いられる記憶領域の容量を抑制することができる。
非最大抑制処理を第1抑制部12と第2抑制部13とで分割して実行することで、バッファメモリBMの記憶容量を削減可能となる理由を説明するのに先立って、第1抑制部12、第2抑制部13及び判定部14のそれぞれの処理について説明する。
図2は、図1に示した第1抑制部12で行われる非最大抑制処理の例を示す。図2(A),(B),(C),(D)のそれぞれは、図1に示した注目画素Paについて算出部11により算出された勾配方向毎に、第1抑制部12により、注目画素Paにおける勾配強度と比較される第1画素の位置を示す。
なお、図2(A)から(D)のそれぞれにおいて一点鎖線で囲んで示した領域Rmは、図1に示した領域Rmに相当する要素である。また、図2(A)から(D)のそれぞれに示した領域Rmに含まれる4つの画素のそれぞれは、図1に示した第1画素P1−1〜P1−4に相当し、注目画素Paよりも前に算出部11によって勾配が算出された画素の中で注目画素Paに隣接する画素である。また、図2において、注目画素Pa及び注目画素Paを囲む8つの画素のそれぞれにおける勾配強度を、符号Sと各画素の画像における位置を示す座標との組み合わせで示す。即ち、符号S(i,j)は、画像の上端からj番目のラインの左からi番目の画素である注目画素Paの勾配強度を示す。ここで、iは、1ラインに含まれる画素数W以下の正の整数であり、jは、画像に含まれるライン数H以下の正の整数である。また、符号S(i−1,j−1)は、注目画素Paの左上に隣接する第1画素P1−1の勾配強度を示し、符号S(i,j−1)は、注目画素Paの上に隣接する第1画素P1−2の勾配強度を示す。同様に、符号S(i+1,j−1)は、注目画素Paの右上に隣接する第1画素P1−3の勾配強度を示し、符号S(i―1,j)は、注目画素Paの左に隣接する第1画素P1−4の勾配強度を示す。また、符号S(i+1,j)は、注目画素Paの右に隣接する画素の勾配強度を示し、符号S(i―1,j+1)は、注目画素Paの左下に隣接する画素の勾配強度を示す。そして、符号S(i,j+1)は、注目画素Paの下に隣接する画素の勾配強度を示し、符号S(i+1,j+1)は、注目画素Paの右下に隣接する画素の勾配強度を示す。
図2(A)は、注目画素Paの勾配方向が水平方向から時計回りに45度傾いた方向d3である場合に、第1抑制部12は、注目画素Paの勾配強度S(i,j)と注目画素Paの左上の第1画素P1−1の勾配強度S(i−1,j−1)とを比較することを示す。この場合に、第1抑制部12は、注目画素Paを対象とする非最大抑制処理の一部の結果として、勾配強度S(i,j)が勾配強度S(i−1,j−1)よりも大きいか否かを示す情報m1(i,j)を生成する。そして、第1抑制部12は、生成した情報m1(i,j)を、図1に示したバッファメモリBMに注目画素Paに対応して保持させる。
図2(B)は、注目画素Paの勾配方向が水平方向に垂直な方向d2である場合に、第1抑制部12は、注目画素Paの勾配強度S(i,j)と注目画素Paの上に隣接する第1画素P1−2の勾配強度(i,j−1)とを比較することを示す。この場合に、第1抑制部12は、注目画素Paを対象とする非最大抑制処理の一部の結果として、勾配強度S(i,j)が勾配強度S(i,j−1)よりも大きいか否かを示す情報m2(i,j)を生成する。そして、第1抑制部12は、生成した情報m2(i,j)を、図1に示したバッファメモリBMに注目画素Paに対応して保持させる。
図2(C)は、注目画素Paの勾配方向が水平方向から反時計回りに45度傾いた方向d1である場合に、第1抑制部12は、注目画素Paの勾配強度S(i,j)と注目画素Paの右上の第1画素P1−3の勾配強度S(i+1,j−1)を比較することを示す。この場合に、第1抑制部12は、注目画素Paを対象とする非最大抑制処理の一部の結果として、勾配強度S(i,j)が勾配強度S(i+1,j−1)よりも大きいか否かを示す情報m3(i,j)を生成する。そして、第1抑制部12は、生成した情報m3(i,j)を、図1に示したバッファメモリBMに注目画素Paに対応して保持させる。
図2(D)は、注目画素Paの勾配方向が水平方向d0である場合に、第1抑制部12は、注目画素Paの勾配強度S(i,j)と注目画素Paの左に隣接する第1画素P1−4の勾配強度S(i―1,j)とを比較することを示す。この場合に、第1抑制部12は、注目画素Paを対象とする非最大抑制処理の一部の結果として、勾配強度S(i,j)が勾配強度S(i―1,j)よりも大きいか否かを示す情報m4(i,j)を生成する。そして、第1抑制部12は、生成した情報m4(i,j)を、図1に示したバッファメモリBMに注目画素Paに対応して保持させる。
第1抑制部12によって生成される情報m1(i,j),m2(i,j),m3(i,j),m4(i,j)のそれぞれは、式(3)から式(6)で示される。
m1(i,j)=0 (S(i,j)≦S(i−1,j−1))
=1 (S(i,j)>S(i−1,j−1)) ・・・(3)
m2(i,j)=0 (S(i,j)≦S(i,j−1))
=1 (S(i,j)>S(i,j−1)) ・・・(4)
m3(i,j)=0 (S(i,j)≦S(i+1,j−1))
=1 (S(i,j)>S(i+1,j−1)) ・・・(5)
m4(i,j)=0 (S(i,j)≦S(i−1,j))
=1 (S(i,j)>S(i−1,j)) ・・・(6)
同様に、注目画素Paの勾配強度S(i,j)が、注目画素Paの右に隣接する画素の勾配強度S(i+1,j)よりも大きいか否かを示す情報m5(i,j)は、式(7)で示される。また、注目画素Paの勾配強度S(i,j)が、注目画素Paの左下に隣接する画素の勾配強度S(i−1,j+1)よりも大きいか否かを示す情報m6(i,j)は、式(8)で示される。同様に、注目画素Paの勾配強度S(i,j)が、注目画素Paの下に隣接する画素の勾配強度S(i,j+1)よりも大きいか否かを示す情報m7(i,j)は、式(9)で示される。また、注目画素Paの勾配強度S(i,j)が、注目画素Paの右下に隣接する画素の勾配強度S(i+1,j+1)よりも大きいか否かを示す情報m8(i,j)は、式(10)で示される。
m5(i,j)=0 (S(i,j)≦S(i+1,j))
=1 (S(i,j)>S(i+1,j)) ・・・(7)
m6(i,j)=0 (S(i,j)≦S(i−1,j+1))
=1 (S(i,j)>S(i−1,j+1)) ・・・(8)
m7(i,j)=0 (S(i,j)≦S(i,j+1))
=1 (S(i,j)>S(i,j+1)) ・・・(9)
m8(i,j)=0 (S(i,j)≦S(i+1,j+1))
=1 (S(i,j)>S(i+1,j+1)) ・・・(10)
そして、図2(A)〜(D)に示した注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度よりも大きいか否かを示す情報Mr(i,j)は、勾配方向毎に情報m1(i,j)〜m8(i,j)を用いて式(11)〜式(14)で示される。式(11)〜式(14)中の符号*は、乗算を示す。例えば、図2(A)に示した勾配方向が方向d3である注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度よりも大きいか否かを示す情報Mr(i,j)は、情報m1(i,j),m8(i,j)を用いて式(11)で示される。同様に、図2(B)に示した勾配方向が方向d2である注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度よりも大きいか否かを示す情報Mr(i,j)は、情報m2(i,j),m7(i,j)を用いて式(12)で示される。また、図2(C)に示した勾配方向が方向d1である注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度よりも大きいか否かを示す情報Mr(i,j)は、情報m3(i,j),m6(i,j)を用いて式(13)で示される。そして、図2(D)に示した勾配方向が方向d0である注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度よりも大きいか否かを示す情報Mr(i,j)は、情報m4(i,j),m5(i,j)を用いて式(14)で示される。
Mr(i,j)=m1(i,j)*m8(i,j) ・・・(11)
Mr(i,j)=m2(i,j)*m7(i,j) ・・・(12)
Mr(i,j)=m3(i,j)*m6(i,j) ・・・(13)
Mr(i,j)=m4(i,j)*m5(i,j) ・・・(14)
式(11)〜式(14)で示した情報Mr(i,j)は、画像において座標(i,j)で示される注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度の双方よりも大きい場合に値1を示す。一方、注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度の少なくとも一方以下である場合に、式(11)〜式(14)で示した情報Mr(i,j)は値0を示す。つまり、情報Mr(i,j)は、注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度の中で最大でない場合に勾配強度S(i,j)を値0に抑制するために用いられる係数を示す。そして、図1に示した第1抑制部12は、情報Mr(i,j)の算出に用いられる要素の一つとして、注目画素Paの勾配方向に応じて式(3)〜式(6)で示した情報m1(i,j)〜m4(i,j)のいずれかを求める。即ち、第1抑制部12によって行われる処理は、注目画素Paを対象とする非最大抑制処理に用いる係数Mr(i,j)を求めるための処理の一部である。
m1(i,j)=0 (S(i,j)≦S(i−1,j−1))
=1 (S(i,j)>S(i−1,j−1)) ・・・(3)
m2(i,j)=0 (S(i,j)≦S(i,j−1))
=1 (S(i,j)>S(i,j−1)) ・・・(4)
m3(i,j)=0 (S(i,j)≦S(i+1,j−1))
=1 (S(i,j)>S(i+1,j−1)) ・・・(5)
m4(i,j)=0 (S(i,j)≦S(i−1,j))
=1 (S(i,j)>S(i−1,j)) ・・・(6)
同様に、注目画素Paの勾配強度S(i,j)が、注目画素Paの右に隣接する画素の勾配強度S(i+1,j)よりも大きいか否かを示す情報m5(i,j)は、式(7)で示される。また、注目画素Paの勾配強度S(i,j)が、注目画素Paの左下に隣接する画素の勾配強度S(i−1,j+1)よりも大きいか否かを示す情報m6(i,j)は、式(8)で示される。同様に、注目画素Paの勾配強度S(i,j)が、注目画素Paの下に隣接する画素の勾配強度S(i,j+1)よりも大きいか否かを示す情報m7(i,j)は、式(9)で示される。また、注目画素Paの勾配強度S(i,j)が、注目画素Paの右下に隣接する画素の勾配強度S(i+1,j+1)よりも大きいか否かを示す情報m8(i,j)は、式(10)で示される。
m5(i,j)=0 (S(i,j)≦S(i+1,j))
=1 (S(i,j)>S(i+1,j)) ・・・(7)
m6(i,j)=0 (S(i,j)≦S(i−1,j+1))
=1 (S(i,j)>S(i−1,j+1)) ・・・(8)
m7(i,j)=0 (S(i,j)≦S(i,j+1))
=1 (S(i,j)>S(i,j+1)) ・・・(9)
m8(i,j)=0 (S(i,j)≦S(i+1,j+1))
=1 (S(i,j)>S(i+1,j+1)) ・・・(10)
そして、図2(A)〜(D)に示した注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度よりも大きいか否かを示す情報Mr(i,j)は、勾配方向毎に情報m1(i,j)〜m8(i,j)を用いて式(11)〜式(14)で示される。式(11)〜式(14)中の符号*は、乗算を示す。例えば、図2(A)に示した勾配方向が方向d3である注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度よりも大きいか否かを示す情報Mr(i,j)は、情報m1(i,j),m8(i,j)を用いて式(11)で示される。同様に、図2(B)に示した勾配方向が方向d2である注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度よりも大きいか否かを示す情報Mr(i,j)は、情報m2(i,j),m7(i,j)を用いて式(12)で示される。また、図2(C)に示した勾配方向が方向d1である注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度よりも大きいか否かを示す情報Mr(i,j)は、情報m3(i,j),m6(i,j)を用いて式(13)で示される。そして、図2(D)に示した勾配方向が方向d0である注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度よりも大きいか否かを示す情報Mr(i,j)は、情報m4(i,j),m5(i,j)を用いて式(14)で示される。
Mr(i,j)=m1(i,j)*m8(i,j) ・・・(11)
Mr(i,j)=m2(i,j)*m7(i,j) ・・・(12)
Mr(i,j)=m3(i,j)*m6(i,j) ・・・(13)
Mr(i,j)=m4(i,j)*m5(i,j) ・・・(14)
式(11)〜式(14)で示した情報Mr(i,j)は、画像において座標(i,j)で示される注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度の双方よりも大きい場合に値1を示す。一方、注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度の少なくとも一方以下である場合に、式(11)〜式(14)で示した情報Mr(i,j)は値0を示す。つまり、情報Mr(i,j)は、注目画素Paの勾配強度S(i,j)が勾配方向に隣接する画素の勾配強度の中で最大でない場合に勾配強度S(i,j)を値0に抑制するために用いられる係数を示す。そして、図1に示した第1抑制部12は、情報Mr(i,j)の算出に用いられる要素の一つとして、注目画素Paの勾配方向に応じて式(3)〜式(6)で示した情報m1(i,j)〜m4(i,j)のいずれかを求める。即ち、第1抑制部12によって行われる処理は、注目画素Paを対象とする非最大抑制処理に用いる係数Mr(i,j)を求めるための処理の一部である。
注目画素Paを対象とする非最大抑制処理に用いる係数Mr(i,j)を求めるための処理の他の一部は、図3を参照しつつ説明される。
図3は、図1に示した第2抑制部13により行われる非最大抑制処理の例を示す。なお、図3に示す要素のうち、図1及び図2に示した要素と同等のものは、同一の符号で示すとともに要素の説明を省略する場合がある。
図3(A),(B),(C),(D)のそれぞれは、図1に示した注目画素Paの勾配強度S(i,j)を参照して行われる第2抑制部13の処理により、非最大抑制処理に用いる係数が確定する第1画素の位置を示す。
例えば、図3(A)は、注目画素Paの左に隣接する第1画素P1−4の勾配方向が水平方向である場合に、第1画素P1−4を対象とする非最大抑制処理に用いる係数が注目画素Paの勾配強度S(i,j)を参照する処理で確定することを示す。この場合に、第2抑制部13は、式(7)の座標(i,j)を座標(i−1,j)に置き換えた式(7)’により、第1画素P1−4の勾配強度S(i−1,j)が注目画素Paの勾配強度S(i,j)より大きいか否かを示す情報m5(i−1,j)を求める。そして、第2抑制部13は、式(14)の座標(i,j)を座標(i−1,j)に置き換えた式(14)’により、第1画素P1−4を対象とする非最大抑制処理に用いる係数を示す情報Mr(i−1,j)を求める。なお、式(14)’に示す情報m4(i−1,j)は、第1画素P1−4の勾配が算出部11で算出された際に第1抑制部12により求められ、図1に示したバッファメモリBMに第1画素P1−4に対応して保持されている。
m5(i−1,j)=0 (S(i−1,j)≦S(i,j))
=1 (S(i−1,j)>S(i,j)) ・・・(7)’
Mr(i−1,j)=m4(i−1,j)*m5(i−1,j) ・・・(14)’
同様に、図3(B)は、注目画素Paの右上に隣接する第1画素P1−3の勾配方向が水平方向から反時計回りに45度傾いた方向である場合に、第1画素P1−3を対象とする非最大抑制処理の係数が勾配強度S(i,j)を参照する処理で確定することを示す。この場合に、第2抑制部13は、式(8)の座標(i,j)を座標(i+1,j−1)に置き換えた式(8)’を用いる。つまり、第2抑制部13は、式(8)’により、第1画素P1−3の勾配強度S(i+1,j−1)が注目画素Paの勾配強度S(i,j)より大きいか否かを示す情報m6(i+1,j−1)を求める。そして、第2抑制部13は、式(13)の座標(i,j)を座標(i+1,j−1)に置き換えた式(13)’により、第1画素P1−3を対象とする非最大抑制処理に用いる係数を示す情報Mr(i+1,j−1)を求める。なお、式(13)’に示す情報m3(i+1,j−1)は、第1画素P1−3の勾配が算出部11で算出された際に第1抑制部12により求められ、図1に示したバッファメモリBMに第1画素P1−3に対応して保持されている。
m6(i+1,j−1)=0 (S(i+1,j−1)≦S(i,j))
=1 (S(i+1,j−1)>S(i,j))・・・(8)’
Mr(i+1,j−1)=m3(i+1,j−1)*m6(i+1,j−1)・・・(13)’
また、図3(C)は、注目画素Paの上に隣接する第1画素P1−2の勾配方向が水平方向に対して垂直な方向である場合に、第1画素P1−2を対象とする非最大抑制処理の係数が注目画素Paの勾配強度S(i,j)を参照する処理で確定することを示す。この場合に、第2抑制部13は、式(9)の座標(i,j)を座標(i,j−1)に置き換えた式(9)’により、第1画素P1−2の勾配強度S(i,j−1)が注目画素Paの勾配強度S(i,j)より大きいか否かを示す情報m7(i,j−1)を求める。そして、第2抑制部13は、式(12)の座標(i,j)を座標(i,j−1)に置き換えた式(12)’により、第1画素P1−2を対象とする非最大抑制処理に用いる係数を示す情報Mr(i,j−1)を求める。なお、式(12)’に示す情報m2(i,j−1)は、第1画素P1−2の勾配が算出部11で算出された際に第1抑制部12により求められ、図1に示したバッファメモリBMに第1画素P1−2に対応して保持されている。
m7(i,j−1)=0 (S(i,j−1)≦S(i,j))
=1 (S(i,j−1)>S(i,j)) ・・・(9)’
Mr(i,j−1)=m2(i,j−1)*m7(i,j−1) ・・・(12)’
そして、図3(D)は、注目画素Paの左上に隣接する第1画素P1−1の勾配方向が水平方向から時計回りに45度傾いた方向である場合に、第1画素P1−1を対象とする非最大抑制処理の係数が勾配強度S(i,j)を参照する処理で確定することを示す。この場合に、第2抑制部13は、式(10)の座標(i,j)を座標(i−1,j−1)に置き換えた式(10)’を用いる。つまり、第2抑制部13は、式(10)’により、第1画素P1−3の勾配強度S(i−1,j−1)が注目画素Paの勾配強度S(i,j)より大きいか否かを示す情報m8(i−1,j−1)を求める。そして、第2抑制部13は、式(13)の座標(i,j)を座標(i+1,j−1)に置き換えた式(11)’により、第1画素P1−1を対象とする非最大抑制処理に用いる係数を示す情報Mr(i−1,j−1)を求める。なお、式(11)’に示す情報m1(i―1,j−1)は、第1画素P1−1の勾配が算出部11で算出された際に第1抑制部12により求められ、図1に示したバッファメモリBMに第1画素P1−1に対応して保持されている。
m8(i−1,j−1)=0(S(i−1,j−1)≦S(i,j))
=1(S(i−1,j−1)>S(i,j))・・・(10)’
Mr(i−1,j−1)=m1(i−1,j−1)*m6(i−1,j−1)・・・(11)’
図3を用いて説明したように、図1に示した第2抑制部13は、注目画素Paよりも前に勾配が算出された第1画素P1−1〜P1−4を対象とする非最大抑制処理のうち、注目画素Paの勾配強度S(i,j)を参照する処理を実行する。そして、注目画素Paを対象とする非最大抑制処理のうち、注目画素Paよりも後に算出される勾配強度を参照して行われる処理は、参照される勾配強度のそれぞれが算出された際に、第2抑制部13によって実行されることになる。
m5(i−1,j)=0 (S(i−1,j)≦S(i,j))
=1 (S(i−1,j)>S(i,j)) ・・・(7)’
Mr(i−1,j)=m4(i−1,j)*m5(i−1,j) ・・・(14)’
同様に、図3(B)は、注目画素Paの右上に隣接する第1画素P1−3の勾配方向が水平方向から反時計回りに45度傾いた方向である場合に、第1画素P1−3を対象とする非最大抑制処理の係数が勾配強度S(i,j)を参照する処理で確定することを示す。この場合に、第2抑制部13は、式(8)の座標(i,j)を座標(i+1,j−1)に置き換えた式(8)’を用いる。つまり、第2抑制部13は、式(8)’により、第1画素P1−3の勾配強度S(i+1,j−1)が注目画素Paの勾配強度S(i,j)より大きいか否かを示す情報m6(i+1,j−1)を求める。そして、第2抑制部13は、式(13)の座標(i,j)を座標(i+1,j−1)に置き換えた式(13)’により、第1画素P1−3を対象とする非最大抑制処理に用いる係数を示す情報Mr(i+1,j−1)を求める。なお、式(13)’に示す情報m3(i+1,j−1)は、第1画素P1−3の勾配が算出部11で算出された際に第1抑制部12により求められ、図1に示したバッファメモリBMに第1画素P1−3に対応して保持されている。
m6(i+1,j−1)=0 (S(i+1,j−1)≦S(i,j))
=1 (S(i+1,j−1)>S(i,j))・・・(8)’
Mr(i+1,j−1)=m3(i+1,j−1)*m6(i+1,j−1)・・・(13)’
また、図3(C)は、注目画素Paの上に隣接する第1画素P1−2の勾配方向が水平方向に対して垂直な方向である場合に、第1画素P1−2を対象とする非最大抑制処理の係数が注目画素Paの勾配強度S(i,j)を参照する処理で確定することを示す。この場合に、第2抑制部13は、式(9)の座標(i,j)を座標(i,j−1)に置き換えた式(9)’により、第1画素P1−2の勾配強度S(i,j−1)が注目画素Paの勾配強度S(i,j)より大きいか否かを示す情報m7(i,j−1)を求める。そして、第2抑制部13は、式(12)の座標(i,j)を座標(i,j−1)に置き換えた式(12)’により、第1画素P1−2を対象とする非最大抑制処理に用いる係数を示す情報Mr(i,j−1)を求める。なお、式(12)’に示す情報m2(i,j−1)は、第1画素P1−2の勾配が算出部11で算出された際に第1抑制部12により求められ、図1に示したバッファメモリBMに第1画素P1−2に対応して保持されている。
m7(i,j−1)=0 (S(i,j−1)≦S(i,j))
=1 (S(i,j−1)>S(i,j)) ・・・(9)’
Mr(i,j−1)=m2(i,j−1)*m7(i,j−1) ・・・(12)’
そして、図3(D)は、注目画素Paの左上に隣接する第1画素P1−1の勾配方向が水平方向から時計回りに45度傾いた方向である場合に、第1画素P1−1を対象とする非最大抑制処理の係数が勾配強度S(i,j)を参照する処理で確定することを示す。この場合に、第2抑制部13は、式(10)の座標(i,j)を座標(i−1,j−1)に置き換えた式(10)’を用いる。つまり、第2抑制部13は、式(10)’により、第1画素P1−3の勾配強度S(i−1,j−1)が注目画素Paの勾配強度S(i,j)より大きいか否かを示す情報m8(i−1,j−1)を求める。そして、第2抑制部13は、式(13)の座標(i,j)を座標(i+1,j−1)に置き換えた式(11)’により、第1画素P1−1を対象とする非最大抑制処理に用いる係数を示す情報Mr(i−1,j−1)を求める。なお、式(11)’に示す情報m1(i―1,j−1)は、第1画素P1−1の勾配が算出部11で算出された際に第1抑制部12により求められ、図1に示したバッファメモリBMに第1画素P1−1に対応して保持されている。
m8(i−1,j−1)=0(S(i−1,j−1)≦S(i,j))
=1(S(i−1,j−1)>S(i,j))・・・(10)’
Mr(i−1,j−1)=m1(i−1,j−1)*m6(i−1,j−1)・・・(11)’
図3を用いて説明したように、図1に示した第2抑制部13は、注目画素Paよりも前に勾配が算出された第1画素P1−1〜P1−4を対象とする非最大抑制処理のうち、注目画素Paの勾配強度S(i,j)を参照する処理を実行する。そして、注目画素Paを対象とする非最大抑制処理のうち、注目画素Paよりも後に算出される勾配強度を参照して行われる処理は、参照される勾配強度のそれぞれが算出された際に、第2抑制部13によって実行されることになる。
例えば、図2(D)に示した注目画素Paを対象とする非最大抑制処理に用いる係数を示す情報Mr(i,j)は、注目画素Paの右に隣接する画素の勾配強度S(i+1,j)が算出された際に、第2抑制部13により求められる。同様に、図2(C)に示した注目画素Paを対象とする非最大抑制処理に用いる係数を示す情報Mr(i,j)は、注目画素Paの左下に隣接する画素の勾配強度S(i−1,j+1)が算出された際に、第2抑制部13により求められる。また、図2(B)に示した注目画素Paを対象とする非最大抑制処理に用いる係数を示す情報Mr(i,j)は、注目画素Paの下に隣接する画素の勾配強度S(i,j+1)が算出された際に、第2抑制部13により求められる。そして、図2(A)に示した注目画素Paを対象とする非最大抑制処理に用いる係数を示す情報Mr(i,j)は、注目画素Paの右下に隣接する画素の勾配強度S(i+1,j+1)が算出された際に、第2抑制部13により求められる。
図2、図3で説明したように、注目画素Paを対象とする非最大抑制処理を第1抑制部12と第2抑制部13とで分割することで、分割しない場合に比べて、算出部11で算出された勾配強度と勾配方向との双方を保持しておく画素の範囲を縮小することができる。なぜなら、各画素の非最大抑制処理を一括して実行する場合は、注目画素Paの非最大抑制処理結果を確定させた後も、注目画素Paの勾配方向が、注目画素Pa以降に勾配が算出される画素の非最大抑制処理で参照されるためである。これに対して、非最大抑制処理を第1抑制部12と第2抑制部13とで分割した場合は、注目画素Paの非最大抑制処理結果が確定するまでに、注目画素Pa以降に勾配が算出される画素の非最大抑制処理のうち、注目画素Paの勾配方向を参照する処理は完了する。したがって、非最大抑制処理を分割して実行する場合は、注目画素Paの非最大抑制処理結果が確定した段階で、注目画素Paに対応してバッファメモリBMに保持される情報から、注目画素Paの勾配方向を示す情報を削除することができる。なお、図1に示したエッジ検出装置10に含まれるバッファメモリBMにおいて、画像中の各画素に対応して保持される情報の内容については、図5及び図6を用いて後述する。
図4は、図1に示した判定部14で行われるヒステリシス閾値処理の例を示す。図4(A),(B),(C),(D)のそれぞれは、図1において点線で囲んで示した領域Rhに含まれる画素の勾配強度を第1閾値及び第2閾値により3つの階級に分類した場合に、各階級に属する勾配強度を持つ画素の領域Rhにおける分布の例を示す。また、図4(E),(F)のそれぞれは、図4(C),(D)のそれぞれに示したように各階級の勾配強度を持つ画素が分布する場合に、判定部14で得られるヒステリシス閾値処理結果の例を示す。
なお、図4において、領域Rhに含まれる矩形P2及び矩形P3−1,P3−2,P3−3,P3−4,P3−5,P3−6,P3−7,P3−8のそれぞれは、図1に示した第2画素P2及び第2画素P2に隣接する8画素のそれぞれを示す。また、図4において、白色で示した矩形は、第2閾値よりも大きい勾配強度の範囲を示す第2階級に属する勾配強度を持つ画素を示し、斜線の網掛けで示した矩形は、第1閾値以下の勾配強度の範囲を示す第0階級に属する勾配強度を持つ画素を示す。そして、別の種類の網掛けで示した矩形は、第1閾値よりも大きく、かつ、第2閾値以下の勾配強度の範囲を示す第1階級に属する勾配強度を持つ画素を示す。
以下では、第2画素P2及び第2画素P2に隣接する8画素のそれぞれの勾配強度が次にあげる4つの条件のどれを満たすかにより、第2画素P2がエッジであるか否かを判定する手法が説明される。ここで、4つの条件の一つである第1の条件は、第2画素P2をエッジとして検出する条件の一つであり、第2画素P2の勾配強度が第2階級に属することである。また、第2の条件は第2画素P2をエッジとして検出する条件の他の一つであり、第2画素P2の勾配強度が第1階級に属し、かつ、周囲の8画素の中に、第2階級に属する画素又は既にエッジと判定された画素が少なくとも一つ含まれていることである。なお、第2の条件として、第2画素P2の勾配強度が第1階級に属し、かつ、周囲の8画素の中に、第2階級に属する画素が少なくとも一つ含まれていることを用いる場合もある。一方、第3の条件は、第2画素P2がエッジであることを否定する条件の一つであり、第2画素P2の勾配強度が第0階級に属することである。そして、第4の条件は、第2画素P2がエッジであることを否定する条件の他の一つであり、第2画素P2の勾配強度が第1階級に属し、かつ、周囲の8画素の中に、第2階級に属する画素及び既にエッジであると判定された画素が一つも含まれていないことである。なお、第0階級、第1階級及び第2階級のそれぞれに属する勾配強度の範囲は、上で述べた例に限らず、第1閾値及び第2閾値を境界とする範囲であればよい。例えば、判定部14は、第1閾値以上第2閾値未満の勾配強度を第1階級に属するとするとともに、第2閾値以上の勾配強度を第2階級に属するとし、第0階級を第1閾値未満の勾配強度の範囲としてもよい。
図4(A)は、ヒステリシス閾値処理の対象となる第2画素P2が第2階級に属する勾配強度を持つ場合を示す。この場合に、図1に示した判定部14は、第2画素P2の勾配強度が第1の条件を満たすことから、第2画素P2の周囲の8画素、即ち、画素P3−1〜P3−8のそれぞれ勾配強度にかかわらず、第2画素P2はエッジを示すと判定する。そして、判定部14は、例えば、第2画素P2が第1の条件に基づいてエッジとして検出されたことを示す2ビットのエッジ情報を生成し、生成したエッジ情報をバッファメモリBMに第2画素P2に対応して保持させる。
また、図4(B)は、ヒステリシス閾値処理の対象となる第2画素P2が第0階級に属する勾配強度を持つ場合を示す。この場合に、図1に示した判定部14は、第2画素P2の勾配強度が第3の条件を満たすことから、第2画素P2の周囲の8画素、即ち、画素P3−1〜P3−8のそれぞれ勾配強度にかかわらず、第2画素P2はエッジでないと判定する。そして、判定部14は、第2画素P2が第3の条件に基づいてエッジでないと判定されたことを示す2ビットのエッジ情報を生成し、生成したエッジ情報をバッファメモリBMに第2画素P2に対応して保持させる。
一方、図4(C),(D)のそれぞれは、ヒステリシス閾値処理の対象となる第2画素P2の勾配強度が第1階級に属する場合を示す。この場合に、図1に示した判定部14は、第2画素P2の周囲の8画素P3−1〜P3−8の勾配強度に基づいて、第2画素がエッジであるか否かを判定する。
図4(C)は、第2画素P2の周囲の画素の少なくとも一つの勾配強度が第2閾値よりも大きいか、既にエッジであると判定されている場合を示す。例えば、図4(C)の例は、第2画素よりも前にヒステリシス閾値処理の対象となった画素P3−2,P3−3のそれぞれが既にエッジであると判定されており、画素P3−7の勾配強度が第2閾値よりも大きい場合を示す。また、図4(C)の例では、画素P3−6の勾配強度が第1閾値と第2閾値との間であり、画素P3−1,P3−4,P3−5,P3−8の勾配強度が第1閾値以下である。この場合に、判定部14は、例えば、第2画素P2が第2の条件に基づいてエッジとして検出されたことを示す2ビットのエッジ情報を生成し、生成したエッジ情報をバッファメモリBMに第2画素P2に対応して保持させる。
図4(D)は、第2画素P2の周囲の画素の中に勾配強度が第2閾値よりも大きい画素及び既にエッジであると判定された画素が含まれない場合を示す。例えば、図4(D)の例は、第2画素よりも前にヒステリシス閾値処理の対象となった画素P3−1〜P3−4のそれぞれが既にエッジでないと判定されており、画素P3−5〜P3−8のそれぞれの勾配強度が第1階級に属する場合を示す。この場合に、判定部14は、第2画素P2が第4の条件に基づいてエッジでないと判定されたことを示す2ビットのエッジ情報を生成し、生成したエッジ情報をバッファメモリBMに第2画素P2に対応して保持させる。
図4(E)は、図4(C)に示した第2画素P2のヒステリシス閾値処理により、第2画素P2がエッジであると判定された場合に、判定部14による以降の処理において、第2画素P2が第2閾値より大きい勾配強度を持つ画素として扱われることを示す。例えば、判定部14は、図4(E)に示した画素P3−6を対象とするヒステリシス閾値処理において、第2画素P2について算出された勾配強度にかかわらず、第2画素P2は第2閾値より大きい勾配強度を持つ画素として扱われる。
図4(F)は、図4(D)に示した第2画素P2を対象とするヒステリシス閾値処理で第2画素P2がエッジでないと判定された場合に、判定部14による以降の処理において、第2画素P2が第1閾値以下の勾配強度を持つ画素として扱われることを示す。例えば、判定部14は、図4(F)に示した画素P3−6を対象とするヒステリシス閾値処理において、第2画素P2について算出部11によって算出された勾配強度にかかわらず、第2画素P2を第1閾値以下の勾配強度を持つ画素とする。
なお、判定部14において行われるヒステリシス閾値処理は、図4に示したような3画素×3画素の領域におけるエッジの連続性に注目する処理に限られない。判定部14は、例えば、5画素×5画素の領域など、図4に示した3画素×3画素の領域よりも広い範囲におけるエッジの連続性を考慮したヒステリシス閾値処理を行ってもよい。また、判定部14は、第1階級に属する勾配強度を持つ第2画素P2に隣接する8画素の中に第2閾値よりも大きい勾配強度が求められた画素がある場合に、第2画素P2をエッジであると判定してもよい。この場合に、判定部14は、画像に含まれる各画素をヒステリシス閾値処理の対象とする順序が異なる場合でも、各画素がエッジであるか否かについて同じ判定結果を得る。
ところで、図4(A)〜(D)のそれぞれにおいて、判定部14によるヒステリシス閾値処理の対象となる第2画素P2の右下に示した画素P3−8は、図1に示した領域Rmに含まれる第1画素P1−1に相当する。また、図4(A)〜(D)のそれぞれにおいて、第2画素P2の左上に示した画素P3−1は、以降に判定部14によって行われるヒステリシス閾値処理において勾配強度が参照されなくなる画素であり、図1に示した画素Peに相当する。
即ち、図1に示したエッジ検出装置10は、図5において、異なる種類の線で囲んで示す領域LBA,LBB,LBC,LBDに含まれる各画素に対応する記憶領域を有するバッファメモリBMを用いて実現することができる。
図5は、図1に示したバッファメモリBMの記憶領域に対応付けられる画像の範囲の例を示す。図5において、太い実線で示した矩形IMGは、図1に示したフレームメモリMMに保持された画像を示し、画像IMGを区切って示した矩形のそれぞれは、画像IMGに含まれる画素を示す。
以下の説明では、画像IMG中の各画素の位置は、画像IMGの左上の画素を原点とし、画像IMGに含まれる各ラインにおける画素の並び方向を示すx軸と各ラインの並び方向を示すy軸とを有する座標系における座標(x,y)で示される。なお、図5の例において、座標値xは画素数Wより小さく且つ0以上の値を持つ整数であり、座標値yはライン数Hより小さく且つ0以上の値を持つ整数である。
図5において、二点鎖線で囲んで示した領域LBAは、座標(i,j)で示される画素が勾配の算出の対象となる注目画素Paである場合に、輝度値がバッファメモリBMに保持される画像IMG中の範囲を示す。図5に示した領域LBAは、画像IMGの第jラインの第i+1画素から第W−1画素までと、第j+1ラインの第0画素から第i+1画素までの各画素を含む領域である。領域LBAに含まれる各画素の輝度値を示すデータは、例えば、バッファメモリBM内に用意された、1ラインと1画素分の容量を有するリングバッファに保持させることが望ましい。なお、画像IMGに含まれる各画素の輝度値を示す画像データがnビットのデータである場合に、バッファメモリBM内に領域LBAに対応して用意されるリングバッファの容量CAは、例えば、式(15)で示される。
CA=n×(W+1) ・・・(15)
図5において、破線で示した領域LBBは、座標(i,j)で示される画素が注目画素Paである場合に、輝度値と勾配強度と勾配方向と図2,3で説明した係数MrがバッファメモリBMに保持される画像IMG中の範囲を示す。図5に示した領域LBBは、画像IMGの第jラインの第0画素から第i画素までと、第j−1ラインの第i−1画素から第W−1画素までの各画素を含む領域である。領域LBBに含まれる各画素の輝度値と勾配強度と勾配方向と係数Mrとを示すデータは、例えば、バッファメモリBMに用意された、1ラインと2画素分の容量を有するリングバッファに保持させることが望ましい。バッファメモリBM内に領域LBBに対応して用意されるリングバッファの容量CBは、例えば、式(16)で示される。なお、式(16)において、数値nは画像IMGに含まれる各画素の輝度値を示す画像データのビット数を示し、数値n’は各画素について算出される勾配強度を示すデータのビット数を示す。また、式(16)の例は、各画素について算出された勾配方向が2ビットのデータで示され、また、係数Mrが1ビットのデータで示される場合を示している。
CB=(n+n’+2+1)×(W+2) ・・・(16)
図5において、一点鎖線で示した領域LBCは、座標(i,j)で示される画素が注目画素Paである場合に、図2,3で説明した係数Mrが乗じられた勾配強度がバッファメモリBMに保持される画像IMG中の範囲を示す。図5に示した領域LBCは、画像IMGの第j−2ラインの第i−1画素から第W−1画素までと、第j−1ラインの第0画素から第i−1画素までの各画素を含む領域である。領域LBCに含まれる各画素に対応する係数Mrが乗じられた勾配強度、即ち、非最大抑制処理後の勾配強度を示すデータは、例えば、バッファメモリBMに用意された、1ラインと1画素分の容量を有するリングバッファに保持させることが望ましい。バッファメモリBM内に領域LBCに対応して用意されるリングバッファの容量CCは、例えば、式(17)で示される。なお、式(17)において、数値n’は各画素について算出される勾配強度を示すデータのビット数を示す。
CC=n’×(W+1) ・・・(17)
図5において、点線で示した領域LBDは、座標(i,j)で示される画素が注目画素Paである場合に、図1に示した判定部14によるヒステリシス閾値処理の結果を示すエッジ情報がバッファメモリBMに保持される画像IMG中の範囲を示す。図5に示した領域LBDは、画像IMGの第j−3ラインの第i−3画素から第W−1画素までと、第j−2ラインの第0画素から第i−2画素までの各画素を含む領域である。領域LBDに含まれる各画素に対応するエッジ情報を示すデータは、例えば、バッファメモリBMに用意された、1ラインと2画素分の容量を有するリングバッファに保持させることが望ましい。バッファメモリBM内に領域LBDに対応して用意されるリングバッファの容量CDは、例えば、式(18)で示される。なお、式(18)の例は、判定部14により、ヒステリシス閾値処理の結果として2ビットのエッジ情報が生成される場合を示す。
CD=2×(W+2) ・・・(18)
したがって、バッファメモリBMとして用いられる記憶容量は、式(15)〜式(18)のそれぞれで示した容量CA,CB,CC,CDの総和程度となる。ここで、図5から分かるように、バッファメモリBMに保持される情報は、画像IMGのうち、領域LBA〜LBDの何れかに含まれる4ラインと5画素の範囲に含まれる各画素に対応する情報である。即ち、バッファメモリBMに保持される情報量は、画像IMGに含まれる全ての画素に対応する輝度値及びCanny法によるエッジ検出処理の各段階の処理で得られた結果を示す情報の総量に比べて小さい。つまり、図1に示したエッジ検出装置10は、画像IMG内の全画素に対応する輝度値及びCanny法によるエッジ検出処理の各段階の処理結果を示す情報を内部に保持する場合に比べて、少ない容量のバッファメモリBMを用いて実現可能である。換言すれば、図1に示したエッジ検出装置10は、Canny法によるエッジ検出を行う処理ユニットの外部のフレームメモリ等に対するアクセスを削減するために内部に設けたバッファメモリの容量を低減することができる。
CA=n×(W+1) ・・・(15)
図5において、破線で示した領域LBBは、座標(i,j)で示される画素が注目画素Paである場合に、輝度値と勾配強度と勾配方向と図2,3で説明した係数MrがバッファメモリBMに保持される画像IMG中の範囲を示す。図5に示した領域LBBは、画像IMGの第jラインの第0画素から第i画素までと、第j−1ラインの第i−1画素から第W−1画素までの各画素を含む領域である。領域LBBに含まれる各画素の輝度値と勾配強度と勾配方向と係数Mrとを示すデータは、例えば、バッファメモリBMに用意された、1ラインと2画素分の容量を有するリングバッファに保持させることが望ましい。バッファメモリBM内に領域LBBに対応して用意されるリングバッファの容量CBは、例えば、式(16)で示される。なお、式(16)において、数値nは画像IMGに含まれる各画素の輝度値を示す画像データのビット数を示し、数値n’は各画素について算出される勾配強度を示すデータのビット数を示す。また、式(16)の例は、各画素について算出された勾配方向が2ビットのデータで示され、また、係数Mrが1ビットのデータで示される場合を示している。
CB=(n+n’+2+1)×(W+2) ・・・(16)
図5において、一点鎖線で示した領域LBCは、座標(i,j)で示される画素が注目画素Paである場合に、図2,3で説明した係数Mrが乗じられた勾配強度がバッファメモリBMに保持される画像IMG中の範囲を示す。図5に示した領域LBCは、画像IMGの第j−2ラインの第i−1画素から第W−1画素までと、第j−1ラインの第0画素から第i−1画素までの各画素を含む領域である。領域LBCに含まれる各画素に対応する係数Mrが乗じられた勾配強度、即ち、非最大抑制処理後の勾配強度を示すデータは、例えば、バッファメモリBMに用意された、1ラインと1画素分の容量を有するリングバッファに保持させることが望ましい。バッファメモリBM内に領域LBCに対応して用意されるリングバッファの容量CCは、例えば、式(17)で示される。なお、式(17)において、数値n’は各画素について算出される勾配強度を示すデータのビット数を示す。
CC=n’×(W+1) ・・・(17)
図5において、点線で示した領域LBDは、座標(i,j)で示される画素が注目画素Paである場合に、図1に示した判定部14によるヒステリシス閾値処理の結果を示すエッジ情報がバッファメモリBMに保持される画像IMG中の範囲を示す。図5に示した領域LBDは、画像IMGの第j−3ラインの第i−3画素から第W−1画素までと、第j−2ラインの第0画素から第i−2画素までの各画素を含む領域である。領域LBDに含まれる各画素に対応するエッジ情報を示すデータは、例えば、バッファメモリBMに用意された、1ラインと2画素分の容量を有するリングバッファに保持させることが望ましい。バッファメモリBM内に領域LBDに対応して用意されるリングバッファの容量CDは、例えば、式(18)で示される。なお、式(18)の例は、判定部14により、ヒステリシス閾値処理の結果として2ビットのエッジ情報が生成される場合を示す。
CD=2×(W+2) ・・・(18)
したがって、バッファメモリBMとして用いられる記憶容量は、式(15)〜式(18)のそれぞれで示した容量CA,CB,CC,CDの総和程度となる。ここで、図5から分かるように、バッファメモリBMに保持される情報は、画像IMGのうち、領域LBA〜LBDの何れかに含まれる4ラインと5画素の範囲に含まれる各画素に対応する情報である。即ち、バッファメモリBMに保持される情報量は、画像IMGに含まれる全ての画素に対応する輝度値及びCanny法によるエッジ検出処理の各段階の処理で得られた結果を示す情報の総量に比べて小さい。つまり、図1に示したエッジ検出装置10は、画像IMG内の全画素に対応する輝度値及びCanny法によるエッジ検出処理の各段階の処理結果を示す情報を内部に保持する場合に比べて、少ない容量のバッファメモリBMを用いて実現可能である。換言すれば、図1に示したエッジ検出装置10は、Canny法によるエッジ検出を行う処理ユニットの外部のフレームメモリ等に対するアクセスを削減するために内部に設けたバッファメモリの容量を低減することができる。
次に、図6を用いて、図1に示した第1抑制部12及び第2抑制部13により、非最大抑制処理を分担して実行することにより、非最大抑制処理を一括して実行する場合に比べて、バッファメモリBMに保持される情報量を削減可能とする根拠を説明する。
図6は、非最大抑制処理を一括して実行する場合にバッファメモリBMに保持される情報に対応する画像IMGの範囲の例を示す。なお、図6に示す要素のうち、図5に示した要素と同等のものは、同一の符号で示すとともに要素の説明を省略する場合がある。例えば、図6に示した領域LBAは、図5に示した領域LBAに相当する。また、図6に示した領域LBB1は、図5に示した領域LBBに相当する要素であり、図6に示した領域LBDは、図5に示した領域LBDとほぼ同等の要素である。
以下では、座標(i,j)の画素を注目画素Paとして勾配が算出された段階で、座標(i−1,j−1)の画素を対象とする非最大抑制処理を一括して実行する場合が説明される。
座標(i−1,j−1)の画素の非最大抑制処理は、座標(i−1,j−1)の画素の周囲に位置する8つの画素の勾配強度及び勾配方向を参照して行われる。したがって、座標(i−1,j−1)の画素の上及び左に隣接する画素を含む領域LBB2に対応付けられたバッファメモリBMの記憶領域には、領域LBB2内の各画素に対応して勾配強度及び勾配方向を示す情報が保持される。図6の例では、領域LBB2は、画像IMGの第j−2ラインの第i−2画素から第W−1画素までと、第j−1ラインの第0画素から第i−2画素までの各画素を含む領域である。このため、バッファメモリBM内に領域LBB2に対応して用意されるリングバッファの容量CB2は、例えば、式(19)で示される容量となり、式(17)で示される領域LBCに対応するリングバッファの容量CCよりも大きくなる。なお、式(19)の例は、領域LBB2内の各画素の勾配強度がn’ビットのデータで表され、領域LBB2内の各画素の勾配方向が2ビットのデータで表される場合を示す。
CB2=(n’+2)×(W+1) ・・・(19)
以上に説明したように、図6に示した領域LBB2に対応して用意されるリングバッファの容量CB2と図5に示した領域LBCに対応するリングバッファの容量CCとの差は、約2Wビットとなる。ここで、1ラインの画素数Wが2000〜8000であるので、非最大抑制処理を分割して実行することで、非最大抑制処理を一括して実行する場合に比べて、バッファメモリBMの容量を数キロビットから十数キロビット程度削減可能である。
CB2=(n’+2)×(W+1) ・・・(19)
以上に説明したように、図6に示した領域LBB2に対応して用意されるリングバッファの容量CB2と図5に示した領域LBCに対応するリングバッファの容量CCとの差は、約2Wビットとなる。ここで、1ラインの画素数Wが2000〜8000であるので、非最大抑制処理を分割して実行することで、非最大抑制処理を一括して実行する場合に比べて、バッファメモリBMの容量を数キロビットから十数キロビット程度削減可能である。
なお、エッジ検出装置10に含まれるバッファメモリBMの各リングバッファに保持される情報は、図5で説明した情報に限られず、バッファメモリBMの容量は更に削減が可能である。バッファメモリBMの容量を更に削減するための手法は、図8及び図9を用いて後述される。
図7は、図1に示したエッジ検出装置10の動作を示す。図7に示したステップS301〜ステップS305の処理は、図1に示したエッジ検出装置10の動作を示すとともに、エッジ検出方法およびエッジ検出プログラムの例を示す。例えば、図7に示す処理は、エッジ検出装置10に搭載されたプロセッサがエッジ検出プログラムを実行することで実現される。なお、図7に示す処理は、エッジ検出装置10に搭載されるハードウェアによって実行されてもよい。
エッジ検出装置10は、例えば、図1に示したフレームメモリMMに保持された画像IMGの中の1ラインに含まれる各画素の輝度値を示す画像データImgをバッファメモリBMに読み込むごとに、ステップS301〜ステップS305の処理を実行する。
ステップS301において、算出部11は、図1で説明したように、画像IMGの各画素を順次に注目画素Paとし、バッファメモリBMに注目画素Pa及び周囲の画素に対応して保持された輝度値に基づいて、注目画素Paにおける勾配を算出する。例えば、算出部11は、新たな画像データImgの前にバッファメモリBMに読み込まれた画像データで輝度値が示される画像IMG中の1ラインに含まれる各画素を順次に注目画素Paとし、式(1)、(2)により注目画素Paの勾配強度及び勾配方向を算出する。つまり、ステップS301では、算出部11により、図5に示した画像IMGの第j+1番ラインがバッファメモリBMに読み込まれた場合に、第jラインに含まれる各画素における勾配強度及び勾配方向の算出が行われる。
ステップS302において、第1抑制部12は、図2及び式(3)〜式(6)で説明したように、注目画素Paを対象とする非最大抑制処理のうち、図1に示した第1画素P1−1〜P1−4の勾配強度を参照する処理を実行する。
ステップS303において、第2抑制部13は、図3及び式(7)〜式(14)で説明したように、図1に示した第1画素P1−1〜P1−4のそれぞれを対象とする非最大抑制処理のうち、注目画素Paの勾配強度を参照する処理を実行する。
ステップS304において、判定部14は、図4で説明したように、図1に示した第2画素P2を対象とするヒステリシス閾値処理により、第2画素P2がエッジであるか否かを判定する。また、判定部14は、第2画素P2がエッジであるか否かを示すエッジ情報を第2画素P2に対応してバッファメモリBMに保持させる。
なお、第2画素P2を対象とするヒステリシス閾値処理が完了した後に、図1に示した第2画素P2の左上の画素Peに対応付けてバッファメモリBMに保持されたエッジ情報が判定部14によって参照されることはない。そこで、エッジ検出装置10のプロセッサは、画素Peに対応してバッファメモリBMに保持されたエッジ情報ErをフレームメモリMMに渡し、画素Peに対応付けられたバッファメモリBMの記憶領域を解放する。例えば、図5において座標(i−2,j−2)で示した第2画素P2を対象とするヒステリシス閾値処理の完了に応じて、領域LBDに対応付けられたリングバッファに含まれる座標(i−3,j−3)で示した画素Peの記憶領域が解放される。同様にして、図5に示した領域LBC,LBB,LBAに対応するリングバッファは、エッジ検出装置10のプロセッサによって更新される。
ステップS305において、エッジ検出装置10に搭載されたプロセッサは、第jラインに含まれる各画素を注目画素Paとする処理が終了したか否かを判定する。
第jラインに含まれる画素の中でまだ注目画素Paとされていない画素がある場合に(ステップS305の否定判定(NO))、処理はステップS301に移行し、算出部11により、新たな注目画素Paにおける勾配強度及び勾配方向が算出される。
一方、第jラインに含まれる各画素を注目画素Paとする処理が終了した場合に(ステップS305の肯定判定(YES))、画像IMG中の第jラインを対象とするエッジ検出装置10の処理は終了する。
そして、エッジ検出装置10に搭載されたプロセッサは、フレームメモリMMから、画像IMGの中の新たな1ラインに含まれる各画素の輝度値を示す画像データImgをバッファメモリBMに読み込む。その後、エッジ検出装置10に搭載されたプロセッサは、読み込んだ画像データImgを用いてステップS301〜ステップS305の処理を実行する。
ステップS301〜ステップS305で説明した処理を画像IMGに含まれる各ラインの画像データImgを読み込むごとに実行することで、エッジ検出装置10は、画像IMGに含まれるエッジをCanny法により検出することができる。
以上に説明したように、エッジ検出装置10は、数ライン程度の容量を持つバッファメモリBMに、Canny法によるエッジ検出処理の各段階の処理結果を保持させることで、Canny法によるエッジ検出を実現する。つまり、エッジ検出装置10は、Canny法によるエッジ検出処理の各段階の処理結果をフレームメモリMMに書き出すことはない。したがって、以上に説明したエッジ検出装置10は、途中の処理結果の格納にフレームメモリを用いる場合に比べて、外部のフレームメモリMMに対するアクセス回数を抑制することができる。
また、図5、図6で説明したように、図1に示したエッジ検出装置10は、非最大抑制処理を第1抑制部12と第2抑制部13とで分割して実行することで、一括して実行する場合に比べて、バッファメモリBMとして用意する容量を少なくすることができる。
即ち、図1に示したエッジ検出装置10は、外部に設けられたフレームメモリMM等に対するアクセスを削減しつつ、内部のバッファメモリBMの容量を低減することができる。
次に、図5、図8及び図9を参照して、エッジ検出装置10によるエッジ検出処理に用いられるバッファメモリBMの容量を削減する技術が説明される。
図8は、エッジ検出装置の別実施形態を示す。なお、図8に示す構成要素のうち、図1に示した構成要素と同等のものは、同一の符号で示すとともに構成要素の説明を省略する場合がある。
図8に示したエッジ検出装置10aは、図1に示したエッジ検出装置10と同様に、フレームメモリMM及び画像処理装置PRに接続される。エッジ検出装置10aは、算出部11と、第1抑制部12と、第2抑制部13と、判定部14aと、バッファメモリBMaとを含んでいる。ここで、算出部11、第1抑制部12及び第2抑制部13は、図1に同じ符号で示した構成要素と同等であるので説明を省略する。
図8に示したバッファメモリBMaは、図1に示したバッファメモリBMに相当する構成要素であり、4つのリングバッファRBA,RBB,RBC,RBDを含んでいる。リングバッファRBAは、図5に示した画像IMGの領域LBAに対応付けられた記憶領域であり、フレームメモリMMから渡される画像データImgを保持する。リングバッファRBBは、図5に示した画像IMGの領域LBBに対応付けられた記憶領域であり、領域LBBに含まれる各画素に対応して、各画素の輝度値とともに、算出部11で算出された勾配強度及び勾配方向を保持する。また、リングバッファRBC及びリングバッファRBDのそれぞれは、図5に示した画像IMGの領域LBC及び領域LBDのそれぞれに対応付けられた記憶領域であり、判定部14aによるヒステリシス閾値処理で用いられる情報を保持する。なお、リングバッファRBC,RBDに保持される情報については、判定部14aの構成及び動作の説明とともに後述される。
図8に示した判定部14aは、置換部141と、決定部142とを含む。置換部141は、第2抑制部13と、リングバッファRBB,RBCと、決定部142とに接続されている。また、決定部142は、リングバッファRBC及びリングバッファRBDに接続されている。
置換部141は、第2抑制部13により、図5に示した領域LBB内の座標(i,j)で示した注目画素Paの勾配強度を参照する処理が完了した場合に、次に述べる置換処理を実行する。
まず、置換部141は、図1に示した注目画素Paの左及び上に隣接する第1画素P1−1〜P1−4のうち、図5に座標(i−1,j−1)で示した第1画素P1−1の勾配強度をリングバッファRBBから取得する。
次いで、置換部141は、リングバッファRBBから受けた勾配強度を第1閾値及び第2閾値と比較し、座標(i−1,j−1)で示した第1画素P1−1の勾配強度と第1閾値及び第2閾値との大小関係を示す判定情報を生成する。置換部141は、例えば、第1画素P1−1の勾配強度が、図4で説明した第0階級、第1階級及び第2階級のどれに含まれるかを第1ビットと第2ビットの値の組み合わせで示す2ビットの情報を判定情報として生成する。置換部141は、例えば、式(20)を用いて、第1画素P1−1の勾配強度Sが属する階級を示す判定情報Dを生成することが望ましい。なお、式(20)において、数値Th1は第1閾値を示し、数値Th2は第1閾値よりも大きい値を持つ第2閾値を示す。また、式(20)は、2ビットの判定情報の下位のビットである第1ビットにより勾配強度が第2閾値Th2よりも大きいか否かを示し、上位のビットである第2ビットにより勾配強度が第1閾値Th1と第2閾値Th2との間に含まれるか否かを示す例である。
例えば、置換部141は、第1画素P1−1の勾配強度Sが第1閾値Th1以下である場合に、勾配強度Sが第0階級に属することを示す判定情報Dとして、式(20)で示される2ビットの情報「00」を生成する。同様に、置換部141は、勾配強度Sが第1閾値Th1より大きく第2閾値Th2以下である場合に、勾配強度Sが第1階級に属することを示す判定情報Dとして、式(20)で示される2ビットの情報「10」を生成する。また、置換部141は、第1画素P1−1の勾配強度Sが第2閾値Th2より大きい場合に、勾配強度Sが第2階級に属することを示す判定情報Dとして、式(20)で示される2ビットの情報「01」を生成する。なお、置換部141で生成される判定情報は、式(20)で示される2ビットの情報に限らず、第1画素P1−1の勾配強度Sが、図4で説明した3つの階級のどれに属するかを異なるビットパターンで示す情報であればよい。
そして、置換部141は、座標(i−1,j−1)で示した第1画素P1−1の勾配強度の代わりに、第1画素P1−1の勾配強度と第1閾値及び第2閾値との大小関係を示す判定情報をリングバッファRBCに保持させる。これにより、置換部141は、座標(i−1,j−1)で示した第1画素P1−1に対応してリングバッファRBBに保持された勾配強度を、リングバッファRBCに保持させる2ビットの判定情報に置き換える。
ここで、図5に座標(i−1,j−1)で示した第1画素P1−1は、第1画素P1−1〜P1−4のうち、注目画素Paよりも後に勾配が算出される画素を注目画素として第1抑制部12で行われる非最大抑制処理で参照されない第1画素の一例である。また、図5に座標(i−1,j−1)で示した第1画素P1−1は、第1画素P1−1〜P1−4のうち、第2抑制部13の処理において、注目画素Paよりも後に算出部11によって算出される勾配強度を参照しない第1画素の一例でもある。即ち、置換部141は、注目画素Paの勾配強度を参照する処理の完了に応じて、注目画素Paに対応する第1画素のうち、注目画素Paよりも後に勾配が算出される画素を対象とする非最大抑制処理で参照されない第1画素の勾配強度を判定情報に置き換える。
図8に示した決定部142は、置換部141により、図5において座標(i−1,j−1)で示した画素の勾配強度が判定情報で置換された後に、次に述べるようにして、座標(i−2,j−2)で示す画素がエッジか否かを決定する。ここで、図5において座標(i−2,j−2)で示す画素は、注目画素Paの勾配強度を参照する処理で非最大抑制処理が完了した第1画素と当該第1画素よりも前に非最大抑制処理が完了した画素とで囲まれた第2画素に相当する。即ち、図5において座標(i−2,j−2)で示す画素は、図1に示した第2画素P2に相当する。また、座標(i−1,j−1)の画素を対象とする置換処理が完了した段階で、図1に示した領域Rhに含まれる他の画素を対象とする置換処理も既に完了している。したがって、座標(i−1,j−1)の画素を対象とする置換処理が完了した段階では、リングバッファRBC,RBDには、図1に示した領域Rhに含まれる各画素における勾配強度と第1閾値及び第2閾値との間の大小関係を示す判定情報が保持されている。
まず、決定部142は、リングバッファRBC及びリングバッファRBDから、図1に示した第2画素P2を中心とする領域Rhに含まれる各画素に対応して保持された判定情報を取得する。例えば、決定部142は、リングバッファRBCから、図5において座標(i−1,j−2)、座標(i−3,j−1),座標(i−2,j−1)及び座標(i−1,j−1)のそれぞれで示した画素に対応して保持された判定情報を読み出す。また、決定部142は、リングバッファRBDから、図5にて座標(i−3,j−3)、座標(i−2,j−3),座標(i−1,j−3),座標(i−3,j−2)及び座標(i−2,j−2)のそれぞれで示した画素に対応して保持された判定情報を読み出す。
そして、決定部142は、リングバッファRBC及びリングバッファRBDから読み出した判定情報に基づいて、図4で説明したヒステリシス閾値処理を実行することで、図5において座標(i−1,j−2)で示される第2画素P2がエッジか否かを決定する。
以下では、置換部141により、式(20)を用いて判定情報Dが生成される場合に、決定部142により第2画素P2がエッジであるか否かを判定する処理が説明される。
決定部142は、まず、第2画素P2に対応する判定情報Dを参照し、第2画素P2の判定情報Dが2ビットの情報「01」である場合に、図4(A)に示した場合と同等であると判断し、第2画素P2をエッジとする。この場合に、決定部142は、第2画素P2に対応してリングバッファRBDに保持された判定情報Dを、第2画素P2がエッジであることを示すエッジ情報Erとしてそのまま維持する。
また、決定部142は、第2画素P2の判定情報Dが2ビットの情報「00」の場合に、図4(B)に示した場合と同等であると判断し、第2画素P2はエッジでないとする。この場合に、決定部142は、第2画素P2に対応してリングバッファRBDに保持された判定情報Dを、第2画素P2がエッジでないことを示すエッジ情報Erとしてそのまま維持する。
一方、第2画素P2に対応する判定情報Dが2ビットの情報「10」である場合に、決定部142は、第2画素P2に隣接する画素のそれぞれに対応する判定情報Dを参照する。
そして、第2画素P2に隣接する画素のそれぞれに対応する判定情報Dの中に、第1ビットが値「1」を示す判定情報が含まれる場合に、決定部142は、図4(C)に示した場合と同等であると判断し、第2画素P2をエッジとする。この場合に、決定部142は、第2画素P2に対応してリングバッファRBDに保持された判定情報Dに含まれる第1ビットに値「1」を設定し、判定情報Dを第2画素P2がエッジであることを示すエッジ情報Erに変換する。
一方、第2画素P2に隣接する画素のそれぞれに対応する判定情報Dの中に、第1ビットが値「1」を示す判定情報が含まれない場合に、決定部142は、図4(D)に示した場合と同等であると判断し、第2画素P2はエッジでないとする。この場合に、決定部142は、第2画素P2に対応してリングバッファRBDに保持された判定情報Dを、第2画素P2がエッジでないことを示すエッジ情報Erとしてそのまま維持する。
以上に説明したようにして決定部142で生成されるエッジ情報Erは、エッジ情報Erに対応する画素がエッジであるか否かを示す情報とともに、対応する画素における勾配強度が図4で説明した3つの階級のどれに含まれるかを示す情報を含んでいる。したがって、決定部142は、リングバッファRBDから読み出したエッジ情報Erを判定情報Dとして用いることで、図4で説明したヒステリシス閾値処理と同等の処理を実行することができる。
そして、リングバッファRBDに保持されたエッジ情報Erは、例えば、1ライン分の処理が終了するごとに、画像処理装置PRに渡される。なお、リングバッファRBDは、エッジ情報ErをフレームメモリMMに渡してもよい。この場合に、フレームメモリMMに渡されたエッジ情報Erは、画像データが格納された記憶領域とは別にフレームメモリMM内部に設けられた記憶領域に格納される。そして、画像処理装置PRは、フレームメモリMMに格納されたエッジ情報Erを読み出すことで、エッジ検出装置10aで生成されたエッジ情報Erを受けてもよい。
ここで、図8に示したリングバッファRBCは図5に示した領域LBCに含まれる各画素に対応する2ビットの判定情報を保持する。したがって、図8に示したリングバッファRBCの容量は、式(21)で示される容量CC’となり、領域LBCに含まれる各画素に対応して各画素における勾配強度を示すn’ビットの情報を保持する場合に比べて小さくなる。なお、式21において、数値Wは、1ラインに含まれる画素数を示す。
CC’=2×(W+1) ・・・(21)
例えば、1ラインの画素数Wが2000程度である場合に、図8に示したリングバッファRBCの容量CC’は、約4キロビット(約250バイト)である。これに対して、図1に示したバッファメモリBMにおいて領域LBCに含まれる各画素に対応する勾配強度を保持するために割り当てられる容量CCは、各画素の勾配強度が16ビットのデータで表される場合に、約32キロビット(約4キロバイト)となる。
CC’=2×(W+1) ・・・(21)
例えば、1ラインの画素数Wが2000程度である場合に、図8に示したリングバッファRBCの容量CC’は、約4キロビット(約250バイト)である。これに対して、図1に示したバッファメモリBMにおいて領域LBCに含まれる各画素に対応する勾配強度を保持するために割り当てられる容量CCは、各画素の勾配強度が16ビットのデータで表される場合に、約32キロビット(約4キロバイト)となる。
即ち、図8に示した置換部141及び決定部142を有する判定部14aを含むエッジ検出装置10aは、図1に示したエッジ検出装置10に含まれるバッファメモリBMよりも少ない容量のバッファメモリBMaを用いて実現可能である。
図9は、図8に示した判定部14aの動作を示す。図9に示したステップS311〜ステップS320の処理は、図8に示した判定部14aの動作を示すとともに、図7においてステップS304で示したヒステリシス閾値処理の例を示す。例えば、図9に示す処理は、エッジ検出装置10aに搭載されたプロセッサがプログラムを実行することで実現される。なお、図9に示す処理は、エッジ検出装置10aに搭載されるハードウェアによって実行されてもよい。
ステップS311において、図8に示した置換部141は、図5において座標(i,j)で示した注目画素Paの左上に隣接する第1画素に対応してリングバッファRBBに保持された勾配強度を、例えば、式(20)を用いて算出される判定情報に置換する。
ステップS311の処理の後、図8に示した決定部142は、ステップS312〜ステップS320の処理により、図5において座標(i,j)で示した注目画素Paから左及び上にそれぞれ2画素ずれた画素である第2画素P2がエッジか否かを決定する。即ち、決定部142は、図5において座標(i−2,j−2)で示した第2画素P2を対象とするヒステリシス閾値処理として、ステップS312〜ステップS320の処理を実行する。
ステップS312において、決定部142は、まず、図8に示したリングバッファRBCに第2画素P2に対応して保持された判定情報Dを参照する。
ステップS313において、決定部142は、ステップS312の処理で参照した判定情報Dに含まれる第2ビットが値「1」を示すか否かを判定する。
判定情報Dに含まれる第2ビットが値「0」である場合、即ち、判定情報Dにより、第2画素P2の勾配強度が図4で説明した第1閾値Th1と第2閾値Th2との間の第1階級に属さないことが示された場合に、ステップS313の否定判定(NO)となる。この場合に、処理は、ステップS314に移行する。
ステップS314において、決定部142は、ステップS312の処理で参照した判定情報Dに含まれる第1ビットが値「1」を示すか否かを判定する。
判定情報Dに含まれる第1ビットが値「1」である場合、即ち、判定情報Dにより、第2画素P2の勾配強度が図4で説明した第2閾値Th2より大きい第2階級に属することが示された場合に、ステップS314の肯定判定(YES)となる。この場合に、処理は、ステップS315に移行する。
ステップS315において、決定部142は、第2画素P2をエッジとして検出し、第2画素P2を対象とするヒステリシス閾値処理を終了する。なお、この場合に、第2画素P2に対応してリングバッファRBCに保持された判定情報Dは、そのまま、第2画素P2に対応するエッジ情報Erとして維持される。
一方、ステップS312の処理で参照した判定情報Dに含まれる第2ビットが値「0」であり、かつ、第1ビットが値「0」場合に(ステップS314の否定判定(NO))、処理は、ステップS316に移行する。ここで、判定情報Dに含まれる第1ビット及び第2ビットがともに値「0」場合は、判定情報Dにより、第2画素P2の勾配強度が図4で説明した第1閾値Th1より小さい第0階級に属することが示された場合に相当する。
ステップS316において、決定部142は、第2画素P2をエッジではないとし、第2画素P2を対象とするヒステリシス閾値処理を終了する。なお、この場合に、第2画素P2に対応してリングバッファRBCに保持された判定情報Dは、そのまま、第2画素P2に対応するエッジ情報Erとして維持される。
ところで、ステップS312の処理で参照した判定情報Dに含まれる第2ビットが値「1」を示す場合、即ち、判定情報Dにより、第2画素P2の勾配強度が図4で説明した第1階級に属する場合は、ステップS313の肯定判定となる。この場合に、処理は、ステップS317に移行する。
ステップS317において、決定部142は、図8に示したリングバッファRBC,RBDに第2画素P2の周囲の8画素に対応して保持された判定情報Dを参照する。例えば、決定部142は、図5において座標(i−1,j−2)、座標(i−3,j−1),座標(i−2,j−1)及び座標(i−1,j−1)のそれぞれで示した画素に対応してリングバッファRBCに保持された判定情報を参照する。また、決定部142は、図5において座標(i−3,j−3)、座標(i−2,j−3),座標(i−1,j−3),座標(i−3,j−2)及び座標(i−2,j−2)のそれぞれで示した画素に対応してリングバッファRBDに保持された判定情報を参照する。
ステップS318において、決定部142は、ステップS317の処理で参照した判定情報の中に、第1ビットが値「1」を示す判定情報が含まれているか否かを判定する。
ステップS317の処理で参照した判定情報の中に、第1ビットが値「1」を示す判定情報が含まれていない場合に(ステップS318の否定判定(NO))、処理はステップS316に移行する。
一方、ステップS317の処理で参照した判定情報の中に、第1ビットが値「1」を示す判定情報が含まれている場合に(ステップS318の肯定判定(YES))、処理は、ステップS319に移行する。
ステップS319において、決定部142は、第2画素P2に対応してリングバッファRBCに保持された判定情報Dの第1ビットに値「1」を設定することで、判定情報Dを第2画素P2がエッジであることを示すエッジ情報Erに変換する。
その後、ステップS320において、決定部142は、第2画素P2をエッジとして検出し、第2画素P2を対象とするヒステリシス閾値処理を終了する。
図8及び図9で説明したように、ステップS312以降の処理に先立って、置換部141によりステップS311の処理を行うことにより、ステップS312以降のヒステリシス閾値処理は、2ビットで表される判定情報を参照することで実行可能となる。これにより、第2画素P2を対象とするヒステリシス閾値処理を、第2画素P2及び第2画素P2の周囲の画素に対応する勾配強度を第1閾値Th1及び第2閾値Th2と比較する場合に比べて簡易な処理によって実現することができる。即ち、図9に示したヒステリシス閾値処理は、第2画素P2及び第2画素P2の周囲の画素に対応する勾配強度を第1閾値Th1及び第2閾値Th2と比較する場合に比べて高速に実行可能である。
つまり、図8に示したエッジ検出装置10aは、図5に示した領域LBCに含まれる各画素に対応する勾配強度を保持する場合に比べて、バッファメモリBMaの容量を少なくでき、また、ヒステリシス閾値処理を高速に実行することができる。これらの特徴は、エッジ検出装置10aを、Canny法によるエッジ検出を行う処理ユニットとしてデジタルカメラなどに搭載する場合に有用である。
なお、図8に示した判定部14aは、ヒステリシス閾値処理として、図9に示した処理の代わりに、図10に示す処理を実行してもよい。
図10は、図8に示した判定部14aの動作の別例を示す。なお、図10に示すステップのうち、図9に示したステップと同等のものは、同一の符号で示すとともにステップの説明を省略する場合がある。図10に示した処理は、図8に示した判定部14aの動作の別例を示すとともに、図7においてステップS304で示したヒステリシス閾値処理の別例を示す。図10に示す処理は、エッジ検出装置10aに搭載されたプロセッサがプログラムを実行することで実現されてもよいし、エッジ検出装置10aに搭載されるハードウェアによって実行されてもよい。
図10の例では、図8に示した決定部142は、ステップS317の処理の後に、図9に示したステップS318に代えて、ステップS318’の処理を実行する。
ステップS318’において、決定部142は、ステップS317の処理で参照した判定情報の中に、第2ビットが値「0」であり、かつ、第1ビットが値「1」を示す判定情報が含まれているか否かを判定する。
ステップS317で参照した判定情報に、第2ビットが値「0」かつ第1ビットが値「1」の判定情報が含まれる場合(ステップS318’の肯定判定(YES))、決定部142は、ステップS319及びステップS320の処理を実行する。
一方、ステップS317で参照した判定情報に、第2ビットが値「0」かつ第1ビットが値「1」の判定情報が含まれない場合(ステップS318’の否定判定(NO))、決定部142は、ステップS316の処理を実行する。
ここで、ステップS317で参照した判定情報に、第2ビットが値「0」かつ第1ビットが値「1」の判定情報が含まれる場合は、即ち、第2画素P2の周囲に第2階級に属する勾配強度を持つ画素がある場合である。つまり、決定部142により、ステップS318’の処理を実行する場合は、第2画素P2の周囲に第2階級に属する勾配強度を持つ画素があるか否かに基づいて、第2画素P2がエッジであるか否かが判定される。
また、図1及び図8に示した算出部11において、注目画素Paにおける輝度値の勾配を算出する際に参照する画像の範囲、即ち、勾配の算出に用いるSobelフィルタのカーネルは、図1において領域Raとして示した3画素×3画素の領域に限られない。例えば、算出部11は、例えば、5画素×5画素等、3画素×3画素よりも大きいサイズのカーネルを持つSobelフィルタを用いて、注目画素Paにおける輝度値の勾配強度及び勾配方向の算出を行ってもよい。
ここで、算出部11で用いられるSobelフィルタのカーネルが3画素×3画素よりも大きい場合にも、非最大抑制処理において参照される範囲は、非最大抑制処理の対象となる画素を中心とする3画素×3画素の領域となる。このため、例えば、5画素×5画素のSobelフィルタにより勾配を算出する算出部を有するエッジ検出装置においても、非最大抑制処理を第1抑制部12及び第2抑制部13により分割して実行することによる効果が損なわれることはない。
図1に示したエッジ検出装置10および図8に示したエッジ検出装置10aは、例えば、デジタルカメラなどに搭載されるプロセッサなどのハードウェアを用いて実現することができる。
図11は、図8に示したエッジ検出装置10aを含むデジタルカメラのハードウェア構成例を示す。なお、図11に示した構成要素のうち、図8に示した構成要素と同等のものは同一の符号で示され、構成要素の説明は省略される場合がある。
図11に示したデジタルカメラCAMは、プロセッサ21と、メモリ22と、撮像部23と、信号処理部24と、操作パネル25と、液晶表示部26と、メモリカードインタフェース27と、画像処理ユニットGPUとを含んでいる。図11に示したプロセッサ21と、メモリ22と、撮像部23と、信号処理部24と、操作パネル25と、液晶表示部26と、メモリカードインタフェース27と、画像処理ユニットGPUとは、バスを介して互いに接続されている。また、メモリカードインタフェース27には、SD(Secure Digital)メモリカードなどの着脱可能なメモリカードMCが装着されている。
また、図11に示した画像処理ユニットGPUは、プロセッサCP、メモリMEM及びバッファメモリBMaを有するエッジ検出装置10aと、顔認識エンジンPRfとを含んでいる。
撮像部23は、レンズなどの光学系及び撮像素子を含み、被写体の画像を撮影する。撮像部23による撮影で得られた画像信号は、信号処理部24に渡される。信号処理部24は、撮像部23から受けた画像信号に基づいて、撮像部23内の撮像素子に含まれる各画素に対応する輝度成分及び色成分を示す画像データを生成するための補間処理を含む信号処理を行う。信号処理部24は、撮像部23から受けた画像信号に基づいて、例えば、各画素の輝度成分及び色成分をYUV形式で示す画像データを生成し、生成した画像データをメモリ22に渡す。
メモリ22は、デジタルカメラCAMの動作を制御するための制御プログラムを保持するとともに、信号処理部24から渡される画像データを保持する。プロセッサ21は、メモリ22に保持された制御プログラムを実行することで、撮像部23、信号処理部24、操作パネル25及び液晶表示部26の動作を制御する。なお、メモリ22において、信号処理部24から渡された画像データが保持される領域は、図8に示したフレームメモリMMに相当する。
操作パネル25は、デジタルカメラCAMの利用者からの指示を受けるための入力装置であり、例えば、撮像部23による画像の撮影を実行させる指示を入力するためのレリーズボタンなどを含んでいる。また、液晶表示部26は、メモリ22に保持された画像データなどを表示する表示装置である。
また、画像処理ユニットGPUに含まれる顔認識エンジンPRfは、図8に示した画像処理装置PRに相当する構成要素の一例であり、エッジ検出装置10aによる処理で検出されたエッジに基づいて、画像データで示される画像に含まれる人物の顔の認識を行う。
図11に示したエッジ検出装置10aに含まれるメモリMEMは、例えば、EPROM(Erasable Programmable Read Only Memory)などであり、図7及び図9に示した処理をプロセッサCPが実行するためのエッジ検出プログラムを格納している。なお、メモリMEMは、図7及び図10に示した処理をプロセッサCPが実行するためのエッジ検出プログラムを格納してもよい。
そして、図11に示したエッジ検出装置10aに含まれるプロセッサCPは、メモリMEMに格納されたエッジ検出プログラムを実行することにより、図8に示した算出部11、第1抑制部12、第2抑制部13及び判定部14aの機能を果たす。
つまり、図8に示したエッジ検出装置10aは、例えば、図11に示したデジタルカメラCAMに搭載された画像処理ユニットGPUに含まれるプロセッサCPと、メモリMEMと、バッファメモリBMaとの協働によって実現することができる。
ここで、図8及び図9で説明したように、エッジ検出装置10aに設けられるバッファメモリBMaの容量は、例えば、画像に含まれるすべての画素に対応する輝度値及びCanny法によるエッジ検出処理の各段階の処理結果を保持する場合に比べて小さい。したがって、顔認識エンジンPRfによる顔認識処理に用いるエッジ情報の生成のために、画像処理ユニットGPUにエッジ検出装置10aを搭載したことによるハードウェア量の増大は軽微である。
図12は、図11に示したデジタルカメラCAMの動作を示す。図12に示したステップS321〜ステップS325の各処理は、デジタルカメラCAMの動作を制御するための制御プログラムに含まれる処理の一例である。また、ステップS321〜ステップS325の各処理は、例えば、図11に示した操作パネル25に設けられたレリーズボタンの操作により、デジタルカメラCAMの利用者から画像の撮影が指示される毎にプロセッサ21によって実行される。
ステップS321において、プロセッサ21は、撮像部23に対して被写体の撮影を指示し、撮像部23による撮影で得られた画像信号に基づいて信号処理部24で生成される画像データを取得する。信号処理部24によって生成された画像データは、図11に示したメモリ22に保持される。メモリ22に保持された画像データは、画像処理ユニットGPUに含まれるエッジ検出装置10aからアクセス可能である。
ステップS322において、プロセッサ21は、エッジ検出装置10aに対して、メモリ22に保持された画像データで示される画像からCanny法によりエッジを検出する処理の実行を指示する。
プロセッサ21からの指示に応じて、エッジ検出装置10aに含まれるプロセッサCPは、例えば、メモリMEMに保持されたエッジ検出プログラムを実行することで、図7及び図9に示したエッジ検出処理を実行する。なお、図11に示したエッジ検出装置10aの動作は、図13を用いて後述される。
ステップS323において、プロセッサ21は、顔認識エンジンPRfに対して、エッジ検出装置10aによって検出されたエッジに基づく顔認識処理の実行を指示する。そして、プロセッサ21からの指示に応じて、顔認識エンジンPRfは、例えば、メモリ22に保持されたエッジ情報に基づいて、画像に含まれる人物の顔を認識する処理を行う。顔認識エンジンPRfによる認識処理で得られた情報は、例えば、メモリ22を介してプロセッサ21に渡される。
ステップS324において、プロセッサ21は、例えば、ステップS323の処理で得られた顔認識結果を含むタグ情報を生成し、生成したタグ情報をメモリ22に保持された画像データに付加する。
ステップS325において、プロセッサ21は、ステップS324の処理でタグ情報が付加された画像データをメモリカードインタフェース27に渡し、メモリカードインタフェース27を介して画像データをメモリカードMCに記録する。そして、ステップS325の処理の終了後に、プロセッサ21は、画像の撮影処理を終了する。
図11及び図12で説明したように、エッジ検出装置10aを搭載したデジタルカメラCAMは、利用者によるレリーズボタンの操作に応じて画像が撮影される毎に、Canny法によるエッジ検出処理を実行する。これにより、顔認識エンジンPRfは、Canny法を用いない場合に比べて高い精度で検出されたエッジに基づいて、画像に含まれる人物の顔を認識することができる。
図13は、図11に示したエッジ検出装置10aの動作を示す。なお、図13に示すステップのうち、図7に示したステップと同等のものは、同一の符号で示すとともにステップの説明を省略する場合がある。また、図13に示したステップS301〜ステップS305及びステップS331〜ステップS339の処理は、図11に示したメモリMEMに格納されたプログラムに従ってプロセッサCPにより実行される処理の例である。
ステップS331において、プロセッサCPは、メモリ22に保持された画像に対する処理に先立って、画像の上の端を対象とする境界処理を実行する。例えば、プロセッサCPは、鏡面処理を用いて、図5に示した画像IMGの第0ラインから第2ラインまでの領域に含まれる各画素に対応するエッジ情報及び非最大抑制処理結果を生成する。また、プロセッサCPは、鏡面処理を用いて生成した情報を、図5に示した領域LBD,LBC,LBBに含まれる各画素に対応する情報としてバッファメモリBMaに保持させる。また、プロセッサCPは、第3ラインに含まれる各画素の輝度値を示す画像データをメモリ22から読み出し、読み出した画像データを、図5に示した領域LBAに対応する画像データの一部としてバッファメモリBMaに保持させる。また、プロセッサCPは、ステップS301において勾配を算出する対象となる注目画素のy方向の位置を示す座標値jに初期値「3」を設定する。
ステップS332において、プロセッサCPは、第j+1ラインに含まれる各画素の輝度値を示す画像データを、図5に示した領域LBAに対応する画像データの一部としてメモリ22からバッファメモリBMaに読み込む。
ステップS333において、プロセッサCPは、図5に示した画像IMGにおいて座標(0、j)で示される画素についての境界処理として、例えば、鏡面処理を用いて座標(0、j)の画素における勾配強度及び勾配方向を算出する処理を実行する。また、プロセッサCPは、算出した勾配強度及び勾配方向を、座標(0、j)の画素に対応してバッファメモリBMaに保持させる。
その後、プロセッサCPは、第jラインの第1画素から第W−2画素までの各画素を順次に注目画素として、ステップS301〜ステップS305の処理を繰り返し実行する。即ち、プロセッサCPは、第jラインにおいて注目画素を示すx方向の座標値iを初期値「1」から値「W−2」まで変化させながら、ステップS301からステップS305の処理を実行する。
つまり、ステップS301において、プロセッサCPは、図5に示した画像IMGにおいて座標(i,j)で示される画素を注目画素とし、注目画素における勾配強度及び勾配方向を求める。そして、プロセッサCPは、求めた勾配強度及び勾配方向を、図5に示した領域LBBに含まれる注目画素に対応して、バッファメモリBMaに保持させる。
次に、ステップS302において、プロセッサCPは、図2で説明したようにして、注目画素を対象とする非最大抑制処理のうち、注目画素に隣接する画素であって、注目画素よりも前に勾配が算出された画素である第1画素の勾配を参照する処理を実行する。
その後、ステップS303において、プロセッサCPは、図3で説明したようにして、第1画素のそれぞれを対象とする非最大抑制処理のうち、注目画素の勾配を参照する処理を実行する。
ステップS304において、プロセッサCPは、図5に示した画像IMGにおいて座標(i−2,j−2)で示される第2画素を対象として、図4で説明したヒステリシス閾値処理を実行することにより、第2画素がエッジであるか否かを判定する。
その後、ステップS305において、プロセッサCPは、例えば、x方向の座標値iに基づいて、1ラインの処理が終了したか否かを判定する。
例えば、x方向の座標値iに値「1」を加算した値が、1ラインに含まれる画素数Wから値「1」を減じた値よりも小さい場合に、プロセッサCPは、ステップS305の否定判定(NO)ルートに従って、ステップS334の処理を実行する。
ステップS334において、プロセッサSPは、例えば、x方向の座標値iに値「1」を加算することで、座標値iを更新する。その後、処理は、ステップS301に移行し、更新された座標値iで示される新たな画素を注目画素として、ステップS301からステップS305の処理が実行される。
一方、x方向の座標値iに値「1」を加算した値が、1ラインに含まれる画素数Wから値「1」を減じた値に等しい場合に、プロセッサCPは、ステップS305の肯定判定(YES)ルートに従って、ステップS335に進む。
ステップS335において、プロセッサCPは、ステップS333と同様にして、図5に示した画像IMGにおいて座標(W−1,j)で示される第jラインの最後の画素についての境界処理を実行する。
ステップS336において、プロセッサCPは、図5に示した画像IMGの第j−3ラインに含まれる各画素に対応してバッファメモリBMaに保持されたエッジ情報を、メモリ22に書き出す処理を実行する。ここで、図8及び図9で説明したように、ステップS304のヒステリシス閾値処理により生成される2ビットのエッジ情報の第1ビットにより、画像IMGの第j−3ラインに含まれる各画素がエッジであるか否かが示される。したがって、プロセッサCPは、第j−3ラインに含まれる各画素に対応してバッファメモリBMaに保持されたエッジ情報の第1ビットをそれぞれを、第j−3ラインに含まれる各画素がエッジであるか否かを示すエッジ画像としてメモリ22に転送してもよい。
次に、ステップS337において、プロセッサCPは、y方向の座標値jに基づいて、画像IMGに含まれるラインのうち、ステップS301からステップS305の処理の適用が可能な全てのラインの処理が終了したか否かを判定する。例えば、プロセッサCPは、y方向の座標値jに値「1」を加算した値が、図5に示した画像IMGに含まれるライン数Hから1を減じた値「H−1」に到達したか否かにより、ステップS305の判定処理を行ってもよい。
例えば、y方向の座標値jに値「1」を加算した値が、値「H−1」未満である場合に、プロセッサCPは、ステップS337の否定判定(NO)ルートに従って、ステップS338の処理を実行する。
ステップS338において、プロセッサSPは、例えば、y方向の座標値jに値「1」を加算することで、座標値jを更新する。その後、処理は、ステップS332に移行し、更新された座標値jを用いて座標値j+1で示される新たなラインの画像データがバッファメモリBMaに読み込まれる。そして、更新された座標値で示される第jラインに含まれる各画素を注目画素として、ステップS333及びステップS301からステップS305の処理が実行される。
一方、y方向の座標値jに値「1」を加算した値が、画像IMGに含まれるライン数Hから1を減じた値「H−1」に等しい場合に、プロセッサCPは、ステップS337の肯定判定(YES)ルートに従って、ステップS339に進む。
ステップS339において、プロセッサCPは、ステップS331と同様にして、図5に示した画像IMGの下の端を対象とする境界処理を実行し、その後、プロセッサCPは、エッジ検出処理を終了する。
以上に説明したように、図13に示した各処理をプロセッサCPが実行することにより、図11に示したエッジ検出装置10aは、メモリ22に保持された画像データで示される画像に含まれるエッジを検出することができる。
以上に説明したエッジ検出装置10,10aは、図11に示したデジタルカメラCAMに搭載される場合に限らず、画像を撮影する機能を有する装置であれば、どのような装置にも搭載することが可能である。例えば、エッジ検出装置10,10aは、スキャナ装置で読み取った画像からエッジを検出することも可能であるし、ビデオカメラで撮影された動画像に含まれる画像のそれぞれからリアルタイムでエッジを検出することも可能である。
例えば、車両の後方に向けて配置されたビデオカメラによって撮影された映像に含まれる画像のそれぞれを受けた場合に、エッジ検出装置10,10aは、ビデオカメラの視野に含まれる人物などの輪郭を示すエッジを高い精度で検出することが可能である。即ち、エッジ検出装置10,10aを搭載することにより、ビデオカメラの映像に基づいて車両の後方にある物体や人物をリアルタイムで、かつ、高精度に認識するシステムを実現することが可能となる。
また、エッジ検出装置10,10aは、X線撮像装置や超音波撮像装置などによって撮影された画像からのエッジ検出にも適用可能であるので、例えば、医療分野や非破壊検査分野における画像診断などでの利用を図ることも可能である。
以上の詳細な説明により、実施形態の特徴点及び利点は明らかになるであろう。これは、特許請求の範囲が、その精神および権利範囲を逸脱しない範囲で、前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更を容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
以上の説明に関して、更に、以下の各項を開示する。
(付記1) 画像における画素の並び順に従って順次に特定される注目画素の画素値と前記注目画素の周囲の複数の画素の画素値とに基づいて、前記注目画素における画素値である注目画素値の勾配の強度及び前記注目画素値の勾配の方向を算出し、
前記注目画素値の勾配が算出される毎に、
前記注目画素値の勾配の強度が前記注目画素値の勾配の方向に隣接する画素の少なくとも一方の画素値の勾配の強度よりも小さい場合に前記注目画素値の勾配の強度を第1閾値よりも小さい値に置き換える処理である非最大抑制処理のうち、前記注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を前記注目画素値の勾配の強度との比較の対象として参照する第1処理と、
前記第1画素のそれぞれに対する前記非最大抑制処理のうち、前記注目画素値の勾配の強度を前記第1画素の画素値の勾配の強度との比較の対象として参照する第2処理とを実行し、
前記第1画素を含む前記非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び前記第2画素を囲む複数の画素の画素値の勾配の強度のそれぞれと、前記第1閾値及び前記第1閾値よりも大きい第2閾値との比較に基づいて、前記第2画素がエッジであるか否かを判定する第3処理を実行する
ことを特徴とするエッジ検出方法。
(付記2) 付記1に記載のエッジ検出方法において、
前記第2画素に対する前記第3処理は、
前記第2処理により前記第1画素に対する前記非最大抑制処理が完了するごとに、前記第1画素の画素値の勾配の強度を、前記勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報に置き換え、
前記第2画素の画素値の勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報と、前記第2画素を囲む画素のそれぞれの画素値の勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報とに基づいて、前記第2画素がエッジであるか否かを判定することで実行される、
ことを特徴とするエッジ検出方法。
(付記3) 画像における画素の並び順に従って順次に特定される注目画素の画素値と前記注目画素の周囲の複数の画素の画素値とに基づいて、前記注目画素における画素値である注目画素値の勾配の強度及び前記注目画素値の勾配の方向を算出する算出部と、
前記算出部で算出した前記注目画素値の勾配を用いて、前記注目画素値の勾配の強度が前記注目画素値の前記勾配の方向に隣接する画素の少なくとも一方の画素値の勾配の強度よりも小さい場合に前記注目画素値の勾配の強度を第1閾値よりも小さい値に置き換える処理である非最大抑制処理のうち、前記注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を前記注目画素値の勾配の強度との比較の対象として参照する第1処理を行う第1抑制部と、
前記算出部で算出した前記注目画素値の勾配を用いて、前記第1画素のそれぞれに対する前記非最大抑制処理のうち、前記注目画素値の勾配の強度を前記第1画素の画素値の勾配の強度との比較の対象として参照する第2処理を行う第2抑制部と、
前記第1画素を含む前記非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び前記第2画素を囲む各画素の画素値の勾配の強度のそれぞれと、前記第1閾値及び前記第1閾値よりも大きい第2閾値との比較に基づいて、前記第2画素がエッジであるか否かを判定する第3処理を実行する判定部と
を備えたことを特徴とするエッジ検出装置。
(付記1) 画像における画素の並び順に従って順次に特定される注目画素の画素値と前記注目画素の周囲の複数の画素の画素値とに基づいて、前記注目画素における画素値である注目画素値の勾配の強度及び前記注目画素値の勾配の方向を算出し、
前記注目画素値の勾配が算出される毎に、
前記注目画素値の勾配の強度が前記注目画素値の勾配の方向に隣接する画素の少なくとも一方の画素値の勾配の強度よりも小さい場合に前記注目画素値の勾配の強度を第1閾値よりも小さい値に置き換える処理である非最大抑制処理のうち、前記注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を前記注目画素値の勾配の強度との比較の対象として参照する第1処理と、
前記第1画素のそれぞれに対する前記非最大抑制処理のうち、前記注目画素値の勾配の強度を前記第1画素の画素値の勾配の強度との比較の対象として参照する第2処理とを実行し、
前記第1画素を含む前記非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び前記第2画素を囲む複数の画素の画素値の勾配の強度のそれぞれと、前記第1閾値及び前記第1閾値よりも大きい第2閾値との比較に基づいて、前記第2画素がエッジであるか否かを判定する第3処理を実行する
ことを特徴とするエッジ検出方法。
(付記2) 付記1に記載のエッジ検出方法において、
前記第2画素に対する前記第3処理は、
前記第2処理により前記第1画素に対する前記非最大抑制処理が完了するごとに、前記第1画素の画素値の勾配の強度を、前記勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報に置き換え、
前記第2画素の画素値の勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報と、前記第2画素を囲む画素のそれぞれの画素値の勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報とに基づいて、前記第2画素がエッジであるか否かを判定することで実行される、
ことを特徴とするエッジ検出方法。
(付記3) 画像における画素の並び順に従って順次に特定される注目画素の画素値と前記注目画素の周囲の複数の画素の画素値とに基づいて、前記注目画素における画素値である注目画素値の勾配の強度及び前記注目画素値の勾配の方向を算出する算出部と、
前記算出部で算出した前記注目画素値の勾配を用いて、前記注目画素値の勾配の強度が前記注目画素値の前記勾配の方向に隣接する画素の少なくとも一方の画素値の勾配の強度よりも小さい場合に前記注目画素値の勾配の強度を第1閾値よりも小さい値に置き換える処理である非最大抑制処理のうち、前記注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を前記注目画素値の勾配の強度との比較の対象として参照する第1処理を行う第1抑制部と、
前記算出部で算出した前記注目画素値の勾配を用いて、前記第1画素のそれぞれに対する前記非最大抑制処理のうち、前記注目画素値の勾配の強度を前記第1画素の画素値の勾配の強度との比較の対象として参照する第2処理を行う第2抑制部と、
前記第1画素を含む前記非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び前記第2画素を囲む各画素の画素値の勾配の強度のそれぞれと、前記第1閾値及び前記第1閾値よりも大きい第2閾値との比較に基づいて、前記第2画素がエッジであるか否かを判定する第3処理を実行する判定部と
を備えたことを特徴とするエッジ検出装置。
(付記4) 付記3に記載のエッジ検出装置において、
前記判定部は、
前記第2抑制部による前記第2処理が完了した第1画素の画素値の勾配の強度を、前記勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報に置き換える置換部と、
前記第2画素の画素値の勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報と、前記第2画素を囲む画素の画素値の勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報とに基づいて、前記第2画素がエッジであるか否かを決定する決定部とを有する
ことを特徴とするエッジ検出装置。
(付記5)付記4に記載のエッジ検出装置において、
前記置換部は、
前記第1画素の画素値の勾配の強度が前記第2閾値よりも大きい場合に、値「1」を示す第1ビット及び値「0」を示す第2ビットを含む判定情報で前記勾配の強度を置き換え、
前記第1画素の画素値の勾配の強度が前記第1閾値よりも大きく、かつ前記第2閾値以下である場合に、値「0」を示す第1ビット及び値「1」を示す第2ビットを含む判定情報で前記勾配の強度を置き換え、
前記第1画素の画素値の勾配の強度が前記第1閾値以下である場合に、値「0」を示す第1ビット及び値「0」を示す第2ビットを含む判定情報で前記勾配の強度を置き換え、
前記決定部は、
前記置換部により前記第2画素について得られた判定情報の第2ビットが値「1」であり、前記第2画素を囲む複数の画素に対応する判定情報の少なくとも一つに含まれる第1ビットに値「1」が設定されている場合に、前記第2画素をエッジであると判定し、
前記第2画素がエッジであると判定した場合に、前記第2画素に対応する判定情報の第1ビットに値「1」を設定する
ことを特徴とするエッジ検出装置。
(付記6)画像における画素の並び順に従って順次に特定される注目画素の画素値と前記注目画素の周囲の複数の画素の画素値とに基づいて、前記注目画素における画素値である注目画素値の勾配の強度及び前記注目画素値の勾配の方向を算出し、
前記注目画素値の勾配が算出される毎に、
前記注目画素値の勾配の強度が前記注目画素値の勾配の方向に隣接する画素の少なくとも一方の画素値の勾配の強度よりも小さい場合に前記注目画素値の勾配の強度を第1閾値よりも小さい値に置き換える処理である非最大抑制処理のうち、前記注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を前記注目画素値の勾配の強度との比較の対象として参照する第1処理と、
前記第1画素のそれぞれに対する前記非最大抑制処理のうち、前記注目画素値の勾配の強度を前記第1画素の画素値の勾配の強度との比較の対象として参照する第2処理とを実行し、
前記第1画素を含む前記非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び前記第2画素を囲む複数の画素の画素値の勾配の強度のそれぞれと、前記第1閾値及び前記第1閾値よりも大きい第2閾値との比較に基づいて、前記第2画素がエッジであるか否かを判定する第3処理を実行する、
処理をコンピュータに実行させることを特徴とするエッジ検出プログラム。
前記判定部は、
前記第2抑制部による前記第2処理が完了した第1画素の画素値の勾配の強度を、前記勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報に置き換える置換部と、
前記第2画素の画素値の勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報と、前記第2画素を囲む画素の画素値の勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報とに基づいて、前記第2画素がエッジであるか否かを決定する決定部とを有する
ことを特徴とするエッジ検出装置。
(付記5)付記4に記載のエッジ検出装置において、
前記置換部は、
前記第1画素の画素値の勾配の強度が前記第2閾値よりも大きい場合に、値「1」を示す第1ビット及び値「0」を示す第2ビットを含む判定情報で前記勾配の強度を置き換え、
前記第1画素の画素値の勾配の強度が前記第1閾値よりも大きく、かつ前記第2閾値以下である場合に、値「0」を示す第1ビット及び値「1」を示す第2ビットを含む判定情報で前記勾配の強度を置き換え、
前記第1画素の画素値の勾配の強度が前記第1閾値以下である場合に、値「0」を示す第1ビット及び値「0」を示す第2ビットを含む判定情報で前記勾配の強度を置き換え、
前記決定部は、
前記置換部により前記第2画素について得られた判定情報の第2ビットが値「1」であり、前記第2画素を囲む複数の画素に対応する判定情報の少なくとも一つに含まれる第1ビットに値「1」が設定されている場合に、前記第2画素をエッジであると判定し、
前記第2画素がエッジであると判定した場合に、前記第2画素に対応する判定情報の第1ビットに値「1」を設定する
ことを特徴とするエッジ検出装置。
(付記6)画像における画素の並び順に従って順次に特定される注目画素の画素値と前記注目画素の周囲の複数の画素の画素値とに基づいて、前記注目画素における画素値である注目画素値の勾配の強度及び前記注目画素値の勾配の方向を算出し、
前記注目画素値の勾配が算出される毎に、
前記注目画素値の勾配の強度が前記注目画素値の勾配の方向に隣接する画素の少なくとも一方の画素値の勾配の強度よりも小さい場合に前記注目画素値の勾配の強度を第1閾値よりも小さい値に置き換える処理である非最大抑制処理のうち、前記注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を前記注目画素値の勾配の強度との比較の対象として参照する第1処理と、
前記第1画素のそれぞれに対する前記非最大抑制処理のうち、前記注目画素値の勾配の強度を前記第1画素の画素値の勾配の強度との比較の対象として参照する第2処理とを実行し、
前記第1画素を含む前記非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び前記第2画素を囲む複数の画素の画素値の勾配の強度のそれぞれと、前記第1閾値及び前記第1閾値よりも大きい第2閾値との比較に基づいて、前記第2画素がエッジであるか否かを判定する第3処理を実行する、
処理をコンピュータに実行させることを特徴とするエッジ検出プログラム。
10,10a…エッジ検出装置;11…算出部;12…第1抑制部;13…第2抑制部;14,14a…判定部;141…置換部;142…決定部;21、CP…プロセッサ;22、MEM…メモリ;23…撮像部;24…信号処理部;25…操作パネル;26…液晶表示部;27…メモリカードインタフェース;MC…メモリカード;CAM…デジタルカメラ;GPU…画像処理ユニット;PRf…顔認識エンジン;BM,BMa…バッファメモリ;MM…フレームメモリ;PR…画像処理装置
Claims (5)
- 画像における画素の並び順に従って順次に特定される注目画素の画素値と前記注目画素の周囲の複数の画素の画素値とに基づいて、前記注目画素における画素値である注目画素値の勾配の強度及び前記注目画素値の勾配の方向を算出し、
前記注目画素値の勾配が算出される毎に、
前記注目画素値の勾配の強度が前記注目画素値の勾配の方向に隣接する画素の少なくとも一方の画素値の勾配の強度よりも小さい場合に前記注目画素値の勾配の強度を第1閾値よりも小さい値に置き換える処理である非最大抑制処理のうち、前記注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を前記注目画素値の勾配の強度との比較の対象として参照する第1処理と、
前記第1画素のそれぞれに対する前記非最大抑制処理のうち、前記注目画素値の勾配の強度を前記第1画素の画素値の勾配の強度との比較の対象として参照する第2処理とを実行し、
前記第1画素を含む前記非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び前記第2画素を囲む複数の画素の画素値の勾配の強度のそれぞれと、前記第1閾値及び前記第1閾値よりも大きい第2閾値との比較に基づいて、前記第2画素がエッジであるか否かを判定する第3処理を実行する
ことを特徴とするエッジ検出方法。 - 請求項1に記載のエッジ検出方法において、
前記第2画素に対する前記第3処理は、
前記第2処理により前記第1画素に対する前記非最大抑制処理が完了するごとに、前記第1画素の画素値の勾配の強度を、前記勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報に置き換え、
前記第2画素の画素値の勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報と、前記第2画素を囲む画素のそれぞれの画素値の勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報とに基づいて、前記第2画素がエッジであるか否かを判定することで実行される、
ことを特徴とするエッジ検出方法。 - 画像における画素の並び順に従って順次に特定される注目画素の画素値と前記注目画素の周囲の複数の画素の画素値とに基づいて、前記注目画素における画素値である注目画素値の勾配の強度及び前記注目画素値の勾配の方向を算出する算出部と、
前記算出部で算出した前記注目画素値の勾配を用いて、前記注目画素値の勾配の強度が前記注目画素値の前記勾配の方向に隣接する画素の少なくとも一方の画素値の勾配の強度よりも小さい場合に前記注目画素値の勾配の強度を第1閾値よりも小さい値に置き換える処理である非最大抑制処理のうち、前記注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を前記注目画素値の勾配の強度との比較の対象として参照する第1処理を行う第1抑制部と、
前記算出部で算出した前記注目画素値の勾配を用いて、前記第1画素のそれぞれに対する前記非最大抑制処理のうち、前記注目画素値の勾配の強度を前記第1画素の画素値の勾配の強度との比較の対象として参照する第2処理を行う第2抑制部と、
前記第1画素を含む前記非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び前記第2画素を囲む各画素の画素値の勾配の強度のそれぞれと、前記第1閾値及び前記第1閾値よりも大きい第2閾値との比較に基づいて、前記第2画素がエッジであるか否かを判定する第3処理を実行する判定部と
を備えたことを特徴とするエッジ検出装置。 - 請求項3に記載のエッジ検出装置において、
前記判定部は、
前記第2抑制部による前記第2処理が完了した第1画素の画素値の勾配の強度を、前記勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報に置き換える置換部と、
前記第2画素の画素値の勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報と、前記第2画素を囲む画素の画素値の勾配の強度と前記第1閾値及び前記第2閾値との大小関係を示す判定情報とに基づいて、前記第2画素がエッジであるか否かを決定する決定部とを有する
ことを特徴とするエッジ検出装置。 - 画像における画素の並び順に従って順次に特定される注目画素の画素値と前記注目画素の周囲の複数の画素の画素値とに基づいて、前記注目画素における画素値である注目画素値の勾配の強度及び前記注目画素値の勾配の方向を算出し、
前記注目画素値の勾配が算出される毎に、
前記注目画素値の勾配の強度が前記注目画素値の勾配の方向に隣接する画素の少なくとも一方の画素値の勾配の強度よりも小さい場合に前記注目画素値の勾配の強度を第1閾値よりも小さい値に置き換える処理である非最大抑制処理のうち、前記注目画素に隣接する画素のうち画素値の勾配が既に算出された第1画素の画素値の勾配の強度を前記注目画素値の勾配の強度との比較の対象として参照する第1処理と、
前記第1画素のそれぞれに対する前記非最大抑制処理のうち、前記注目画素値の勾配の強度を前記第1画素の画素値の勾配の強度との比較の対象として参照する第2処理とを実行し、
前記第1画素を含む前記非最大抑制処理が完了した画素に囲まれた第2画素の画素値の勾配の強度及び前記第2画素を囲む複数の画素の画素値の勾配の強度のそれぞれと、前記第1閾値及び前記第1閾値よりも大きい第2閾値との比較に基づいて、前記第2画素がエッジであるか否かを判定する第3処理を実行する、
処理をコンピュータに実行させることを特徴とするエッジ検出プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014142407A JP2016018490A (ja) | 2014-07-10 | 2014-07-10 | エッジ検出方法、エッジ検出装置及びエッジ検出プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014142407A JP2016018490A (ja) | 2014-07-10 | 2014-07-10 | エッジ検出方法、エッジ検出装置及びエッジ検出プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016018490A true JP2016018490A (ja) | 2016-02-01 |
Family
ID=55233640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014142407A Pending JP2016018490A (ja) | 2014-07-10 | 2014-07-10 | エッジ検出方法、エッジ検出装置及びエッジ検出プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2016018490A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180037667A (ko) * | 2016-10-05 | 2018-04-13 | 경희대학교 산학협력단 | 지역 하이브리드 패턴의 부호화 방법과 이를 이용한 하이브리드 배경 모델링 방법 및 장치 |
CN108323389A (zh) * | 2018-01-18 | 2018-07-27 | 华南农业大学 | 水稻插秧机的插秧秧苗株距与穴秧苗数的检测方法和装置 |
CN112132067A (zh) * | 2020-09-27 | 2020-12-25 | 深圳市梦网视讯有限公司 | 一种基于压缩信息的人脸倾斜度分析方法、系统及设备 |
-
2014
- 2014-07-10 JP JP2014142407A patent/JP2016018490A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180037667A (ko) * | 2016-10-05 | 2018-04-13 | 경희대학교 산학협력단 | 지역 하이브리드 패턴의 부호화 방법과 이를 이용한 하이브리드 배경 모델링 방법 및 장치 |
KR101858202B1 (ko) | 2016-10-05 | 2018-06-28 | 경희대학교 산학협력단 | 지역 하이브리드 패턴의 부호화 방법과 이를 이용한 하이브리드 배경 모델링 방법 및 장치 |
CN108323389A (zh) * | 2018-01-18 | 2018-07-27 | 华南农业大学 | 水稻插秧机的插秧秧苗株距与穴秧苗数的检测方法和装置 |
CN112132067A (zh) * | 2020-09-27 | 2020-12-25 | 深圳市梦网视讯有限公司 | 一种基于压缩信息的人脸倾斜度分析方法、系统及设备 |
CN112132067B (zh) * | 2020-09-27 | 2024-04-09 | 深圳市梦网视讯有限公司 | 一种基于压缩信息的人脸倾斜度分析方法、系统及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9262807B2 (en) | Method and system for correcting a distorted input image | |
US10297013B2 (en) | Aerodynamic optical effect correction and identification integrated real-time processing system and method | |
JP2016513320A (ja) | 少なくとも1つの追加イメージを用いたイメージ改善及びエッジ検証のための方法及び装置 | |
US20120328152A1 (en) | Image processing apparatus, image processing method and storage medium | |
KR20180119696A (ko) | 이미지 사이의 광학 흐름의 효율적 결정 | |
US20140321771A1 (en) | Techniques for real-time clearing and replacement of objects | |
US20100182480A1 (en) | Image processing apparatus, image matching method, and computer-readable recording medium | |
WO2015016988A1 (en) | Object recognition and tracking using a classifier comprising cascaded stages of multiple decision trees | |
JPWO2018051459A1 (ja) | 物体検出装置および物体検出方法 | |
US10970807B2 (en) | Information processing apparatus and storage medium | |
US9030571B2 (en) | Abstract camera pipeline for uniform cross-device control of image capture and processing | |
CN111563924A (zh) | 图像深度确定方法及活体识别方法、电路、设备和介质 | |
CN108229281B (zh) | 神经网络的生成方法和人脸检测方法、装置及电子设备 | |
JP2016018490A (ja) | エッジ検出方法、エッジ検出装置及びエッジ検出プログラム | |
CN112308789A (zh) | 基于视觉的辅助系统和方法 | |
JP5812739B2 (ja) | 画像処理装置、画像処理方法、およびプログラム | |
CN111767752B (zh) | 一种二维码识别方法及装置 | |
JP2010176547A (ja) | 画像処理装置に含まれる制御装置、制御方法、及び制御処理プログラム | |
EP3355275B1 (en) | Out of order pixel shader exports | |
US20180176532A1 (en) | Systems and methods for computational zoom | |
CN108876704A (zh) | 人脸图像变形的方法、装置及计算机存储介质 | |
JP6576179B2 (ja) | 画像処理装置、画像処理方法、及びプログラム | |
CN110852958A (zh) | 基于物体倾斜角度的自适应校正方法和装置 | |
JP2014032628A (ja) | 対応点探索装置、そのプログラムおよびカメラパラメータ推定装置 | |
RU164158U1 (ru) | Устройство вычисления карты диспаратности для стереоизображения |