(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024036834
(43)【公開日】2024-03-18
(54)【発明の名称】画像処理装置、エッジ検出方法及びプログラム
(51)【国際特許分類】
G06T 7/136 20170101AFI20240311BHJP
G06V 10/44 20220101ALI20240311BHJP
【FI】
G06T7/136
G06V10/44
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022141340
(22)【出願日】2022-09-06
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.PYTHON
(71)【出願人】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】110001254
【氏名又は名称】弁理士法人光陽国際特許事務所
(72)【発明者】
【氏名】笹倉 三奈登
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096EA05
5L096FA06
5L096GA34
5L096GA51
5L096GA53
(57)【要約】
【課題】エッジ検出におけるヒステリシス閾値処理の処理時間を短縮することである。
【解決手段】画像処理装置は、エッジの強さの評価値が第1の閾値とより大きな第2の閾値との間の第1画素と、評価値が第2の閾値よりも大きい第2画素と、を用いて、注目画素p1が第1画素であった場合に、注目画素p1に隣接するスキャン済みの周辺画素p2~p5の何れかに第2画素又は第1画素を示すラベルが付与されていたときには当該ラベルと同じラベルを注目画素p1に付与し、何れのラベルも付与されていないときには新たな通し記号をラベルとして注目画素p1に付与する。画像処理装置は、ラベルが付与された各画素において隣接関係にあるラベルの組み合わせを示す対応テーブルを生成し、生成された対応テーブルに基づいて第1画素のそれぞれに対してエッジ画素とするか否かを判定する。
【選択図】
図10
【特許請求の範囲】
【請求項1】
エッジの強さを示す評価値が第1の閾値と当該第1の閾値よりも大きな第2の閾値との間になる第1画素のうち前記評価値が前記第2の閾値よりも大きい第2画素に直接的に隣接する第1画素及び他の前記第1画素を介して前記第2画素に間接的に隣接する第1画素をエッジ画素として判定する画像処理装置であって、
注目画素が前記第1画素であった場合に、当該注目画素に隣接するスキャン済みの画素の何れかに前記第2画素を示すラベルが付与されていたときには当該ラベルと同じラベルを前記注目画素に付与し、当該注目画素に隣接するスキャン済みの画素の何れにも前記第2画素を示すラベルが付与されておらず且つ当該注目画素に隣接するスキャン済みの画素の何れかに前記第1画素を示すラベルが付与されていたときには当該ラベルと同じラベルを前記注目画素に付与し、当該注目画素に隣接するスキャン済みの画素の何れにも前記第1画素を示すラベルと前記第2画素を示すラベルとの何れもが付与されていないときには新たな通し記号を前記第1画素を示すラベルとして前記注目画素に付与する付与手段と、
前記付与手段によりラベルが付与された各画素において隣接関係にあるラベルの組み合わせを示す対応テーブルを生成する生成手段と、
前記生成手段により生成された対応テーブルに基づいて前記第1画素のそれぞれに対してエッジ画素とするか否かを判定する判定手段と、
を備えることを特徴とする画像処理装置。
【請求項2】
前記付与手段は、前記注目画素に隣接するスキャン済みの画素間で互いに異なるラベルがそれぞれの画素において前記第1画素を示すラベルとして付与されていた場合には、前記通し記号が若い方のラベルを前記注目画素に付与する、
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記付与手段は、前記注目画素が前記第1画素であった場合に、当該注目画素に隣接するスキャン済みの画素の何れかに前記第2画素を示すラベルが付与されていたときには当該ラベルと同じラベルをエッジ画素を示すラベルとして前記注目画素に付与する、
ことを特徴とする請求項1に記載の画像処理装置。
【請求項4】
画像データにノイズ除去を行い、当該ノイズ除去された画像データから輪郭を抽出する輪郭抽出を行い、当該輪郭抽出された画像データに、エッジの強さが極大となる部分以外を除外する非極大抑制を行う前処理手段を備え、
前記付与手段は、前記非極大抑制された画像データの画像の画素にラベルを付与する、
ことを特徴とする請求項1から3の何れか一項に記載の画像処理装置。
【請求項5】
キャニー法によりエッジを検出する画像処理装置であって、
注目画素におけるエッジの強さを示す評価値と前記注目画素に隣接するスキャン済みの画素に付与されているラベルの付与状態とに基づいて当該注目画素に所定のラベルを付与する付与手段と、
前記付与手段によりラベルが付与された各画素において隣接関係にあるラベルの組み合わせを示す対応テーブルを生成する生成手段と、
前記評価値が第1の閾値と当該第1の閾値よりも大きな第2の閾値との間になっている画素のそれぞれに対して、前記生成手段により生成された対応テーブルに基づいてエッジ画素とするか否かを判定する判定手段と、
を備え、
前記付与手段は、前記注目画素における前記評価値が前記第1の閾値と前記第2の閾値との間であった場合に、前記注目画素に隣接するスキャン済みの画素の何れかに前記評価値が前記第1の閾値よりも大きいことを示すラベルが付与されているか否かの違いによって異なるラベルを前記注目画素に付与する、
ことを特徴とする画像処理装置。
【請求項6】
エッジの強さを示す評価値が第1の閾値と当該第1の閾値よりも大きな第2の閾値との間になる第1画素のうち前記評価値が前記第2の閾値よりも大きい第2画素に直接的に隣接する第1画素及び他の前記第1画素を介して前記第2画素に間接的に隣接する第1画素をエッジ画素として判定する画像処理装置が実行するエッジ検出方法であって、
注目画素が前記第1画素であった場合に、当該注目画素に隣接するスキャン済みの画素の何れかに前記第2画素を示すラベルが付与されていたときには当該ラベルと同じラベルを前記注目画素に付与し、当該注目画素に隣接するスキャン済みの画素の何れにも前記第2画素を示すラベルが付与されておらず且つ当該注目画素に隣接するスキャン済みの画素の何れかに前記第1画素を示すラベルが付与されていたときには当該ラベルと同じラベルを前記注目画素に付与し、当該注目画素に隣接するスキャン済みの画素の何れにも前記第1画素を示すラベルと前記第2画素を示すラベルとの何れもが付与されていないときには新たな通し記号を前記第1画素を示すラベルとして前記注目画素に付与する付与工程と、
前記付与工程によりラベルが付与された各画素において隣接関係にあるラベルの組み合わせを示す対応テーブルを生成する生成工程と、
前記生成工程により生成された対応テーブルに基づいて前記第1画素のそれぞれに対してエッジ画素とするか否かを判定する判定工程と、
を含むことを特徴とするエッジ検出方法。
【請求項7】
画像処理装置がキャニー法によりエッジを検出するエッジ検出方法であって、
注目画素におけるエッジの強さを示す評価値と前記注目画素に隣接するスキャン済みの画素に付与されているラベルの付与状態とに基づいて当該注目画素に所定のラベルを付与する付与工程と、
前記付与工程によりラベルが付与された各画素において隣接関係にあるラベルの組み合わせを示す対応テーブルを生成する生成工程と、
前記評価値が第1の閾値と当該第1の閾値よりも大きな第2の閾値との間になっている画素のそれぞれに対して、前記生成工程により生成された対応テーブルに基づいてエッジ画素とするか否かを判定する判定工程と、
を含み、
前記付与工程は、前記注目画素における前記評価値が前記第1の閾値と前記第2の閾値との間であった場合に、前記注目画素に隣接するスキャン済みの画素の何れかに前記評価値が前記第1の閾値よりも大きいことを示すラベルが付与されているか否かの違いによって異なるラベルを前記注目画素に付与する、
ことを特徴とするエッジ検出方法。
【請求項8】
エッジの強さを示す評価値が第1の閾値と当該第1の閾値よりも大きな第2の閾値との間になる第1画素のうち前記評価値が前記第2の閾値よりも大きい第2画素に直接的に隣接する第1画素及び他の前記第1画素を介して前記第2画素に間接的に隣接する第1画素をエッジ画素として判定する画像処理装置のコンピュータを、
注目画素が前記第1画素であった場合に、当該注目画素に隣接するスキャン済みの画素の何れかに前記第2画素を示すラベルが付与されていたときには当該ラベルと同じラベルを前記注目画素に付与し、当該注目画素に隣接するスキャン済みの画素の何れにも前記第2画素を示すラベルが付与されておらず且つ当該注目画素に隣接するスキャン済みの画素の何れかに前記第1画素を示すラベルが付与されていたときには当該ラベルと同じラベルを前記注目画素に付与し、当該注目画素に隣接するスキャン済みの画素の何れにも前記第1画素を示すラベルと前記第2画素を示すラベルとの何れもが付与されていないときには新たな通し記号を前記第1画素を示すラベルとして前記注目画素に付与する付与手段、
前記付与手段によりラベルが付与された各画素において隣接関係にあるラベルの組み合わせを示す対応テーブルを生成する生成手段、
前記生成手段により生成された対応テーブルに基づいて前記第1画素のそれぞれに対してエッジ画素とするか否かを判定する判定手段、
として機能させることを特徴とするプログラム。
【請求項9】
キャニー法によりエッジを検出する画像処理装置のコンピュータを、
注目画素におけるエッジの強さを示す評価値と前記注目画素に隣接するスキャン済みの画素に付与されているラベルの付与状態とに基づいて当該注目画素に所定のラベルを付与する付与手段、
前記付与手段によりラベルが付与された各画素において隣接関係にあるラベルの組み合わせを示す対応テーブルを生成する生成手段、
前記評価値が第1の閾値と当該第1の閾値よりも大きな第2の閾値との間になっている画素のそれぞれに対して、前記生成手段により生成された対応テーブルに基づいてエッジ画素とするか否かを判定する判定手段、
として機能させ、
前記付与手段は、前記注目画素における前記評価値が前記第1の閾値と前記第2の閾値との間であった場合に、前記注目画素に隣接するスキャン済みの画素の何れかに前記評価値が前記第1の閾値よりも大きいことを示すラベルが付与されているか否かの違いによって異なるラベルを前記注目画素に付与する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、エッジ検出方法及びプログラムに関する。
【背景技術】
【0002】
従来、画像データの画像の明るさが鋭敏に、より形式的に言えば不連続に変化している箇所をエッジとして特定するアルゴリズムであるエッジ検出が知られている。また、エッジ検出として、キャニー法(Canny Edge Detection)が知られている。キャニー法は、2つの閾値を用いてエッジの画素を検出するヒステリシス閾値処理を含む。
【0003】
例えば、診断画像データからヒステリシス閾値処理を含むエッジデータ抽出処理によりエッジデータを抽出し、抽出したエッジデータに類似する下顎モデルの輪郭モデルデータを検索する診断支援コンピュータが知られている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1には、ヒステリシス閾値処理の具体的な処理について記載されていない。一般的には、例えばOpenCV(Open source Computer Vision library)のように、ヒステリシス閾値処理に再帰法が採用されている。OpenCVは、オープンソースのコンピュータビジョン向けのライブラリであり、画像処理、画像解析、機械学習などの機能を持つ、所定の言語(C/C++、Java、Python、MATLAB(登録商標)など)用ライブラリである。
【0006】
しかし、再帰法は高位合成で回路化できない。高位合成とは、プログラムをハードウェアロジックに変換する技術である。組み込み開発ではスタック(メモリ資源)の都合上、再帰法は実装に適さない。
【0007】
そこで、論理回路におけるキャニー法のヒステリシス閾値処理ではヒステリシス閾値を超えた画素(ヒステリシス閾値処理でエッジにする画素)の検出にラスタスキャンを複数回繰り返す方法が用いられる。ラスタスキャンとは、2次元の画像について、まず主走査方向に1次元的に連続する各画素をスキャン(走査)して走査線を得て、ついで主走査方向に直角な副走査方向に同様の走査線で各画素をスキャンして、2次元の面で画像の各画素をスキャンする方法である。しかし、ラスタスキャンを複数回繰り返す方法では、ラスタスキャンの回数が増えることで処理にかかる時間が増大する。
【0008】
本発明の課題は、エッジ検出におけるヒステリシス閾値処理の処理時間を短縮することである。
【課題を解決するための手段】
【0009】
上記課題を解決するために、本発明に係る第1の態様の画像処理装置は、エッジの強さを示す評価値が第1の閾値と当該第1の閾値よりも大きな第2の閾値との間になる第1画素のうち前記評価値が前記第2の閾値よりも大きい第2画素に直接的に隣接する第1画素及び他の前記第1画素を介して前記第2画素に間接的に隣接する第1画素をエッジ画素として判定する画像処理装置であって、注目画素が前記第1画素であった場合に、当該注目画素に隣接するスキャン済みの画素の何れかに前記第2画素を示すラベルが付与されていたときには当該ラベルと同じラベルを前記注目画素に付与し、当該注目画素に隣接するスキャン済みの画素の何れにも前記第2画素を示すラベルが付与されておらず且つ当該注目画素に隣接するスキャン済みの画素の何れかに前記第1画素を示すラベルが付与されていたときには当該ラベルと同じラベルを前記注目画素に付与し、当該注目画素に隣接するスキャン済みの画素の何れにも前記第1画素を示すラベルと前記第2画素を示すラベルとの何れもが付与されていないときには新たな通し記号を前記第1画素を示すラベルとして前記注目画素に付与する付与手段と、前記付与手段によりラベルが付与された各画素において隣接関係にあるラベルの組み合わせを示す対応テーブルを生成する生成手段と、前記生成手段により生成された対応テーブルに基づいて前記第1画素のそれぞれに対してエッジ画素とするか否かを判定する判定手段と、を備えることを特徴とする。
また、本発明に係る第2の態様の画像処理装置は、キャニー法によりエッジを検出する画像処理装置であって、注目画素におけるエッジの強さを示す評価値と前記注目画素に隣接するスキャン済みの画素に付与されているラベルの付与状態とに基づいて当該注目画素に所定のラベルを付与する付与手段と、前記付与手段によりラベルが付与された各画素において隣接関係にあるラベルの組み合わせを示す対応テーブルを生成する生成手段と、前記評価値が第1の閾値と当該第1の閾値よりも大きな第2の閾値との間になっている画素のそれぞれに対して、前記生成手段により生成された対応テーブルに基づいてエッジ画素とするか否かを判定する判定手段と、を備え、前記付与手段は、前記注目画素における前記評価値が前記第1の閾値と前記第2の閾値との間であった場合に、前記注目画素に隣接するスキャン済みの画素の何れかに前記評価値が前記第1の閾値よりも大きいことを示すラベルが付与されているか否かの違いによって異なるラベルを前記注目画素に付与する、ことを特徴とする。
【発明の効果】
【0010】
本発明によれば、エッジ検出におけるヒステリシス閾値処理の処理時間を短縮できる。
【図面の簡単な説明】
【0011】
【
図1】本発明の実施の形態の撮影システムを示すブロック図である。
【
図2】実施の形態の撮影装置の機能構成を示すブロック図である。
【
図5】
図4の撮影処理のエッジ画像生成処理を示すフローチャートである。
【
図6】(a)は、画像データの画素に対する評価値を示す図である。(b)は、(a)の画像データの画素に対する画素値を示す図である。
【
図7】画像のラスタスキャンの一例を示す図である。
【
図8】
図5のエッジ画像生成処理のヒステリシス閾値処理を示すフローチャートである。
【
図9】
図8のヒステリシス閾値処理のラベリング処理を示すフローチャートである。
【
図10】(a)は、注目画素のラベリングの一例を示す図である。(b)は、注目画素のラベリングの一例を示す図である。(c)は、注目画素のラベリングの一例を示す図である。
【
図11】(a)は、注目画素のラベリングの一例を示す図である。(b)は、注目画素のラベリングの一例を示す図である。(c)は、注目画素のラベリングの一例を示す図である。
【
図13】
図8のヒステリシス閾値処理のLUT作成処理を示すフローチャートである。
【
図14】(a)は、
図12の接続情報配列に対応する初期化後のLUT配列の一例を示す図である。(b)は、ラベル=2の更新後のLUT配列を示す図である。(c)は、最終的なLUT配列を示す図である。
【
図15】(a)は、別例の接続情報配列を示す図である。(b)は、(a)の接続情報配列に対応する初期化後のLUT配列を示す図である。(c)は、ラベル=4の更新後のLUT配列を示す図である。(d)は、最終的なLUT配列を示す図である。
【
図16】(a)は、各画素にラベルが割り当てられた画像の一例を示す図である。(b)は、(a)の画像の各画素のLUT値を示す図である。
【
図17】
図8のヒステリシス閾値処理のエッジ画像出力処理を示すフローチャートである。
【
図18】(a)は、撮影画像を示す図である。(b)は、(a)の撮影画像のエッジ画像を示す図である。
【
図19】変形例の撮影装置の機能構成を示すブロック図である。
【発明を実施するための形態】
【0012】
以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。なお、以下に述べる実施の形態には、本発明を実施するために技術的に好ましい種々の限定が付されているが、本発明の範囲を以下の実施の形態及び図示例に限定するものではない。
【0013】
図1~
図18(b)を参照して、本発明に係る実施の形態を説明する。まず、
図1~
図3を参照して、本実施の形態の装置構成を説明する。
図1は、本実施の形態の撮影システム1を示すブロック図である。
図2は、撮影装置10の機能構成を示すブロック図である。
図3は、PC20の機能構成を示すブロック図である。
【0014】
図1に示すように、撮影システム1は、屋内又は屋外の所定範囲を撮影して、撮影した画像内の人、物体などの対象物を監視、管理するシステムである。例えば、撮影システム1は、夜間などの所定時間帯に所定施設の内部を撮影して、人としての侵入者を監視する防犯目的に用いられる。また、例えば、撮影システム1は、工場のラインを撮影して、物体としての製品を監視、管理する検査目的に用いられる。
【0015】
撮影システム1は、撮影装置10と、PC(Personal Computer)20と、を備える。撮影装置10とPC20とは、通信ネットワークNを介して通信接続されている。通信ネットワークNは、例えば有線LAN(Local Area Network)であるものとするが、これに限定されるものではない。通信ネットワークNは、無線LAN、WAN(Wide Area Network)、専用線、インターネットなどにより構成してもよく、これらと有線LANとの少なくとも2つを含むこととしてもよい。
【0016】
撮影装置10は、所定範囲を撮影可能な位置に設けられた監視カメラであり、PC20により遠隔操作が可能である。また、撮影装置10は、撮影した撮影画像データからエッジ画像データを生成する機能を有し、撮影画像データ及びエッジ画像データをPC20に送信する。
【0017】
PC20は、撮影装置10から送信された撮影画像データ及びエッジ画像データを受信し、撮影画像データを表示可能に、エッジ画像データの画像解析を行う情報処理装置である。より具体的には、PC20は、エッジ画像データを画像解析して、エッジ画像データの画像内の対象物の位置、幅、高さ、外形などを取得し、対象物の監視、管理を行う。また、PC20は、ユーザ操作に応じて、撮影装置10の遠隔操作を行う。また、PC20は、撮影装置10から通信ネットワークNを介した遠隔位置に設置されているものとする。
【0018】
図2に示すように、撮影装置10は、付与手段、生成手段、判定手段、前処理手段としてのCPU(Central Processing Unit)11と、撮像部12と、RAM(Random Access Memory)13と、通信部14と、記憶部15と、を備える。撮影装置10の各部は、バス16を介して接続されている。また、CPU11、RAM13、記憶部15は、チップとしての制御部110として構成されている。
【0019】
CPU11は、撮影装置10の各部を制御する。CPU11は、記憶部15に記憶された各種プログラムのうち指定されたプログラムを読み出してRAM13に展開し、展開されたプログラムとの協働で、各種処理を実行する。
【0020】
撮像部12は、レンズなどの光学系と、CCD(Charge Coupled Device)、CMOS(Complementary Metal Oxide Semiconductor)などの撮像素子とを有するデジタルカメラ部である。撮像部12は、光学系を介して所定範囲を撮影し、撮像素子により撮影画像データを生成してCPU11に出力する。また、撮像部12は、焦点距離、撮影範囲などを調整設定可能な調整機構を有するものとする。
【0021】
RAM13は、情報を読み出し及び書き込み可能な揮発性の半導体メモリである。RAM13は、CPU11に作業用のワークエリアを提供し、データ及びプログラムを一時的に記憶する。
【0022】
通信部14は、通信ネットワークNに接続するネットワークカードなどにより構成され、通信ネットワークN上の外部機器と情報の送受信を行う。CPU11は、通信部14、通信ネットワークNを介して、外部機器としてのPC20と情報の送受信を行う。
【0023】
記憶部15は、ROM(Read Only Memory)などの情報の読み出しが可能な記憶部により構成され、各種データ及び各種プログラムを記憶している。特に、記憶部15は、後述する撮影処理を実行するための撮影プログラムP1を記憶しているものとする。なお、記憶部15は、情報の読み出し及び書き込みが可能なフラッシュメモリなどにより構成されるものとしてもよい。
【0024】
図3に示すように、PC20は、CPU21と、操作部22と、RAM23と、表示部24と、記憶部25と、通信部26と、を備える。PC20の各部は、バス27を介して接続されている。
【0025】
CPU21は、PC20の各部を制御する。CPU21は、記憶部25に記憶された各種プログラムのうち指定されたプログラムを読み出してRAM23に展開し、展開されたプログラムとの協働で、各種処理を実行する。
【0026】
操作部22は、キーボードと、マウスなどのポインティングデバイスとを有し、ユーザからのキー入力及び位置情報入力を受け付け、その操作情報をCPU21に出力する。
【0027】
RAM23は、RAM13と同様の構成を有し、CPU21に作業用のワークエリアを提供し、データ及びプログラムを一時的に記憶する。
【0028】
表示部24は、LCD(Liquid Crystal Display)、EL(ElectroLuminescent)ディスプレイなどの表示パネルを有し、CPU21からの表示情報を表示パネルに表示する。
【0029】
記憶部25は、HDD(Hard Disk Drive)、SSD(Solid State Drive)などで構成され、情報を読み出し及び書き込み可能な記憶部であり、各種情報や各種プログラムが記憶されている。
【0030】
通信部26は、通信ネットワークNに接続するネットワークカードなどにより構成され、通信ネットワークN上の外部機器と情報の送受信を行う。CPU21は、通信部26、通信ネットワークNを介して、外部機器としての撮影装置10と情報の送受信を行う。
【0031】
つぎに、
図4~
図18(b)を参照して、撮影システム1の動作を説明する。
図4は、撮影処理を示すフローチャートである。
図5は、
図4の撮影処理のエッジ画像生成処理を示すフローチャートである。
図6(a)は、画像データの画素に対する評価値を示す図である。
図6(b)は、
図6(a)の画像データの画素に対する画素値を示す図である。
図7は、画像のラスタスキャンの一例を示す図である。
図8は、
図5のエッジ画像生成処理のヒステリシス閾値処理を示すフローチャートである。
図9は、
図8のヒステリシス閾値処理のラベリング処理を示すフローチャートである。
図10(a)は、注目画素のラベリングの一例を示す図である。
図10(b)は、注目画素のラベリングの一例を示す図である。
図10(c)は、注目画素のラベリングの一例を示す図である。
図11(a)は、注目画素のラベリングの一例を示す図である。
図11(b)は、注目画素のラベリングの一例を示す図である。
図11(c)は、注目画素のラベリングの一例を示す図である。
【0032】
図12は、接続情報配列の一例を示す図である。
図13は、
図8のヒステリシス閾値処理のLUT作成処理を示すフローチャートである。
図14(a)は、
図12の接続情報配列に対応する初期化後のLUT配列の一例を示す図である。
図14(b)は、ラベル=2の更新後のLUT配列を示す図である。
図14(c)は、最終的なLUT配列を示す図である。
図15(a)は、別例の接続情報配列を示す図である。
図15(b)は、
図15(a)の接続情報配列に対応する初期化後のLUT配列を示す図である。
図15(c)は、ラベル=4の更新後のLUT配列を示す図である。
図15(d)は、最終的なLUT配列を示す図である。
図16(a)は、各画素にラベルが割り当てられた画像の一例を示す図である。
図16(b)は、
図16(a)の画像の各画素のLUT値を示す図である。
図17は、
図8のヒステリシス閾値処理のエッジ画像出力処理を示すフローチャートである。
図18(a)は、撮影画像I1を示す図である。
図18(b)は、
図18(a)の撮影画像I1のエッジ画像I2を示す図である。
【0033】
まず、撮影装置10で実行される撮影処理を説明する。撮影システム1において、あらかじめ、撮影装置10と、PC20とが、通信ネットワークNを介して通信接続されているものとする。そして、PC20のCPU21は、操作部22を介してユーザからの撮影装置10の撮像部12などの設定情報の操作入力を受け付け、通信部26を介して、設定情報を撮影装置10に送信する。撮影装置10のCPU11は、通信部14を介して、設定情報をPC20から受信し、設定情報に基づいて撮像部12などの設定を行ったものとする。
【0034】
そして、PC20のCPU21は、操作部22を介してユーザからの撮影処理の実行指示の入力を受け付け、通信部26を介して、撮影処理の実行指示を撮影装置10に送信する。撮影装置10のCPU11は、通信部14を介して、撮影処理の実行指示をPC20から受信したことをトリガとして、記憶部15に記憶された撮影プログラムP1に従い、撮影処理を実行する。
【0035】
図4に示すように、まず、CPU11は、撮像部12により、設定された撮影範囲の撮影を行い1フレームの撮影画像データを生成する(ステップS11)。そして、CPU11は、キャニー法により、ステップS11で生成された1フレームの撮影画像データから1フレームのエッジ画像データを生成するエッジ画像生成処理を行う(ステップS12)。
【0036】
ここでは、ステップS11において、生成される撮影画像データは、撮影画像の各画素の画素値が複数階調(例えば、0(黒)~255(白))のグレースケール画像の画像データであるものとして説明する。しかし、これに限定されるものではなく、例えば、ステップS11で、撮像部12により撮影されカラーの撮影画像データが生成されるものとする。そして、ステップS12で、カラーの撮影画像データからグレースケール画像の撮影画像データに変換され、変換後のグレースケール画像の撮影画像データからエッジ画像データが生成される構成としてもよい。
【0037】
そして、CPU11は、通信部14を介して、ステップS11で生成された1フレームの撮影画像データと、ステップS12で生成された1フレームのエッジ画像データとをPC20に送信する(ステップS13)。
【0038】
ステップS13に対応して、PC20のCPU21は、通信部26を介して、撮影画像データ及びエッジ画像データを撮影装置10から受信して記憶部15に記憶し、受信した撮影画像データを表示部24にライブ表示する。また、CPU21は、操作部22を介するユーザの操作入力に応じて、リアルタイム処理又はバッチ処理により、記憶部15に記憶されたエッジ画像データの画像解析処理を行う。
【0039】
なお、ステップS12では、CPU11が、撮影画像データの複数フレームごとに1つのエッジ画像データを生成する構成としてもよい。この場合、ステップS13で撮影画像データがリアルタイムにPC20に送信され、エッジ画像データが撮影画像データの複数フレームごとにPC20に送信される。また、ステップS13では、CPU11が、エッジ画像データのみをPC20に送信し、PC20にエッジ画像データの画像解析のみをさせる構成としてもよい。
【0040】
そして、CPU11は、例えばPC20からユーザにより操作入力された撮影処理の終了指示を受信したか否かにより、撮影処理を終了するか否かを判別する(ステップS14)。ステップS14に対応して、PC20では、操作部22を介するユーザからの撮影処理の終了指示が入力されると、通信部26を介して、撮影処理の終了指示を撮影装置10に送信する。撮影処理を終了しない場合(ステップS14;NO)、ステップS11に移行される。撮影処理を終了する場合(ステップS14;YES)、撮影処理が終了する。
【0041】
ついで、
図5を参照して、
図4のステップS12のエッジ画像生成処理を詳細に説明する。まず、CPU11は、ステップS11で生成された撮影画像データに対してガウシアンフィルタなどを用いてノイズ除去の処理を行う(ステップS21)。ガウシアンフィルタは、注目画素に近いほど、平均値を計算するときの重みを大きくし、遠くなるほど重みを小さくなるようにガウス分布の関数を用いてレートを計算するフィルタである。
【0042】
そして、CPU11は、ステップS21でノイズ除去された撮影画像データに対してソーベルフィルタを用いて大まかな輪郭抽出(微分値算出)の処理を行う(ステップS22)。ソーベルフィルタは、ガウシアン平滑化処理を行うフィルタであり、画像の平均化を行いながらエッジ強調を行うフィルタ処理を行い、ノイズを低減しながらエッジを強調(輪郭抽出)できる。
【0043】
ソーベルフィルタは、次式(1)に示す画像の横方向(主走査方向xとする)のカーネルKxと、次式(2)に示すy方向(副走査方向yとする)のカーネルKyと、を有する。
【数1】
【0044】
ステップS22では、ノイズ除去された撮影画像データの画像のラスタスキャンされる注目画素及びその周囲の8つの周辺画素の画素値(の行列)G0に対して、式(1)、式(2)のソーベルフィルタのカーネルKx,Kyを用いて、次式(3)、(4)により、注目画素の主走査方向xの微分値であるエッジの強さGxと、同じく副走査方向yの微分値であるエッジの強さGyと、が算出される。
Gx=G0*Kx …(3)
Gy=G0*Ky …(4)
ただし、*:畳み込み積分である。
【0045】
そして、CPU11は、ステップS22で輪郭抽出された撮影画像データに対して、エッジの強さが極大となる部分を除外する(エッジの線を細くする)非極大抑制の処理を行う(ステップS23)。非極大抑制では、具体的には、まず、次式(5)により、ステップS22で輪郭抽出された撮影画像データの画像のラスタスキャンされる注目画素のエッジの強さGx,Gyから、エッジの強さの大きさ(単に、エッジの強さとする)Gが算出される。
【数2】
【0046】
ここで、次式(5)のエッジの強さGは、L2ノルムにより算出されている。なお、L1ノルムによるエッジの強さGは、G=|Gx|+|Gy|により算出される。このように、L2ノルム、L1ノルムは、ベクトル空間で長さ(大きさ)を与える関数である。L2ノルムによるエッジの強さGは、L1ノルムによるエッジの強さGよりも正確に算出される。L1ノルムによるエッジの強さGは、L2ノルムによるエッジの強さGよりも計算量及び計算時間が少ない。
【0047】
そして、次式(6)により、エッジの強さGx,Gyから、エッジの角度θ(実際にはエッジの線に直交する向き(エッジの法線方向))が算出される。
【数3】
【0048】
そして、エッジの角度θが、0°(-22.5°~22.5°)、45°(22.5°~47.5°)、90°(47.5°~112.5°)、135°(112.5°~157.5°)の4つに分類される。そして、エッジの法線方向の3画素のエッジの強さGを用いて、中央の画素のエッジの強さGが残す2つの画素のエッジの強さGよりも大きければ、その部分が極大点となり、そうでなければ、この中央の画素のエッジの強さGが最大とならない部分が除外される。
【0049】
また、ステップS23では、非極大抑制された撮影画像データの画像の各画素のエッジの大きさGが算出され、RAM13に記憶される。
【0050】
そして、CPU11は、ステップS23で非極大抑制された撮影画像データに対して、ヒステリシス閾値処理を行い(ステップS24)、エッジ画像生成処理を終了する。
【0051】
ここで、
図6(a)、
図6(b)を参照して、ステップS24のヒステリシス閾値処理の概要を説明する。
図6(a)に、ステップS23で非極大抑制された撮影画像データについて、例えば主走査方向xに並んだ複数画素の画素(画素位置)に対する評価値G(式(5)のエッジの強さG)の一例を示す。ヒステリシス閾値処理では、評価値Gの閾値として、小さな閾値TH1と、閾値TH1よりも大きな閾値TH2と、が用いられる。閾値TH1は、「確実にエッジでない画素」であるか否かを判別するための評価値Gの閾値である。閾値TH2は、「確実にエッジである画素」であるか否かを判別するための評価値Gの閾値である。このため、評価値G≦閾値TH1の画素が、「確実にエッジでない画素」となる。評価値G≧閾値TH2の画素は、「確実にエッジである画素」となる。閾値TH1<評価値G<閾値TH2の画素は、エッジにするか否かが未確定な「エッジかもしれない画素」となる。
【0052】
図6(a)において、画素が連続的に隣接した領域R1,R2,R3,R4,R5,R6,R7,R8,R9,R10を考える。領域R1,R5,R7は、それぞれ、評価値G≦閾値TH1である画素が連続的に隣接した領域である。また、領域R2~R4,R6,R8~R10は、それぞれ、評価値G>閾値TH1である画素が連続的に隣接した領域である。そのうち、領域R2,R4,R6,R8,R10は、それぞれ、閾値TH1<評価値G<閾値TH2である画素が連続的に隣接した領域である。また、領域R3,R9は、それぞれ、評価値G≧閾値TH2である画素が連続的に隣接した領域である。
【0053】
領域R1,R5,R7は、それぞれ、「確実にエッジでない画素」からなる。領域R3,R9は、それぞれ、「確実にエッジである画素」からなる。領域R2,R4,R6,R8,R10は、それぞれ、「エッジかもしれない画素」からなる。そのうち、領域R2,R4,R8,R10は、それぞれ、領域R3,R9の「確実にエッジである画素」に直接的に隣接(接続)する「エッジかもしれない画素」と、他の「エッジかもしれない画素」を介して領域R3,R9の「確実にエッジである画素」に間接的に隣接(接続)する「エッジかもしれない画素」と、からなる。また、領域R6は、領域R3,R9の「確実にエッジである画素」に直接的にも間接的にも隣接(接続)しない「エッジかもしれない画素」からなる。ヒステリシス閾値を超えたエッジ画素(ヒステリシス閾値処理でエッジにする画素)は、領域R3,R9の「確実にエッジである画素」と、当該「確実にエッジである画素」に直接的に又は間接的に隣接(接続)する領域R2,R4,R8,R10の「エッジかもしれない画素」と、になる。ヒステリシス閾値を超えない画素(ヒステリシス閾値処理でエッジにしない画素)は、領域R1,R5,R7の「確実にエッジでない画素」と、領域R3,R9の「確実にエッジである画素」に直接的に又は間接的に隣接(接続)しない領域R6の「エッジかもしれない画素」と、になる。
【0054】
このため、
図6(b)に示すように、ヒステリシス閾値を超えたエッジ画素としての領域R2~R4,R8~R10の画素を画素値255(白)のエッジ画素とし、ヒステリシス閾値を超えない画素としての領域R1,R5~R7の画素を画素値0(黒)の画素として、非極大抑制された撮影画像データからエッジ画像データ(の各画素)が生成される。上記の説明では、主走査方向xの隣接画素を考えているが、副走査方向yの隣接画素と、主走査方向x及び副走査方向yの対角方向の隣接画素と、についても同様である。このため、エッジにする画素を判定するには、非極大抑制された撮影画像データの画像の各画素について、「確実にエッジである画素」に対して、主走査方向xと、副走査方向yと、主走査方向x及び副走査方向yの対角方向とのいずれかに隣接する「エッジかもしれない画素」を順にチェックしていく必要がある。
【0055】
その手法として、上記[背景技術]に記載した再帰法では、画像の注目画素について周辺画素を調べる場合に、当該周辺画素を調べた後、当該周辺画素を注目画素としてさらにその周辺画素を調べていくことを繰り返すため、大きなメモリ容量を使ってしまう。
【0056】
図7に示すように、一般的なラスタスキャンでは、画像の各画素について、副走査方向yの位置の値が一番小さく主走査方向xの位置の値が一番小さい画素から主走査方向xに各画素を注目画素として走査していく(実線の矢印)。そして、主走査方向xの位置の値が一番大きい画素までスキャンすると、副走査方向yの位置の値が1つ大きく主走査方向xの位置の値が一番小さい画素に注目画素を移動する(破線の矢印)。そして、当該移動後の画素から主走査方向xに各画素を走査していき、副走査方向yの位置の値が1つ大きく主走査方向xの位置の値が一番小さい画素に注目画素を移動することを繰り返す。
【0057】
上記[背景技術]に記載した従来のラスタスキャンを用いる方法では、
図7の一方向のラスタスキャンに加え、異なる方向のラスタスキャンが必要となり、複数回のラスタスキャンが必要となる。
図7と異なる方向のラスタスキャンとは、例えば、副走査方向yの位置の値が一番大きく主走査方向xの位置の値が一番小さい画素から主走査方向xに各画素を注目画素として走査していき、副走査方向yの位置の値が1つ小さく主走査方向xの位置の値が一番小さい画素に注目画素を移動することを繰り返すラスタスキャンである。
【0058】
ついで、
図8を参照して、
図5のステップS24のヒステリシス閾値処理を詳細に説明する。まず、CPU11は、ステップS23で非極大抑制された撮影画像データに対して、ラベリング処理を行う(ステップS31)。
【0059】
ここで、
図9を参照して、
図8のステップS31のラベリング処理を詳細に説明する。まず、CPU11は、ステップS23で非極大抑制された撮影画像データの画像の全ての画素のうち、例えば
図7のラスタスキャンにより、次にスキャンする未選択の画素を注目画素として選択する(ステップS41)。
【0060】
そして、CPU11は、ステップS23でRAM13に記憶されている、ステップS41で選択中の注目画素(以下、ラベリング処理において単に注目画素という)の評価値(エッジの強さ)Gを参照する(ステップS42)。
【0061】
そして、CPU11は、ステップS42で参照した注目画素の評価値Gと、閾値TH1,TH2とを用いて、注目画素が、確実にエッジである画素か又はエッジかもしれない画素であるか否かを判別する(ステップS43)。
図6(a)で説明したように、確実にエッジである画素は、注目画素の評価値G≧閾値TH2の画素である。エッジかもしれない画素は、閾値TH1<注目画素の評価値G<閾値TH2の画素である。
【0062】
注目画素が、確実にエッジである画素でもなくかつエッジかもしれない画素でもない場合(ステップS43;NO)、注目画素が確実にエッジでない画素であり、CPU11は、この注目画素には数値を1以上に設定したラベルの割り当て(付与)をしない(ステップS44)。ステップS44では、具体的には、ラベル=0が注目画素に割り当てられて、割り当てられたラベルの数値が注目画素に対応付けられてRAM13に記憶される。
【0063】
ラベルとは、画像データの画像のうち、「エッジかもしれない画素」及び「確実にエッジである画素」の少なくとも一方からなる画素群であって、(1回の)ラスタスキャンにおける注目画素とスキャン済みの周辺画素とで互いに接続(隣接)しない画素群を分類するための分類の識別情報である。画素群は、互いに連続的に隣接する複数の画素を有する群である。本実施の形態において、ラベルの識別情報は、昇順の自然数の数値(通し番号)とするが、これに限定されるものではなく、アルファベットなどの通し記号としてもよい。
【0064】
スキャン済みの周辺画素とは、例えば
図7のラスタスキャンにおいて注目画素に隣接し、かつ注目画素のスキャン時にスキャン済みの方向の周辺画素であり、具体的には注目画素の左上、上、右上、左の4つの方向の隣接画素である。注目画素の左上の隣接画素は、-x方向及び-y方向の対角方向に隣接する画素である。注目画素の上の隣接画素は、-y方向に隣接する画素である。注目画素の右上の隣接画素は、+x方向及び-y方向の対角方向に隣接する画素である。注目画素の左の隣接画素は、-x方向に隣接する画素である。
【0065】
1回のラスタスキャンの実行中には、選択される注目画素と当該注目画素のスキャン済の周辺画素との直接的な隣接(接続)の有無を判別できるが、注目画素と未スキャンの画素との接続を判別できない。例えば、「エッジかもしれない画素」である注目画素と、未スキャンの「確実にエッジである画素」とが接続するか否かを判別できない。このため、ラベリング処理において、1回のラスタスキャンの実行中に、「エッジかもしれない画素」である注目画素が、スキャン済みの周辺画素で「エッジかもしれない画素」及び「確実にエッジである画素」の少なくとも一方からなる画素群の画素に隣接(接続)する場合に、当該接続している画素群の画素のラベルを注目画素に割り当てておき、同じく注目画素が、スキャン済みの周辺画素で他の画素群の画素に隣接(接続)しない場合に、未割当の新たな通し番号のラベルを注目画素に割り当てておく。そして、当該ラスタスキャン後に、各ラベルの画素群の画素同士が接続しているか否かを判定すればよい。
【0066】
また、ラベル=1は、「確実にエッジにする画素」であることを示す。ラベル=1は、0を除く最小の通し番号である。このため、注目画素が「確実にエッジである画素」である場合には、ラベル=1が注目画素に割り当てられる。また、注目画素が「エッジかもしれない画素」であり、かつ「確実にエッジである画素」である周辺画素に隣接(直接的に接続)する場合にも、ラベル=1が注目画素に割り当てられる。さらに、注目画素が「エッジかもしれない画素」であり、かつ「確実にエッジである画素」にラベル「1」が割り当てられた他の「エッジかもしれない画素」を介して間接的に隣接(接続)される場合にも、ラベル=1が注目画素に割り当てられる。
【0067】
このようにして、「エッジかもしれない画素」には、数値を1以上に設定したラベルが割り当てられる。また、「確実にエッジでない画素」には、数値を1以上に設定したラベルが割り当てられない(実際には、スキャンの足跡を残すため、ラベル=0が割り当てられる)ものとする。
【0068】
そして、CPU11は、非極大抑制された撮影画像データの画像の全ての画素のうち、ステップS41で未選択の画素(注目画素)があるか否かを判別する(ステップS45)。
【0069】
未選択の画素(注目画素)がある場合(ステップS45;YES)、ステップS41に移行される。未選択の画素(注目画素)がない場合(ステップS45;NO)、ラベリング処理が終了する。
【0070】
注目画素が、確実にエッジである画素か又はエッジかもしれない画素である場合(ステップS43;YES)、CPU11は、注目画素が、エッジかもしれない画素であるか否かを判別する(ステップS46)。注目画素が、エッジかもしれない画素でない場合(ステップS46;NO)、注目画素が、確実にエッジである画素であり、CPU11は、ラベル=1を注目画素に割り当て、割り当てられたラベルの数値を注目画素に対応付けてRAM13に記憶する(ステップS47)。
【0071】
注目画素が、エッジかもしれない画素である場合(ステップS46;YES)、CPU11は、RAM13に記憶されている注目画素のスキャン済みの4つの周辺画素の付与済のラベルを参照し、注目画素のスキャン済みの4つの周辺画素の少なくとも1つに数値が1以上に設定されたラベルが割り当てられているか否かを判別する(ステップS48)。
【0072】
スキャン済みの周辺画素の少なくとも1つにラベルが割り当てられている場合(ステップS48;YES)、CPU11は、注目画素のスキャン済みの4つの周辺画素のラベルのうち、数値が0でない最小のラベルを注目画素に割り当て、割り当てられたラベルの数値を注目画素に対応付けてRAM13に記憶する(ステップS49)。
【0073】
スキャン済みの周辺画素の何れにもラベルが割り当てられていない場合(ステップS48;NO)、CPU11は、初期値を2として、それまでに割り当てた最も大きいラベルの数値+1(通し番号)を新ラベルとして注目画素に割り当て、割り当てられたラベルの数値を注目画素に対応付けてRAM13に記憶する(ステップS50)。つまり、ステップS50が初めて実行される場合には、新ラベルとしてラベル=2が注目画素に割り当てられ、ステップS50が2回目以降に実行される場合には、ラベルとして未割当の通し番号が注目画素に割り当てられる。
【0074】
ステップS47又はS49の後、ステップS51に移行される。ステップS51から後述するステップS55までを、接続情報配列を生成する接続情報配列生成処理L1とする。ラベリング処理は、ステップS41~S45のラスタスキャンを含むループ処理内に、ループ処理である接続情報配列生成処理L1を有する二重ループ構造となっている。接続情報配列は、例えば
図12に示すように、「接続元ラベル」、「接続先ラベル」の項目を有するテーブルである。「接続元ラベル」は、注目画素を接続元の画素とし、接続元である注目画素のラベルの数値の項目である。「接続先ラベル」は、「接続元ラベル」の注目画素に直接的に接続(隣接)する画素を接続先の画素とし、接続先の画素のラベルの数値の項目である。また、接続情報配列の各レコードを「接続情報」と表現するものとする。
【0075】
接続情報配列生成処理L1において、まず、CPU11は、ステップS41で選択中の注目画素のスキャン済みの4つの全周辺画素のうちから、未選択の1つの周辺画素を選択する(選択周辺画素とする)(ステップS51)。そして、CPU11は、選択周辺画素に対応付けてRAM13に記憶されているラベルを参照する(ステップS52)。
【0076】
そして、CPU11は、ステップS47又はS49で割り当てられた注目画素のラベルと、ステップS52で参照された選択周辺画素のラベルとが異なるか否かを判別する(ステップS53)。
なお、この判別は選択周辺画素のラベルの値が1以上の場合に行い、ラベルの値が0の場合には行わない。
【0077】
注目画素のラベルと選択周辺画素のラベルとが異なる場合(ステップS53;YES)、CPU11は、接続情報配列に当該注目画素のラベルと当該選択周辺画素のラベルとの組み合わせを隣接関係にあるラベルの組み合わせとして格納し、格納後の接続情報配列をRAM13に記憶する(ステップS54)。ステップS54では、具体的には、注目画素のラベルの数値と、当該注目画素に隣接(接続)する選択周辺画素の異なるラベルの数値との組み合わせが、接続情報配列の「接続先ラベル」と「接続元ラベル」との1レコードとして対応付けられて格納される。また、ステップS54では、注目画素のラベルと選択周辺画素のラベルとの組み合わせが、既に接続情報配列に格納されている場合には、重複を避けるため、当該ラベルの組み合わせが接続情報配列に格納されない。
【0078】
そして、CPU11は、注目画素のスキャン済みの4つの全周辺画素のうち、ステップS51で未選択の周辺画素があるか否かを判別する(ステップS55)。未選択の周辺画素がある場合(ステップS55;YES)、ステップS51に移行される。未選択の周辺画素がない場合(ステップS55;NO)、ステップS45に移行される。このように、ループ処理L1は、注目画素のラベルに基づいて、注目画素と選択周辺画素との接続情報を接続情報配列に格納するループ処理である。また、ステップS50の実行後、ステップS45に移行される。
【0079】
ここで、
図10(a)~
図12を参照して、
図9のラベリング処理の具体例を説明する。まず、
図10(a)~
図11(c)を参照して、ステップS41~S50のラベルの割当ての具体例を説明する。
図10(a)に示すように、撮影画像データは、ラスタスキャンにより選択中の注目画素p1と、注目画素p1を中心として、左上の周辺画素p2、上の周辺画素p3、右上の周辺画素p4、左の周辺画素p5、右の周辺画素p6、左下の周辺画素p7、下の周辺画素p8、右下の周辺画素p9、を含むものとする。周辺画素p2~p5は、注目画素p1のスキャン時に、スキャン済みの周辺画素であり、ラベルの割当に関係する。周辺画素p6~p9は、注目画素p1のスキャン時に、未スキャンの周辺画素であり、ラベルの割当に関係しない。
【0080】
注目画素p1にラベリングする例として、
図10(a)のケース(第1のケースとする)と、
図10(b)のケース(第2のケースとする)と、
図10(c)のケース(第3のケースとする)と、
図11(a)のケース(第4のケースとする)と、
図11(b)のケース(第5のケースとする)と、
図11(c)のケース(第6のケースとする)と、を説明する。ここで、閾値TH1=50、閾値TH2=150とする。
【0081】
図10(a)に示すように、第1のケースでは、注目画素p1は、評価値G=200であり、閾値TH2以上であるため、確実にエッジである画素であり、スキャン済みの周辺画素p2~p5の評価値Gに関わらず、ステップS47でラベル=1が割り当てられる。
【0082】
図10(b)に示すように、第2のケースでは、注目画素p1は、評価値G=100であり、エッジかもしれない画素である。また、スキャン済みの周辺画素p2~p5の評価値Gがいずれも閾値TH1以下であり、注目画素p1のラベリングより前に、ステップS44でラベル=0が割り当てられている。ここで、注目画素p1のラベリングより前に、スキャン済みのエッジかもしれない画素に新ラベルが割り当てられていないとすると、注目画素p1は、ステップS50で、ラベル=2(新ラベルの初期値)が割り当てられる。
【0083】
図10(c)に示すように、第3のケースでは、注目画素p1は、評価値G=100であり、エッジかもしれない画素である。また、スキャン済みの周辺画素p2~p5の評価値Gがいずれも閾値TH1以下であり、注目画素p1のラベリングより前に、ステップS44でラベル=0が割り当てられている。ここで、注目画素p1のラベリングより前に、スキャン済みのエッジかもしれない画素に割り当てられているラベルの最大値が2であるとすると、注目画素p1は、ステップS50で、ラベル=3(割り当て済みの最大のラベル「2」+1)が割り当てられる。
【0084】
図11(a)に示すように、第4のケースでは、注目画素p1は、評価値G=130であり、エッジかもしれない画素である。また、スキャン済みの周辺画素p2の評価値G=200が閾値TH2以上であり、注目画素p1のラベリングより前に、ステップS47でラベル=1が割り当てられている。加えて、スキャン済みの周辺画素p3~p5の評価値Gがいずれも閾値TH1以下であり、注目画素p1のラベリングより前に、ステップS44でラベル=0が割り当てられている。このため、注目画素p1は、ステップS49で、スキャン済みの周辺画素p2~p5のうち0でない最小のラベル=1が割り当てられる。
【0085】
図11(b)に示すように、第5のケースでは、注目画素p1は、評価値G=130であり、エッジかもしれない画素である。また、スキャン済みの周辺画素p2の評価値G=200が閾値TH2以上であり、注目画素p1のラベリングより前に、ステップS47でラベル=1が割り当てられている。加えて、スキャン済みの周辺画素p4の評価値G=130であり、閾値TH1より大きく閾値TH2より小さいため、注目画素p1のラベリングより前に、ステップS49でラベル=2が割り当てられている。さらに、スキャン済みの周辺画素p3,p5の評価値Gがいずれも閾値TH1以下であり、注目画素p1のラベリングより前に、ステップS44でラベル=0が割り当てられている。このため、注目画素p1は、ステップS49で、スキャン済みの周辺画素p2~p5のうち0でない最小のラベル=1が割り当てられる。
【0086】
図11(c)に示すように、第6のケースでは、注目画素p1は、評価値G=130であり、閾値TH1より大きく閾値TH2より小さいため、エッジかもしれない画素である。また、スキャン済みの周辺画素p2,p4の評価値Gが、それぞれ、100,120であり、注目画素p1のラベリングより前に、ステップS49又はS50により、それぞれ、4,2が割り当てられている。加えて、スキャン済みの周辺画素p3,p5の評価値Gはいずれも閾値TH1以下であり、注目画素p1のラベリングより前に、ステップS44でラベル=0が割り当てられている。このため、注目画素p1のラベルは、ステップS49で、周辺画素p2~p5のうち0でない最小の2が割り当てられる。
【0087】
ついで、接続情報配列生成処理L1の具体例を説明する。一例として、ラベリング処理において、ラスタスキャン中に、
図11(b)の注目画素p1のラベル割当が行われた後、別の画素としての
図11(c)の注目画素p1のラベル割当が行われる例を説明するものとする。まず、ラベリング処理のラスタスキャン開始後のステップS41~S50において、ステップS49で
図11(b)の注目画素p1にラベル=1が割り当てられたものとする。このステップS49の実行後に、接続情報配列生成処理L1が実行される。この場合、
図11(b)に示すように、注目画素p1には、注目画素p1のラベル=1とは異なるラベル=2のスキャン済みの周辺画素p4が隣接している。このため、ステップS51でスキャン済み周辺画素p4が選択周辺画素として選択された場合に、ステップS54により、
図12に示す接続情報配列の1番目(1行目)のレコードの「接続元ラベル」の値に、注目画素p1のラベルの「1」が格納され、同レコードの「接続先ラベル」の値に、注目画素p1のラベルが「1」で同じスキャン済みの周辺画素p2ではなく、ラベルの数値が異なりかつ0でない選択周辺画素p4のラベルの「2」が格納される。つまり、接続元ラベル=1と、接続先ラベル=2と、の組み合わせが、隣接関係にあるラベルの組み合わせとして接続情報配列の1レコード目に格納される。
【0088】
その後、ラベリング処理のラスタスキャンが進み、ラスタスキャン中のステップS41~S50において、ステップS49で別の注目画素としての
図11(c)の注目画素p1にラベル=2が割り当てられたものとする。このステップS49の実行後に、接続情報配列生成処理L1が実行される。この場合、
図11(c)に示すように、注目画素p1には、注目画素p1のラベル=2とは異なるラベル=4のスキャン済みの周辺画素p2が隣接している。このため、ステップS51でスキャン済み周辺画素p2が選択周辺画素として選択された場合に、ステップS54により、
図12に示す接続情報配列の2番目(2行目)のレコードの「接続元ラベル」の値に、注目画素p1のラベルの「2」が格納され、同じレコードの「接続先ラベル」の値に、注目画素p1のラベルが「2」で同じ周辺画素p4ではなく、ラベルが異なりかつ0でない選択周辺画素p2のラベルの「4」が格納される。つまり、接続元ラベル=2と、接続先ラベル=4と、の組み合わせが、隣接関係にあるラベルの組み合わせとして接続情報配列の2レコード目に格納される。
【0089】
このようにして、各注目画素について、接続情報配列に順次「接続元ラベル」及び「接続先ラベル」の値が格納され、1フレームの撮影画像データについて、1つの接続情報配列が生成される。
【0090】
図8に戻り、CPU11は、ステップS31で生成された接続情報配列を用いて、エッジかもしれない画素のうち、エッジにする画素のラベルを示すLUT(Look Up Table)配列を作成するLUT作成処理を行う(ステップS32)。
【0091】
図13を参照して、ステップS32のLUT作成処理を詳細に説明する。ここで、LUT作成処理の概要を説明する。LUT作成処理は、
図9のラベリング処理で生成された接続情報配列の「接続元ラベル」と「接続先ラベル」との各レコードにおけるラベルの数値の組み合わせから、各ラベルが、エッジにする画素に対応するラベルか否かを示すLUT配列が作成される。
図14(a)に示すように、LUT配列は、「ラベル」と、「LUT値」と、の項目を有するテーブルである。「ラベル」は、ラベリング処理により、非極大抑制された撮影画像データの画像の各画素に割り当てられたラベルの数値である。「LUT値」は、「ラベル」がエッジにする画素に対応するラベルか(=1)否か(=0)を示す数値である。エッジにする画素に対応するラベルとは、「確実にエッジである画素」に対応するラベル=1と、「確実にエッジである画素」に直接的に又は間接的に隣接(接続)する「エッジかもしれない画素」のラベルと、である。なお、
図14(a)などに示すLUT配列では、「ラベル」=0に対応する「LUT値」を記載していないが、「ラベル」=0に対応する「LUT値」は、0に設定されるものとする。
【0092】
あるラベルと他のラベルとの隣接関係の組み合わせは、接続情報配列の各レコードに格納されている。このため、接続情報配列について、必ずエッジにする画素となるラベル「1」を基準として、各レコードを格納順に選択していき、ラベル「1」に直接的に隣接するラベルと、他のラベルを介して間接的に隣接するラベルと、をチェックしていけばよい。ただし、ラベル「1」に隣接する(エッジにする画素の)ラベルが見つかった場合に、当該見つかったラベルにさらに隣接するラベルをチェックすることが必要であり、当該チェックと同様なチェックを、隣接するラベルが見つからなくなるまで繰り返す必要がある。特に、接続情報配列の各レコードの格納順によっては、隣接するラベルのチェックの漏れが発生するおそれがあるため、当該チェックの繰り返しとして、接続情報配列の1番目のレコードから最後のレコードまでの一通りのレコードの選択を、隣接するラベルが見つかる度に繰り返すことが必要である。
【0093】
まず、CPU11は、LUT配列を初期化してRAM13に記憶する(ステップS61)。LUT配列の初期化は、
図14(a)に示すように、「ラベル」=1のとき、「LUT値」=1とし、「ラベル」=1以外のとき、「LUT値」=0として、LUT配列に格納する処理とする。この初期化では、「ラベル」は、1から、ステップS31のラベリング処理でラベリングされたラベルの最大値までの昇順の自然数の値が設定されるものとする。
【0094】
そして、CPU11は、更新フラグを0に設定(クリア)する(ステップS62)。更新フラグは、ステップS63~S67の処理を繰り返すか否かを示すフラグである。更新フラグ=1である場合に、ステップS63~S67の処理を繰り返すことを示し、更新フラグ=0である場合に、ステップS63~S67の処理を行わないことを示す。上述したように、ラベル「1」に直接的に又は間接的に隣接する新たなラベルが見つけられ、LUT配列の「LUT値」が更新される場合に更新フラグ=1に設定される。そして、CPU11は、ステップS31で生成されたRAM13上の接続情報配列を参照し、「接続元ラベル」及び「接続先ラベル」を有する全レコードから、未選択の1つのレコードを接続情報としてその格納順に選択する(ステップS63)。
【0095】
そして、CPU11は、ステップS63で選択中の接続情報の「接続元ラベル」及び「接続先ラベル」について、LUT配列の「LUT値」が1の「ラベル」と、同じく「LUT値」が0の「ラベル」とが接続(隣接)していることを示すか否かを判別する(ステップS64)。選択中の接続情報が、「LUT値」が1の「ラベル」と、「LUT値」が0の「ラベル」とが接続していることを示す場合(ステップS64;YES)、CPU11は、LUT配列において、接続していることを示す「LUT値」が0の「ラベル」の「LUT値」を1に更新する(ステップS65)。
【0096】
そして、CPU11は、更新フラグを1に更新する(ステップS66)。そして、CPU11は、ステップS31で生成された接続情報配列に、ステップS63で未選択の接続情報があるか否かを判別する(ステップS67)。未選択の接続情報がある場合(ステップS67;YES)、ステップS63に移行される。選択中の接続情報が、「LUT値」が1の「ラベル」と、「LUT値」が0の「ラベル」とが接続していることを示さない場合(ステップS64;NO)、ステップS67に移行される。
【0097】
未選択の接続情報がない場合(ステップS67;NO)、CPU11は、更新フラグが0であるか否かを判別する(ステップS68)。更新フラグが1である場合(ステップS68;NO)、ステップS62に移行される。更新フラグが0である場合(ステップS68;YES)、LUT作成処理が終了する。
【0098】
ここで、
図14(a)~
図15(d)を参照して、LUT作成処理の具体例を説明する。まず、
図14(a)~
図14(c)を参照して、ラベリング処理で
図12に示す接続情報配列が生成された場合に、LUT作成処理により作成されるLUT配列の一例を説明する。
【0099】
まず、
図14(a)に示すように、LUT作成処理のステップS61により、LUT配列は、「ラベル」=1,2,3,4に対応して、「LUT値」が1,0,0,0となるように初期化される。また、
図12の接続情報配列の1レコード目では、「接続元ラベル」の1に対応して「接続先ラベル」の2が格納されている。初期化後のLUT配列では、「接続ラベル」の1に対応する「ラベル」の1の「LUT値」が1であり、「接続ラベル」の2に対応する「ラベル」の2の「LUT値」が0である。そして、ステップS62で更新フラグ=0に設定され、ステップS63で接続情報配列の1レコード目の接続情報が選択され、ステップS64;YESの後のステップS65で、
図14(b)のLUT配列に示すように、「ラベル」の2に対応する「LUT値」が1に更新され、ステップS66で更新ラベル=1にされる。LUT配列は4つのレコードからなるため、ステップS67でステップS63に移行され、接続情報配列の2レコード目の接続情報が選択される。
【0100】
図12の接続情報配列の2レコード目では、「接続元ラベル」の2に対応して「接続先ラベル」の4が格納されている。「ラベル」の2の更新後のLUT配列では、「接続先ラベル」の2に対応する「ラベル」の2の「LUT値」が1に更新されており、「接続ラベル」の4に対応する「ラベル」の4の「LUT値」が0である。このため、ステップS64;YESの後のステップS65で、
図14(c)のLUT配列に示すように、「ラベル」の4に対応する「LUT値」が1に更新される。
【0101】
そして、ステップS66で更新フラグ=1にされたまま、ステップS68によりステップS62に移行され更新フラグ=0に設定されるものの、
図12の接続情報配列では、
図14(c)のLUT配列からステップS65でさらに「LUT値」が更新されることがない。このため、更新フラグ=0にされたまま、LUT作成処理が終了し、最終的なLUT配列は、
図14(c)のLUT配列となる。
【0102】
ついで、
図15(a)~
図15(d)を参照して、ラベリング処理で別の接続情報配列が生成された場合に、LUT作成処理により作成されるLUT配列の一例を説明する。ここでは、
図15(a)に示す接続情報配列が得られたものとする。
【0103】
まず、
図15(b)に示すように、LUT作成処理のステップS61により、LUT配列は、「ラベル」=1,2,3,4に対応して、「LUT値」が1,0,0,0となるように初期化される。そして、
図12の接続情報配列の1レコード目では、「接続元ラベル」の2に対応して「接続先ラベル」の4が格納されている。初期化後のLUT配列では、「接続ラベル」の2に対応する「ラベル」の2の「LUT値」が0であり、「接続ラベル」の4に対応する「ラベル」の4の「LUT値」も0である。そして、ステップS62で更新フラグ=0に設定され、ステップS63で接続情報配列の1レコード目の接続情報が選択されるが、ステップS64;NOとなり、ステップS67により、ステップS63に移行される。
【0104】
図15(a)の接続情報配列の2レコード目では、「接続元ラベル」の1に対応して「接続先ラベル」の4が格納されている。初期化後のLUT配列では、「接続ラベル」の1に対応する「ラベル」の1の「LUT値」が1であり、「接続ラベル」の4に対応する「ラベル」の4の「LUT値」が0である。そして、ステップS63で接続情報配列の2レコード目の接続情報が選択され、ステップS64;YESの後のステップS65で、
図15(c)のLUT配列に示すように、「ラベル」の4に対応する「LUT値」が1に更新され、ステップS66で更新ラベル=1にされる。
図15(c)のLUT配列には、
図15(a)の接続情報配列の1レコード目の接続情報が反映されていない。
【0105】
そして、ステップS66で更新フラグ=1にされたまま、ステップS68によりステップS62に移行され更新フラグ=0に設定される。そして、ステップS63で接続情報配列の1レコード目の接続情報が再度選択され、ステップS64;YESの後のステップS65で、
図15(d)のLUT配列に示すように、「ラベル」の4に対応する「LUT値」が1に更新される。
【0106】
そして、ステップS66で更新フラグ=1にされ、ステップS68によりステップS62に移行され更新フラグ=0に設定されるものの、
図15(a)の接続情報配列では、
図15(d)のLUT配列からステップS65でさらに「LUT値」が更新されることがない。このため、更新フラグ=0にされたまま、LUT作成処理が終了し、最終的なLUT配列は、
図15(d)のLUT配列となる。
【0107】
図8に戻り、CPU11は、ステップS32で生成されたLUT配列を用いて、エッジ画像データを生成するエッジ画像出力処理を行う(ステップS33)。
【0108】
ここで、
図16(a)、
図16(b)を参照して、非極大抑制された撮影画像データの画像に割り当てられた各画素のラベルの一例と、当該各画素のラベルに対応する各画素のLUT値を説明する。
図5の非極大抑制処理により、非極大抑制された撮影画像データが得られ、
図9のラベリング処理により、
図16(a)に示すように、非極大抑制された撮影画像データの画像の各画素にラベル=0~4が割り当てられ、
図12に示す接続情報配列が得られたものとする。ここで、
図16(a)の画像のラベル=1の画素が「確実にエッジである画素」とし、ラベル=2,3,4の画素が「エッジかもしれない画素」とする。
【0109】
そして、
図13のLUT作成処理により、
図12に示す接続情報配列を用いて、
図14(c)に示すLUT配列が作成される。すると、この
図14(c)に示すLUT配列が適用されることで、
図16(a)の画像の各画素のラベルに対応して、
図16(b)の画像の各画素に示すように、
図12に示す接続情報配列の「ラベル」=1,2,4に対応する画素に「LUT値」=1が割り当てられる。すると、
図16(b)の画像に示すように、「確実にエッジである画素」であるラベル=1の画素に直接的又は間接的に隣接(接続)されるラベル=1,2,4のみにLUT値=1が割り当てられ、その他の画素にLUT値=0が割り当てられていることが分かる。このため、LUT値=1の画素をエッジにする画素とし、LUT値=0の画素をエッジにしない画素とすれば、エッジ画像データが生成できる。
【0110】
ついで、
図17を参照して、
図8のステップS33のエッジ画像出力処理を詳細に説明する。まず、CPU11は、ステップS23で非極大抑制された撮影画像データの画像の全ての画素のうち、例えば
図7のラスタスキャンにより、次にスキャンする未選択の画素を注目画素として選択する(ステップS71)。
【0111】
そして、CPU11は、ステップS71で選択中の注目画素(以下、エッジ画像出力処理において単に注目画素という)に対応付けてRAM13に記憶されているラベルを参照する(ステップS72)。そして、CPU11は、
図13のLUT作成処理で作成されてRAM13に記憶されているLUT配列を参照する(ステップS73)。
【0112】
そして、CPU11は、ステップS73で参照したLUT配列において、ステップS72で参照した注目画素の「ラベル」に対応する「LUT値」が1であるか否かを判別する(ステップS74)。ステップS74において、注目画素で「ラベル」=0である場合には「LUT値」=0にされる。注目画素のラベルに対応するLUT値が1である場合(ステップS74;YES)、CPU11は、注目画素を、ヒステリシス閾値を超えた画素(ヒステリシス閾値処理でエッジにする画素)として出力する(ステップS75)。
【0113】
注目画素のラベルに対応するLUT値が0である場合(ステップS74;NO)、CPU11は、注目画素を、ヒステリシス閾値を超えていない画素(ヒステリシス閾値処理でエッジとしない画素)として出力する(ステップS76)。そして、CPU11は、非極大抑制された撮影画像データの画像の全ての画素のうち、ステップS71で未選択の画素(注目画素)があるか否かを判別する(ステップS77)。
【0114】
未選択の画素(注目画素)がある場合(ステップS77;YES)、ステップS71に移行される。未選択の画素(注目画素)がない場合(ステップS77;NO)、CPU11は、ステップS75で出力されたヒステリシス閾値を超えていない画素をエッジ画素とし、ステップS76で出力されたヒステリシス閾値を超えていない画素を黒画素として含むエッジ画像のエッジ画像データを生成し(ステップS78)、エッジ画像出力処理を終了する。
【0115】
ここで、
図18(a)、
図18(b)を参照して、
図5のエッジ画像生成処理で生成されたエッジ画像データの具体例を説明する。
図18(a)に示すように、
図4の撮影処理のステップS11で、撮影画像I1の撮影画像データが生成されたものとする。撮影画像I1は、エッジが分かりやすい被写体の撮影画像としており、画像サイズ:320×240である。
【0116】
そして、
図18(b)に示すように、
図5のエッジ画像生成処理で、撮影画像I1の撮影画像データから、エッジ画像I2のエッジ画像データが生成される。ただし、閾値TH1:50、閾値TH2:150、L2ノルムとした。また、ヒステリシス閾値を超えた画素(エッジ):白色、ヒステリシス閾値を超えない画素:黒色である。エッジ画像I2によれば、
図5のエッジ画像生成処理により、適切にエッジがとれていることが分かる。
【0117】
また、撮影画像I1の撮影画像データからのエッジ画像データの生成について、従来のラスタスキャンを複数回行うヒステリシス閾値処理と、本実施の形態の
図8のヒステリシス閾値処理とを比較する。従来のラスタスキャンを複数回行うヒステリシス閾値処理では、ヒステリシス閾値処理でのラスタスキャンの回数:21回、ヒステリシス閾値処理にかかる時間:8927[μs]であった。本実施の形態の
図8のヒステリシス閾値処理では、
図9のラベリング処理でのラスタスキャンの回数:1回であり、ヒステリシス閾値処理にかかる時間:2093[μs]であった。なお、本実施の形態の
図8のヒステリシス閾値処理でのラスタスキャンの回数:2回である。このように、本実施の形態の
図9のラベリング処理では、従来のラスタスキャンを複数回行うヒステリシス閾値処理に比べて、ラスタスキャンの回数が少ないため、処理にかかる時間が短縮されている。
【0118】
以上、本実施の形態によれば、撮影装置10は、エッジの強さを示す評価値が閾値TH1と閾値TH1よりも大きな閾値TH2との間になる第1画素としての「エッジかもしれない画素」のうち評価値Gが閾値TH2よりも大きい第2画素としての「確実にエッジである画素」に直接的に隣接する「エッジかもしれない画素」及び他の「エッジかもしれない画素」を介して「確実にエッジである画素」に間接的に隣接する「エッジかもしれない画素」をエッジ画素(エッジにする画素)として判定する。撮影装置10は、注目画素p1が「エッジかもしれない画素」であった場合に、注目画素p1に隣接するスキャン済みの周辺画素p2~p5の何れかに「確実にエッジである画素」を示すラベル「1」が付与されていたときにはラベル「1」と同じラベルを注目画素p1に付与し、注目画素p1に隣接するスキャン済みの周辺画素p2~p5の何れにも「確実にエッジである画素」を示すラベルが付与されておらず且つ注目画素p1に隣接するスキャン済みの周辺画素p2~p5の何れかに「エッジかもしれない画素」を示すラベルが付与されていたときには当該ラベルと同じラベルを注目画素p1に付与し、注目画素p1に隣接するスキャン済みの周辺画素p2~p5の何れにも「エッジかもしれない画素」を示すラベルと「確実にエッジである画素」を示すラベルとの何れもが付与されていないときには新たな通し記号としての通し番号を「エッジかもしれない画素」を示すラベルとして注目画素p1に付与するCPU11を備える。CPU11は、ラベルが付与された各画素において隣接関係にあるラベルの組み合わせを示す対応テーブルとしての接続情報配列を生成する。CPU11は、生成された接続情報配列に基づいて「エッジかもしれない画素」のそれぞれに対してエッジ画素とするか否かを判定する。
【0119】
また、撮影装置10は、キャニー法によりエッジを検出する。撮影装置10は、注目画素p1におけるエッジの強さを示す評価値Gと注目画素p1に隣接するスキャン済みの周辺画素p2~p5に付与されているラベルの付与状態とに基づいて注目画素p1に所定のラベルを付与するCPU11を備える。CPU11は、ラベルが付与された各画素において隣接関係にあるラベルの組み合わせを示す対応テーブルとしての接続情報配列を生成する。CPU11は、評価値Gが閾値TH1と閾値TH1よりも大きな閾値TH2との間になっている「エッジかもしれない画素」のそれぞれに対して、生成された接続情報配列に基づいてエッジにする画素とするか否かを判定する。CPU11は、注目画素p1における評価値Gが閾値TH1と閾値TH2との間であった場合に、注目画素p1に隣接するスキャン済みの周辺画素p2~p5の何れかに評価値Gが閾値TH1よりも大きいことを示すラベルが付与されているか否かの違いによって異なるラベルを注目画素p1に付与する。
【0120】
このため、エッジ検出におけるヒステリシス閾値処理のラスタスキャンの回数を低減できるので、ヒステリシス閾値処理(を含むエッジ画像生成処理)の処理時間を短縮できる。
【0121】
また、CPU11は、注目画素p1に隣接するスキャン済みの周辺画素p2~p5間で互いに異なるラベルがそれぞれの画素において「エッジかもしれない画素」を示すラベルとして付与されていた場合には、通し番号が小さい方(若い方)のラベルを注目画素p1に付与する。このため、「エッジかもしれない画素」のラベルを正確かつ容易に付与できる。
【0122】
また、CPU11は、注目画素p1が「エッジかもしれない画素」であった場合に、注目画素p1に隣接するスキャン済みの周辺画素p2~p5の何れかに「確実にエッジである画素」を示すラベル「1」が付与されていたときには当該ラベルと同じラベルをエッジにする画素を示すラベルとして注目画素p1に付与する。このため、エッジにするのに適切な「エッジかもしれない画素」をエッジにする画素とすることができる。
【0123】
また、CPU11は、撮影画像データにノイズ除去を行い、ノイズ除去された撮影画像データから輪郭抽出を行い、輪郭抽出された撮影画像データに、エッジの強さが極大となる部分以外を除外する非極大抑制を行う。CPU11は、ヒステリシス閾値処理のラベリング処理により、非極大抑制された撮影画像データの画像の画素にラベルを付与する。このため、キャニー法により適切にエッジ画像データを生成できる。
【0124】
以上の説明では、本発明に係るプログラムのコンピュータ読み取り可能な媒体としてROM、フラッシュメモリなどの記憶部15を使用した例を開示したが、この例に限定されない。その他のコンピュータ読み取り可能な媒体として、他の不揮発性メモリ、CD-ROMなどの可搬型記録媒体を適用することが可能である。また、本発明に係るプログラムのデータを通信回線を介して提供する媒体として、キャリアウエーブ(搬送波)も本発明に適用される。
【0125】
なお、上記実施の形態における記述は、本発明に係る画像処理装置、エッジ検出方法及びプログラムの一例であり、これに限定されるものではない。
【0126】
例えば、上記実施の形態では、
図9のラベリング処理において、ループ処理L1がステップS41~S45のラスタスキャンのループ処理内の二重ループである構成としたが、これに限定されるものではない。ループ処理L1を除くラベリング処理を実行した後に、撮影画像データのラスタスキャンを伴うループ処理L1を別に実行する構成としてもよい。この構成では、ヒステリシス閾値処理のラスタスキャンの回数が3回になるが、依然として、従来のラスタスキャンを複数回行うヒステリシス閾値処理よりもラスタスキャンの回数を少なくすることができる。
【0127】
また、上記実施の形態では、撮影システム1として、CPU11が
図5のステップS24のヒステリシス閾値処理を含む撮影処理を行う撮影装置10を用いる構成としたが、これに限定されるものではない。撮影装置10に代えて、
図19に示す撮影装置10aを用いる構成としてもよい。
図19は、撮影装置10aの機能構成を示すブロック図である。
【0128】
撮影装置10aは、撮影装置10と同様の構成であるが、さらに制御手段としての画像処理回路17を備える。また、記憶部15には、撮影プログラムP1に代えて、撮影プログラムP2を記憶しているものとする。
【0129】
画像処理回路17は、
図4のエッジ画像生成処理を実行する論理回路であり、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などでチップとして構成される。
【0130】
撮影プログラムP2は、撮影プログラムP1と同様に、
図4の撮影処理と同様の第2の撮影処理を実行させるためのプログラムである。ただし、第2の撮影処理では、CPU11自体が
図4のエッジ画像生成処理を実行するのではなく、CPU11が、画像処理回路17に
図4のエッジ画像生成処理を行わせる。なお、画像処理回路17が
図8のヒステリシス閾値処理を行う論理回路とし、上記第2の撮影処理では、CPU11が、画像処理回路17に
図8のヒステリシス閾値処理を行わせる構成としてもよい。
【0131】
本発明の実施の形態を説明したが、本発明の範囲は、上述の実施の形態に限定するものではなく、特許請求の範囲に記載された発明の範囲とその均等の範囲を含む。
【符号の説明】
【0132】
1 撮影システム
10,10a 撮影装置
110 制御部
11 CPU
12 撮像部
13 RAM
14 通信部
15 記憶部
16 バス
17 画像処理回路
20 PC
21 CPU
22 操作部
23 RAM
24 表示部
25 記憶部
26 通信部
27 バス