(57)【要約】【課題】  複数の数値の中央値を求める演算処理に要する演算負荷を低減することができる演算装置、画像処理システム、演算方法、及びプログラムを提供する。【解決手段】  演算装置１ａにおいて、判定部１１１は、Ｎ個の数値と基準値Ｐ１（ｍ）（基準パラメータＰ１の値）とのそれぞれの大小関係を判定する判定処理を行う。更新部１１２は、判定処理の判定結果に基づいて基準値Ｐ１（ｍ）を更新する更新処理を行う。繰り返し制御部１１３は、更新後の基準値Ｐ１（ｍ）の値を用いた判定処理を判定部１１１に実行させ、更新部１１２に基準値Ｐ１（ｍ）を繰り返し更新させる。そして、繰り返し制御部１１３は、所定回数Ｚ繰り返し更新した後の基準値Ｐ１（ｍ）を中央値とする。【選択図】図１
2019153001.tif 000002
【特許請求の範囲】
【請求項１】
２以上の整数をＮとし、前記Ｎ個の数値データがそれぞれ表す数値に基づいて、前記Ｎ個の数値の中央値を求める演算装置であって、
前記Ｎ個の数値がとり得る上限値と下限値との間の値に設定されたパラメータを基準パラメータとし、前記Ｎ個の数値と前記基準パラメータの値とのそれぞれの大小関係を判定する判定処理を行う判定部と、
前記判定処理の判定結果に基づいて前記基準パラメータの値を更新する更新処理を行う更新部と、
更新後の前記基準パラメータの値を用いた前記判定処理を前記判定部に実行させ、前記更新部に前記基準パラメータの値を繰り返し更新させる繰り返し制御部と、を備え、
前記繰り返し制御部は、所定回数繰り返し更新した後の前記基準パラメータの値を前記中央値とする
ことを特徴とする演算装置。
【請求項２】
前記判定部は、前記判定処理において、前記Ｎ個の数値データのうち前記基準パラメータの値より大きい数値を表す数値データの個数をカウントパラメータの値として求め、
前記更新部は、前記更新処理において、前記Ｎの半値、または当該半値を丸めた値を更新閾値とし、前記カウントパラメータの値が前記更新閾値より大きければ、前記基準パラメータの値より小さいステップパラメータの値を前記基準パラメータの値に加算して前記更新後の前記基準パラメータの値を求め、前記カウントパラメータの値が前記更新閾値より小さければ、前記ステップパラメータの値を前記基準パラメータの値から減算して前記更新後の基準パラメータの値を求める
ことを特徴とする請求項１記載の演算装置。
【請求項３】
前記Ｎ個の数値がとり得る前記上限値と前記下限値との和の半値、または当該半値を丸めた値を、前記基準パラメータの初期値として記憶している初期値記憶部をさらに備え、
前記ステップパラメータの初期値は、前記基準パラメータの初期値から前記下限値を減算した値の半値、または当該半値を丸めた値であり、
前記判定部は、１回目の前記判定処理において、前記Ｎ個の数値データのうち前記基準パラメータの初期値より大きい数値を表す数値データの個数を前記カウントパラメータの値として求め、
前記更新部は、１回目の前記更新処理において、前記カウントパラメータの値が前記更新閾値より大きければ、前記ステップパラメータの初期値を前記基準パラメータの初期値に加算して前記更新後の前記基準パラメータの値を求め、前記カウントパラメータの値が前記更新閾値より小さければ、前記ステップパラメータの初期値を前記基準パラメータの初期値から減算して前記更新後の基準パラメータの値を求め、
前記更新部は、２回目以降の前記更新処理における前記ステップパラメータの値として、前回の前記更新処理におけるステップパラメータの値の半値、または当該半値を丸めた値を用いる
ことを特徴とする請求項２記載の演算装置。
【請求項４】
前記判定部は、
前記Ｎ個の前記数値で前記Ｎ個の各成分が表された数値ベクトルと前記基準パラメータの値で前記Ｎ個の各成分が表された基準ベクトルとから、成分毎の最大値を抽出し、前記成分毎の最大値で前記Ｎ個の各成分が表された抽出ベクトルを求め、
前記数値ベクトルと前記抽出ベクトルとの互いに対応する成分同士を比較して、前記Ｎ個の各成分が、前記成分同士の各値が等しい場合に第１値で表され、前記成分同士の各値が異なる場合に第２値で表された判定ベクトルを求め、
前記判定ベクトルにおいて前記第１値で表された成分の数を前記カウントパラメータの値として求める
ことを特徴とする請求項２または３記載の演算装置。
【請求項５】
前記判定部は、前記判定処理において、前記Ｎ個の数値データのうち前記基準パラメータの値より小さい数値を表す数値データの個数をカウントパラメータの値として求め、
前記更新部は、前記更新処理において、前記Ｎの半値、または当該半値を丸めた値を更新閾値とし、前記カウントパラメータの値が前記更新閾値より大きければ、前記基準パラメータの値より小さいステップパラメータの値を前記基準パラメータの値から減算して前記更新後の前記基準パラメータの値を求め、前記カウントパラメータの値が前記更新閾値より小さければ、前記ステップパラメータの値を前記基準パラメータの値に加算して前記更新後の基準パラメータの値を求める
ことを特徴とする請求項１記載の演算装置。
【請求項６】
前記Ｎ個の数値がとり得る前記上限値と前記下限値との和の半値、または当該半値を丸めた値を、前記基準パラメータの初期値として記憶している初期値記憶部をさらに備え、
前記ステップパラメータの初期値は、前記基準パラメータの初期値から前記下限値を減算した値の半値、または当該半値を丸めた値であり、
前記判定部は、１回目の前記判定処理において、前記Ｎ個の数値データのうち前記基準パラメータの初期値より小さい数値を表す数値データの個数を前記カウントパラメータの値として求め、
前記更新部は、１回目の前記更新処理において、前記カウントパラメータの値が前記更新閾値より大きければ、前記ステップパラメータの初期値を前記基準パラメータの初期値から減算して前記更新後の前記基準パラメータの値を求め、前記カウントパラメータの値が前記更新閾値より小さければ、前記ステップパラメータの初期値を前記基準パラメータの初期値に加算して前記更新後の基準パラメータの値を求め、
前記更新部は、２回目以降の前記更新処理における前記ステップパラメータの値として、前回の前記更新処理におけるステップパラメータの値の半値、または当該半値を丸めた値を用いる
ことを特徴とする請求項５記載の演算装置。
【請求項７】
前記判定部は、
前記Ｎ個の前記数値で前記Ｎ個の各成分が表された数値ベクトルと前記基準パラメータの値で前記Ｎ個の各成分が表された基準ベクトルとから、成分毎の最小値を抽出し、前記成分毎の最小値で前記Ｎ個の各成分が表された抽出ベクトルを求め、
前記数値ベクトルと前記抽出ベクトルとの互いに対応する成分同士を比較して、前記Ｎ個の各成分が、前記成分同士の各値が等しい場合に第１値で表され、前記成分同士の各値が異なる場合に第２値で表された判定ベクトルを求め、
前記判定ベクトルにおいて前記第１値で表された成分の数を前記カウントパラメータの値として求める
ことを特徴とする請求項５または６記載の演算装置。
【請求項８】
請求項１乃至７のいずれか一項に記載の演算装置と、
濃淡画像の情報を受け取る画像取得部と、を備え、
前記Ｎ個の数値は、前記濃淡画像の複数の画素のうち、注目画素を含む所定領域の前記Ｎ個の画素のそれぞれの濃淡値であり、
前記演算装置は、
前記繰り返し制御部が求めた前記中央値を前記注目画素の濃淡値に設定することで、前記濃淡画像の平滑処理を行う
ことを特徴とする画像処理システム。
【請求項９】
前記演算装置は、前記濃淡画像の前記平滑処理を行うメディアンフィルタとして機能する
ことを特徴とする請求項８記載の画像処理システム。
【請求項１０】
２以上の整数をＮとし、前記Ｎ個の数値データがそれぞれ表す数値に基づいて、前記Ｎ個の数値の中央値を求める演算方法であって、
前記Ｎ個の数値がとり得る上限値と下限値との間の値に設定されたパラメータを基準パラメータとし、前記Ｎ個の数値と前記基準パラメータの値とのそれぞれの大小関係を判定する判定処理を行う判定ステップと、
前記判定処理の判定結果に基づいて前記基準パラメータの値を更新する更新処理を行う更新ステップと、
更新後の前記基準パラメータの値を用いた前記判定処理を前記判定ステップに実行させ、前記更新ステップに前記基準パラメータの値を繰り返し更新させる制御ステップと、を備え、
前記制御ステップは、所定回数繰り返し更新した後の前記基準パラメータの値を前記中央値とする
ことを特徴とする演算方法。
【請求項１１】
コンピュータシステムに、請求項１０記載の演算方法を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に演算装置、画像処理システム、演算方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、メディアンフィルタを用いた画像処理が行われている。特許文献１に記載の画素データ処理装置は、所定方向に沿って並ぶ複数の画素を有する画素列ごとに、画素データの中央値を求める。そして、画素データ処理装置は、複数の画像列の各中央値を並べた行の中央値を擬似的な中央値としている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−４５５０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の特許文献１の画素データ処理装置は、画素列毎に画素データ（数値データ）の中央値を求めている。すなわち、画素データ処理装置は、複数の数値データがそれぞれ表す複数の数値から中央値を求める。
【０００５】
しかし、複数の数値の中央値を求める演算処理では、複数の数値を昇順または降順にソートする処理（ソート処理）のための演算負荷が比較的大きくなり、演算処理に要する時間が比較的長くなっていた。
【０００６】
本発明の目的は、複数の数値の中央値を求める場合に演算負荷を低減することができる演算装置、画像処理システム、演算方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一態様に係る演算装置は、２以上の整数をＮとし、前記Ｎ個の数値データがそれぞれ表す数値に基づいて、前記Ｎ個の数値の中央値を求める演算装置である。演算装置は、判定部と、更新部と、繰り返し制御部と、を備える。前記判定部は、前記Ｎ個の数値がとり得る上限値と下限値との間の値に設定されたパラメータを基準パラメータとし、前記Ｎ個の数値と前記基準パラメータの値とのそれぞれの大小関係を判定する判定処理を行う。前記更新部は、前記判定処理の判定結果に基づいて前記基準パラメータの値を更新する更新処理を行う。前記繰り返し制御部は、更新後の前記基準パラメータの値を用いた前記判定処理を前記判定部に実行させ、前記更新部に前記基準パラメータの値を繰り返し更新させる。前記繰り返し制御部は、所定回数繰り返し更新した後の前記基準パラメータの値を前記中央値とする。
【０００８】
本発明の一態様に係る画像処理システムは、上述の演算装置と、濃淡画像の情報を受け取る画像取得部と、を備える。前記Ｎ個の数値は、前記濃淡画像の複数の画素のうち、注目画素を含む所定領域の前記Ｎ個の画素のそれぞれの濃淡値である。前記演算装置は、前記繰り返し制御部が求めた前記中央値を前記注目画素の濃淡値に設定することで、前記濃淡画像の平滑処理を行う。
【０００９】
本発明の一態様に係る演算方法は、２以上の整数をＮとし、前記Ｎ個の数値データがそれぞれ表す数値に基づいて、前記Ｎ個の数値の中央値を求める演算方法である。前記演算方法は、判定ステップと、更新ステップと、制御ステップと、を備える。前記判定ステップは、前記Ｎ個の数値がとり得る上限値と下限値との間の値に設定されたパラメータを基準パラメータとし、前記Ｎ個の数値と前記基準パラメータの値とのそれぞれの大小関係を判定する判定処理を行う。前記更新ステップは、前記判定処理の判定結果に基づいて前記基準パラメータの値を更新する更新処理を行う。前記制御ステップは、更新後の前記基準パラメータの値を用いた前記判定処理を前記判定ステップに実行させ、前記更新ステップに前記基準パラメータの値を繰り返し更新させる。前記処理制御ステップは、所定回数繰り返し更新した後の前記基準パラメータの値を前記中央値とする。
【００１０】
本発明の一態様に係るプログラムは、コンピュータシステムに、上述の演算方法を実行させる。
【発明の効果】
【００１１】
以上説明したように、本発明は、複数の数値の中央値を求める場合に演算負荷を低減することができるという効果がある。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施形態の画像処理システムの構成を示すブロック図である。
【図２】図２は、同上の画像処理システムの演算装置が実行するクロスメディアンフィルタの処理を説明するための図である。
【図３】図３は、同上の演算装置のＭＡＸ演算を説明するための図である。
【図４】図４は、同上の演算装置のＥＱ演算を説明するための図である。
【図５】図５は、同上の演算装置の処理を示すフローチャートである。
【図６】図６は、同上の画像処理システムを備える検査システムの構成を示すブロック図である。
【図７】図７は、同上の検査システムの対象物を示す斜視図である。
【図８】図８は、同上の検査システムの画像処理を説明するための図である。
【図９】図９は、同上の変形例の演算装置のＭＩＮ演算を説明するための図である。
【図１０】図１０は、同上の変形例の演算装置のＥＱ演算を説明するための図である。
【発明を実施するための形態】
【００１３】
以下の実施形態は、一般に演算装置、画像処理システム、演算方法、及びプログラムに関する。より詳細に、以下の実施形態は、複数の数値データがそれぞれ表す複数の数値の中央値を求める演算装置、画像処理システム、演算方法、及びプログラムに関する。
【００１４】
本実施形態の画像処理システムは、コンピュータを用いた画像処理技術により、対象物を撮像した濃淡画像に画像処理を施して、対象物の検査（汚れの有無、キズの有無、欠けの有無、良品判定など）を行う。
【００１５】
図１は、本実施形態の検査システムＡ１の一部を示す。検査システムＡ１は、画像処理システム１と、表示装置２とを備える。
【００１６】
画像処理システム１（画像処理装置）は、演算装置１ａ、及び画像取得部１ｂを備えており、濃淡画像の情報を取得し、画像処理用のプログラムを実行することで、濃淡画像の情報に対して画像処理を施す。
【００１７】
演算装置１ａは、コンピュータシステムであり、ハードウェアとしてのプロセッサ及びメモリを主構成とする。メモリに記録されたプログラム（画像処理用のプログラム）をプロセッサが実行することによって、本開示における演算装置１ａの機能が実現される。プログラムは、コンピュータシステムのメモリに予め記録されていてもよいが、電気通信回線を通じて提供されてもよいし、コンピュータシステムで読み取り可能なメモリカード、光学ディスク、ハードディスクドライブ等の非一時的記録媒体に記録されて提供されてもよい。コンピュータシステムのプロセッサは、半導体集積回路（ＩＣ）又は大規模集積回路（ＬＳＩ）を含む１乃至複数の電子回路で構成される。複数の電子回路は、１つのチップに集約されていてもよいし、複数のチップに分散して設けられていてもよい。複数のチップは、１つの装置に集約されていてもよいし、複数の装置に分散して設けられていてもよい。
【００１８】
画像取得部１ｂは、撮像装置、データ記憶装置、サーバなどのいずれかから有線伝送路または無線伝送路を介して、対象物が写っている濃淡画像の情報を受け取る。または、画像取得部１ｂは、メモリカード、光学ディスクなどの携行型の非一時的記録媒体から対象物が写っている濃淡画像の情報を受け取ってもよい。画像取得部１ｂによって取得された濃淡画像の情報は、演算装置１ａに引き渡される。
【００１９】
濃淡画像は複数の画素（ピクセル）で構成されており、各画素に対応して濃淡データ（数値データ）がそれぞれ設定されている。濃淡データは濃淡値（数値）を表しており、濃淡値は８ビットのデータで表される。すなわち、濃淡値は２５６段階に分類されており、各画素の濃淡値は、０−２５５の範囲のいずれかの値に設定される。なお、本実施形態において、暗い画素は濃淡値が低く、明るい画素は濃淡値が高くなる。
【００２０】
演算装置１ａは、フィルタ１１、検査部１２、結果出力部１３を備える。
【００２１】
フィルタ１１は、クロスメディアンフィルタとして機能し、画像取得部１ｂから受け取った濃淡画像に平滑化処理を施す。
【００２２】
クロスメディアンフィルタとして機能するフィルタ１１は、濃淡画像の複数の画素から注目画素を選択し、注目画素及び注目画素の周囲の複数の画素の各濃淡値の中央値（濃淡中央値）を求める。そして、フィルタ１１は、注目画素の濃淡データを濃淡中央値に設定し直す。フィルタ１１は、濃淡画像の複数の画素のそれぞれを注目画素として順に選択し、複数の画素のそれぞれの濃淡データを濃淡中央値に設定し直すことで、濃淡画像に平滑化処理を施す。
【００２３】
図２は濃淡画像の一部を示しており、濃淡画像では、複数の画素Ｅがマトリクス状に配置されている。
【００２４】
クロスメディアンフィルタとして機能するフィルタ１１は、画素Ｅ（１）を注目画素とした場合、注目画素Ｅ（１）を中心とする行方向及び列方向に位置する計１０個の画素Ｅ（２），Ｅ（３），………，Ｅ（１０），Ｅ（１１）を、注目画素Ｅ（１）の周囲の複数の画素として抽出する。画素Ｅ（２）−Ｅ（４）及び画素Ｅ（５）−Ｅ（７）は、注目画素Ｅ（１）を挟んで列方向に並んで配置されている。画素Ｅ（８），Ｅ（９）及び画素Ｅ（１０），Ｅ（１１）は、注目画素Ｅ（１）を挟んで行方向に並んで配置されている。すなわち、画素Ｅ（１）−Ｅ（７）は列方向に延びる第１画素列Ｌ１を構成し、画素Ｅ（１），Ｅ（８）−Ｅ（１１）は行方向に延びる第２画素列Ｌ２を構成する。第１画素列Ｌ１と第２画素列Ｌ２との交点が注目画素Ｅ（１）になる。そして、フィルタ１１は、１１個の画素Ｅ（１）−Ｅ（１１）の濃淡中央値（各濃淡値の中央値）を求め、注目画素Ｅ（１）の濃淡値として濃淡中央値を設定することで、注目画素Ｅ（１）の濃淡データを設定し直す。
【００２５】
一方、本実施形態とは異なる比較例では、１１個の画素Ｅ（１）−Ｅ（１１）の濃淡中央値を求める中央値抽出処理のために、１１個の画素Ｅ（１）−Ｅ（１１）の各濃淡値を降順または昇順にソートしてから、濃淡中央値を求めていた。この場合、ソート処理用のプログラムが画像処理用のプログラムに実装されており、ソート処理用のプログラムは分岐命令を用いる。そして、ソート処理用のプログラムが分岐命令を実行することによって、演算負荷が比較的大きくなってしまう。この結果、１１個の画素Ｅ（１）−Ｅ（１１）のソート処理のための演算負荷が比較的大きくなり、平滑化処理に要する時間が比較的長くなってしまう。
【００２６】
そこで、本実施形態のフィルタ１１は、中央値抽出処理に要する演算負荷を低減させるために、以下の中央値抽出処理を行って、１１個の画素Ｅ（１）−Ｅ（１１）の濃淡中央値を求める。また、１１個の画素Ｅ（１）−Ｅ（１１）の各濃淡値は、Ｄ（１）−Ｄ（１１）で表される。
【００２７】
なお、１１個の画素Ｅ（１）−Ｅ（１１）にそれぞれ設定されている１１個の濃淡データが、本開示におけるＮ個の数値データに相当する。また、１１個の濃淡データが表す濃淡値Ｄ（１）−Ｄ（１１）が、本開示におけるＮ個の数値に相当する。Ｎは２以上の整数であり、本実施形態ではＮ＝１１である。また、１１個の濃淡値Ｄ（１）−Ｄ（１１）を、Ｄ（ｎ）と表すこともある（ｎ＝１，２，………，１１）。
【００２８】
演算装置１ａが実行する画像処理用のプログラムには、平滑処理用のプログラムが含まれており、演算装置１ａが平滑処理用のプログラムを実行することで、フィルタ１１の機能が実現される。なお、演算装置１ａは、１つの命令を複数のデータに適用して、１サイクルで複数のデータを並列処理する命令、所謂ＳＩＭＤ（Single Instruction Multiple Data）の命令（ＳＩＭＤ命令）を実行することができる。
【００２９】
フィルタ１１は、判定部１１１、更新部１１２、繰り返し制御部１１３、初期値記憶部１１４、平滑部１１５を有する。
【００３０】
判定部１１１は、１１個の濃淡値Ｄ（１）−Ｄ（１１）と基準パラメータＰ１の値Ｐ１（ｍ）とのそれぞれの大小関係を判定する判定処理を行う（なお、ｍは、１回の中央値抽出処理における判定処理（または後述の更新処理）の累積回数を表す回数パラメータであり、１以上の整数をとる）。このとき、判定部１１１は、判定処理でＳＩＭＤ命令を実行することによって、１１個の濃淡値Ｄ（１）−Ｄ（１１）と基準パラメータＰ１の値Ｐ１（ｍ）とのそれぞれの大小関係を１サイクルで並列的に判定することができる。なお、以降の説明では、基準パラメータＰ１の値Ｐ１（ｍ）を基準値Ｐ１（ｍ）と呼ぶ。
【００３１】
図３、図４は、ＳＩＭＤ命令を用いた判定処理の概略を示す。なお、図３、図４では、（ｍ）と表記しているが、ｍは判定処理の回数を表す回数パラメータであるので、以下では、ｍ＝定数Ｍ（１以上の整数）として説明を行う。
【００３２】
まず、図３に示すように、判定部１１１は、１１個の濃淡値Ｄ（１）−Ｄ（１１）のそれぞれを１１個の成分として有する１１次元の列ベクトルを、数値ベクトルＶ１として求める。また、判定部１１１は、基準値Ｐ１（Ｍ）を１１個の成分として有する１１次元の列ベクトルを、基準ベクトルＶ２（Ｍ）として求める。
【００３３】
そして、判定部１１１は、数値ベクトルＶ１と基準ベクトルＶ２（Ｍ）とのＭＡＸ演算を行う。ＭＡＸ演算はＳＩＭＤ命令の一つである。この場合、ＭＡＸ演算は、数値ベクトルＶ１及び基準ベクトルＶ２（Ｍ）の互いに対応する成分の各値を比較して、各成分の最大値を抽出し、１１次元の抽出ベクトルＶ３（Ｍ）を生成する処理である。すなわち、ＭＡＸ演算では、濃淡値Ｄ（１）と基準値Ｐ１（Ｍ）とが比較され、濃淡値Ｄ（２）と基準値Ｐ１（Ｍ）とが比較され、………、濃淡値Ｄ（１１）と基準値Ｐ１（Ｍ）とが比較される。そして、判定部１１１は、濃淡値Ｄ（１）と基準値Ｐ１（Ｍ）のいずれか大きい方、濃淡値Ｄ（２）と基準値Ｐ１（Ｍ）のいずれか大きい方、………、濃淡値Ｄ（１１）と基準値Ｐ１（Ｍ）のいずれか大きい方で１１個の成分が表された抽出ベクトルＶ３（Ｍ）を求める。言い換えると、抽出ベクトルＶ３（Ｍ）は、数値ベクトルＶ１と基準ベクトルＶ２（Ｍ）とから、成分毎の最大値を抽出し、成分毎の最大値で１１個の各成分が表された列ベクトルである。このとき、判定部１１１は、ＳＩＭＤ命令であるＭＡＸ演算を実行することによって、抽出ベクトルＶ３（Ｍ）の１１個の成分の各値を１サイクルで並列的に求めることができる。なお、数値ベクトルＶ１及び基準ベクトルＶ２（Ｍ）の互いに対応する成分の各値が等しい場合、抽出ベクトルＶ３（Ｍ）の当該成分の値は濃淡値Ｄ（ｎ）または基準値Ｐ１（Ｍ）になる。
【００３４】
次に、図４に示すように、判定部１１１は、数値ベクトルＶ１と抽出ベクトルＶ３（Ｍ）とのＥＱ演算を行う。ＥＱ演算はＳＩＭＤ命令の一つである。この場合、ＥＱ演算は、数値ベクトルＶ１と抽出ベクトルＶ３（Ｍ）との互いに対応する成分の各値を比較して、１１次元の判定ベクトルＶ４（Ｍ）を求める処理である。具体的に、ＥＱ演算は、数値ベクトルＶ１と抽出ベクトルＶ３（Ｍ）との互いに対応する成分の各値を比較して、数値ベクトルＶ１と抽出ベクトルＶ３（Ｍ）の成分毎に対応する各値が等しいか否かを判定し、判定ベクトルＶ４（Ｍ）はこの判定結果として求められる。判定ベクトルＶ４（Ｍ）の１１個の各成分は、数値ベクトルＶ１及び抽出ベクトルＶ３（Ｍ）の互いに対応する成分の各値が同じ値である場合に「１」（第１値）を設定される。また、判定ベクトルＶ４（Ｍ）の１１個の各成分は、数値ベクトルＶ１及び抽出ベクトルＶ３（Ｍ）の互いに対応する成分の各値が異なる値である場合に「０」（第２値）を設定される。このとき、判定部１１１は、ＳＩＭＤ命令であるＥＱ演算を実行することによって、判定ベクトルＶ４（Ｍ）の１１個の成分の各値を１サイクルで並列的に求めることができる。
【００３５】
判定ベクトルＶ４（Ｍ）の各成分は、数値ベクトルＶ１及び基準ベクトルＶ２（Ｍ）の互いに対応する成分の各値を比較した結果を表している。数値ベクトルＶ１の所定成分の濃淡値Ｄ（ｎ）が基準値Ｐ１（Ｍ）以上であれば、判定ベクトルＶ４（Ｍ）の所定成分の値は「１」になる。数値ベクトルＶ１の所定成分の濃淡値Ｄ（ｎ）が基準値Ｐ１（Ｍ）未満であれば、判定ベクトルＶ４（Ｍ）の所定成分の値は「０」になる。したがって、判定ベクトルＶ４（Ｍ）において値が「１」である成分の個数は、数値ベクトルＶ１において基準値Ｐ１（Ｍ）以上になる濃淡値Ｄ（ｎ）の個数になる。言い換えると、判定ベクトルＶ４（Ｍ）において値が「１」である成分の個数は、１１個の画素Ｅ（１）−Ｅ（１１）の各濃淡データのうち、濃淡値Ｄ（ｎ）が基準値Ｐ１（Ｍ）以上になる濃淡データの個数になる。
【００３６】
判定部１１１は、判定ベクトルＶ４（Ｍ）の１１個の成分のうち、値が「１」である成分の個数をカウントすることで、濃淡値Ｄ（ｎ）が基準値Ｐ１（Ｍ）以上になる濃淡データの個数をカウントできる。判定部１１１は、濃淡値Ｄ（ｎ）が基準値Ｐ１（Ｍ）以上になる濃淡データの個数を、カウントパラメータＰ２の値Ｐ２（Ｍ）に設定する。以降、カウントパラメータＰ２の値Ｐ２（ｍ）をカウント値Ｐ２（ｍ）と呼ぶ。
【００３７】
そして、更新部１１２は、カウント値Ｐ２（Ｍ）に基づいて基準パラメータＰ１の値を更新する更新処理を行う。
【００３８】
具体的に、更新部１１２は、更新処理において、濃淡データの個数Ｎの半値、または当該半値を丸めた値を更新閾値Ｋ１とする。本開示では、Ｎ＝１１であり、更新閾値Ｋ１は５．５に設定されている。そして、更新部１１２は、カウント値Ｐ２（Ｍ）が更新閾値Ｋ１より大きければ、後述のステップパラメータＰ３の値Ｐ３（Ｍ）を基準値Ｐ１（Ｍ）に加算し、この加算値が、更新後の基準値Ｐ１（Ｍ＋１）になる。また、更新部１１２は、カウント値Ｐ２（Ｍ）が更新閾値Ｋ１より小さければ、ステップパラメータＰ３の値Ｐ３（Ｍ）を基準値Ｐ１（Ｍ）から減算し、この減算値が、更新後の基準値Ｐ１（Ｍ＋１）になる。なお、以降、ステップパラメータＰ３の値Ｐ３（ｍ）をステップ値Ｐ３（ｍ）と呼ぶ。
【００３９】
また、更新部１１２は、更新後の基準値Ｐ１（Ｍ＋１）を求めた後、ステップ値Ｐ３（Ｍ）の半値、または当該半値を丸めた値を、次回のステップ値Ｐ３（Ｍ＋１）とする。
【００４０】
次に、繰り返し制御部１１３は、基準値Ｐ１（Ｍ）に代えて更新後の基準値Ｐ１（Ｍ＋１）を用いた上述の判定処理を判定部１１１に実行させ、判定部１１１は、カウント値Ｐ２（Ｍ＋１）を求める。そして、繰り返し制御部１１３は、カウント値Ｐ２（Ｍ）に代えてカウント値Ｐ２（Ｍ＋１）を用いた上述の更新処理を更新部１１２に実行させる。すなわち、更新部１１２は、カウント値Ｐ２（Ｍ＋１）と更新閾値Ｋ１との大小関係に基づいて、基準値Ｐ１（Ｍ＋１）とステップ値Ｐ３（Ｍ＋１）との加算または減算を行い、基準値Ｐ１（Ｍ＋２）を求める。また、更新部１１２は、更新後の基準値Ｐ１（Ｍ＋２）を求めた後、ステップ値Ｐ３（Ｍ＋１）の半値、または当該半値を丸めた値を、次回のステップ値Ｐ３（Ｍ＋２）とする。
【００４１】
ステップ値Ｐ３（ｍ）は、上述の基準値Ｐ１（ｍ）の更新処理が行われる毎に徐々に小さくなる。そして、繰り返し制御部１１３は、ステップ値Ｐ３（ｍ）が予め決められた所定値Ｒになるまで、基準値Ｐ１（ｍ）の更新処理を繰り返させる。そして、繰り返し制御部１１３は、ステップ値Ｐ３（ｍ）が所定値Ｒになった場合、そのときの基準値Ｐ１（ｍ）を、１１個の画素Ｅ（１）−Ｅ（１１）の濃淡中央値の近似値とする。
【００４２】
言い換えると、繰り返し制御部１１３は、回数パラメータｍが予め決められた所定回数Ｚになるまで、基準値Ｐ１（ｍ）の更新処理を繰り返させる。そして、繰り返し制御部１１３は、回数パラメータｍが所定回数Ｚになった場合、そのときの基準値Ｐ１（Ｚ）を、１１個の画素Ｅ（１）−Ｅ（１１）の濃淡中央値の近似値とする。
【００４３】
以下、図５のフローチャートを用いて、フィルタ１１の中央値抽出処理について説明する。ここでは、所定値Ｒは「１」であり、所定回数Ｚが「８」になる。
【００４４】
初期値記憶部１１４には、中央値抽出処理で用いられる基準パラメータＰ１の初期値Ｐ１（１）のデータ、及びステップパラメータＰ３の初期値Ｐ３（１）のデータが予め格納されている。以降、基準パラメータＰ１の初期値Ｐ１（１）を初期基準値Ｐ１（１）と呼び、ステップパラメータＰ３の初期値Ｐ３（１）を初期ステップ値Ｐ３（１）と呼ぶ。
【００４５】
初期基準値Ｐ１（１）は、濃淡値がとり得る値の上限値と下限値との和の半値、または当該半値を丸めた値に予め設定されている。この場合、濃淡値がとり得る値の上限値は２５５であり、下限値は０であり、［２５５＋０］／２＝１２７．５になる。本実施形態では、初期基準値Ｐ１（１）は、１２７．５の小数点以下を切り上げた値（丸めた値）、すなわち「１２８」に設定される。
【００４６】
初期ステップ値Ｐ３（１）は、初期基準値Ｐ１（１）から、濃淡値がとり得る値の下限値を減算した値の半値、または当該半値を丸めた値である。この場合、初期基準値Ｐ１（１）は１２８であり、下限値は０であり、［１２８−０］／２＝６４になる。すなわち、初期ステップ値Ｐ３（１）は、「６４」に設定される。
【００４７】
まず、繰り返し制御部１１３は、判定部１１１による１回目の判定処理（ｍ＝１）を開始させる。判定部１１１は、初期値記憶部１１４から初期基準値Ｐ１（１）のデータ、及び初期ステップ値Ｐ３（１）のデータを読み出す（ステップＳ１）。
【００４８】
そして、判定部１１１は、１１個の濃淡値Ｄ（１）−Ｄ（１１）を対象とする１回目の判定処理を行う（ステップＳ２）。判定部１１１は、１回目の判定処理を開始すると、数値ベクトルＶ１及び基準ベクトルＶ２（１）に基づいて、抽出ベクトルＶ３（１）を求める。数値ベクトルＶ１は、濃淡値Ｄ（１）−Ｄ（１１）のそれぞれで各成分が構成された１１次元の列ベクトルである。基準ベクトルＶ２（１）は、初期基準値Ｐ１（１）で各成分が構成された１１次元の列ベクトルである。判定部１１１は、数値ベクトルＶ１及び抽出ベクトルＶ３（１）に基づいて、判定ベクトルＶ４（１）を求める。判定部１１１は、判定ベクトルＶ４（１）に基づいて、カウント値Ｐ２（１）を求める。
【００４９】
更新部１１２は、１回目の更新処理を行う（ステップＳ３）。更新部１１２は、１回目の更新処理を開始すると、カウント値Ｐ２（１）に基づいて更新後の基準値Ｐ１（２）を求め、基準パラメータＰ１の値（基準値Ｐ１（ｍ））を更新する。すなわち、更新部１１２は、カウント値Ｐ２（１）と更新閾値Ｋ１との大小関係に基づいて、初期基準値Ｐ１（１）と初期ステップ値Ｐ３（１）との加算または減算を行い、基準値Ｐ１（２）を求める。
【００５０】
繰り返し制御部１１３は、ステップ値Ｐ３（１）の値「１２８」の半値である「６４」を、変更後のステップ値Ｐ３（２）とする（ステップＳ４）。そして、繰り返し制御部１１３は、ステップ値Ｐ３（ｍ）が所定値「１」であるか否かを判定する（ステップＳ５）。この場合、ステップ値Ｐ３（２）は「６４」であり、ステップ値Ｐ３（２）は「１」ではない。
【００５１】
そこで、繰り返し制御部１１３は、判定部１１１による２回目の判定処理（ｍ＝２）を開始させる（ステップＳ２）。判定部１１１は、基準値Ｐ１（２）を用いた判定処理を実行し、カウント値Ｐ２（２）を求める。そして、繰り返し制御部１１３は、カウント値Ｐ２（２）を用いた２回目の更新処理を更新部１１２に実行させる（ステップＳ３）。すなわち、更新部１１２は、カウント値Ｐ２（２）と更新閾値Ｋ１との大小関係に基づいて、基準値Ｐ１（２）とステップ値Ｐ３（２）との加算または減算を行い、基準値Ｐ１（３）を求める。
【００５２】
繰り返し制御部１１３は、ステップ値Ｐ３（２）の値「６４」の半値である「３２」を、変更後のステップ値Ｐ３（３）とする（ステップＳ４）。そして、繰り返し制御部１１３は、ステップ値Ｐ３（ｍ）が所定値「１」であるか否かを判定する（ステップＳ５）。この場合、ステップ値Ｐ３（３）は「３２」であり、ステップ値Ｐ３（３）は「１」ではない。
【００５３】
そこで、繰り返し制御部１１３は、判定部１１１による３回目の判定処理（ｍ＝３）を開始させる（ステップＳ２）。判定部１１１は、基準値Ｐ１（３）を用いた判定処理を実行し、カウント値Ｐ２（３）を求める。そして、繰り返し制御部１１３は、カウント値Ｐ２（３）を用いた３回目の更新処理を更新部１１２に実行させる（ステップＳ３）。すなわち、更新部１１２は、カウント値Ｐ２（３）と更新閾値Ｋ１との大小関係に基づいて、基準値Ｐ１（３）とステップ値Ｐ３（３）との加算または減算を行い、基準値Ｐ１（４）を求める。
【００５４】
繰り返し制御部１１３は、ステップ値Ｐ３（３）の値「３２」の半値である「１６」を、ステップ値Ｐ３（４）とする（ステップＳ４）。そして、繰り返し制御部１１３は、ステップ値Ｐ３（ｍ）が所定値「１」であるか否かを判定する（ステップＳ５）。この場合、ステップ値Ｐ３（４）は「１６」であり、ステップ値Ｐ３（３）は「１」ではない。
【００５５】
そこで、繰り返し制御部１１３は、判定部１１１による４回目の判定処理（ｍ＝４）を開始させる（ステップＳ２）。以降、４回目の判定処理及び更新処理、５回目の判定処理及び更新処理、６回目の判定処理及び更新処理、７回目の判定処理及び更新処理が、上記同様に順次行われる。このとき、判定処理及び更新処理の回数が増えるにつれて、ステップ値Ｐ３（ｍ）は、ステップ値Ｐ３（５）＝「８」、ステップ値Ｐ３（６）＝「４」、ステップ値Ｐ３（７）＝「２」となる。
【００５６】
そして、繰り返し制御部１１３は、判定部１１１による８回目の判定処理（ｍ＝８）を開始させる（ステップＳ２）。判定部１１１は、基準値Ｐ１（８）を用いた判定処理を実行し、カウント値Ｐ２（８）を求める。そして、繰り返し制御部１１３は、カウント値Ｐ２（８）を用いた８回目の更新処理を更新部１１２に実行させる（ステップＳ３）。すなわち、更新部１１２は、カウント値Ｐ２（８）と更新閾値Ｋ１との大小関係に基づいて、基準値Ｐ１（８）とステップ値Ｐ３（８）との加算または減算を行い、基準値Ｐ１（８）を求める。
【００５７】
繰り返し制御部１１３は、ステップ値Ｐ３（７）の値「２」の半値である「１」を、ステップ値Ｐ３（８）とする（ステップＳ４）。そして、繰り返し制御部１１３は、ステップ値Ｐ３（ｍ）が所定値「１」であるか否かを判定する（ステップＳ５）。この場合、ステップ値Ｐ３（８）は「１」であるので、繰り返し制御部１１３は、基準値Ｐ１（８）を、１１個の画素Ｅ（１）−Ｅ（１１）の濃淡中央値の近似値とする（ステップＳ６）。
【００５８】
平滑部１１５は、濃淡画像の全ての画素のそれぞれを注目画素に順次設定し、全ての画素のそれぞれの濃淡データの濃淡値を濃淡中央値に置き換えた平滑画像を生成する。
【００５９】
検査部１２は、濃淡画像と平滑画像との差分画像（または差分二値化画像）を生成し、差分画像（または差分二値化画像）に基づいて対象物の検査処理を行う。
【００６０】
結果出力部１３は、検査部１２の検査結果、検査経過などの各情報を含む画像データを作成し、表示装置２へ出力する。表示装置２は、受信した画像データに基づいて、検査部１２の検査結果、検査経過などの各情報を表示する。
【００６１】
上述のように、演算装置１ａは、ＭＡＸ演算、ＥＱ演算などのＳＩＭＤ命令を実行することによって、複数の濃淡値の濃淡中央値（の近似値）を求めることができる。演算装置１ａは、ＳＩＭＤ命令を実行することによって、複数の濃淡データ（数値データ）を１サイクルで並列的に処理することができ、中央値抽出処理に要する時間を比較例に比べて短縮できる。また、演算装置１ａは、ソート処理を行わないので、分岐命令を用いる必要がなく、中央値抽出処理に要する演算負荷を比較例に比べて低減することができる。
【００６２】
また、本実施形態の所定値Ｒは「１」に限定されない。例えば、所定値Ｒは「２」、「４」、「８」、「１６」、「３２」、「６４」、「１２８」のいずれであってもよい。この場合、所定値Ｒの各値に対応する所定回数Ｚは、「７」、「６」、「５」、「４」、「３」、「２」、「１」になる。
【００６３】
また、数値ベクトルＶ１、基準ベクトルＶ２（ｍ）、抽出ベクトルＶ３（ｍ）、判定ベクトルＶ４（ｍ）は、列ベクトルに限定されず、行ベクトルであってもよい。
【００６４】
また、フィルタ１１は、メディアンフィルタとして機能してもよい。この場合、注目画素を中心とする所定領域（矩形領域、円形領域など）の複数の画素の各濃淡値から濃淡中央値を求めて、注目画素の濃淡データに濃淡中央値を設定する。
【００６５】
図６は、検査システムＡ１の全体の概略構成を示す。検査システムＡ１は、上述の画像処理システム１、表示装置２に加えて、照明装置３、撮像装置４、搬送装置５をさらに備える。
【００６６】
検査システムＡ１は、図７に示す照明カバー９を対象物とする。照明カバー９は、照明器具のカバーであり、照明器具のＬＥＤなどの光源から発せられた光を拡散させて照明器具の外部へ照射する光拡散性を有する。照明カバー９は、例えば光拡散性を有する材料（例えば乳白色のアクリル樹脂）により形成されている。照明カバー９のカバー本体９１は、長尺の半楕円筒状の外形形状をしている。そして、カバー本体９１の表面は、カバー本体９１の幅方向（カバー本体９１の短手方向）の両端のそれぞれから中央に進むにつれて裏面側から表面側への突出量が大きくなる弧状の曲面に形成されている。
【００６７】
照明カバー９は、搬送装置５によって、照明装置３及び撮像装置４の下方を、後方から前方に向かう進行方向Ｘ１に移動し、照明装置３による照明処理、撮像装置４による撮像処理が行われる。
【００６８】
搬送装置５は、例えばベルトコンベア装置で構成されている。搬送装置５は、モータ、プーリ、コンベアベルトなどを備えており、モータの回転駆動力がプーリなどを介してコンベアベルトに伝達される。搬送装置５の上面にはコンベアベルトが露出しており、コンベアベルト上に載置された照明カバー９は、後方から前方に向かう進行方向Ｘ１に一定速度で進む。コンベアベルト上の照明カバー９の長さ方向（照明カバー９の長手方向）は前後方向に沿っており、照明カバー９の幅方向（照明カバー９の短手方向）は左右方向に沿っており、照明カバー９の曲面は上方向を向いている。
【００６９】
照明装置３は、搬送装置５の上方に配置されている。照明装置３は、照明カバー９に対して上方から照明光を照射する。すなわち、照明装置３は、検査対象となる照明カバー９の表面に照明光を照射する。なお、照明装置３の種類は、特定の種類に限定されず、バータイプの照明装置、リング照明装置などのいずれであってもよい。また、照明光の波長特定の波長に限定されない。
【００７０】
撮像装置４は、白黒の静止画を撮像するカメラであり、搬送装置５の上方に配置されている。そして、撮像装置４は、照明カバー９の表面で反射した照明光（反射光）を受光して、照明カバー９の表面を撮像する。撮像装置４が撮像した画像は、濃淡値が２５６段階に設定された濃淡画像Ｇ１である（図８参照）。撮像装置４は、濃淡画像Ｇ１の情報を画像処理システム１へ出力する。なお、撮像装置４は、カラー画像を撮像するカメラであってもよい。
【００７１】
ここで、濃淡画像Ｇ１に写っている照明カバー９の前後方向は、第１画素列Ｌ１（図２参照）が延びている方向（列方向）に沿っている。また、濃淡画像Ｇ１に写っている照明カバー９の左右方向は、第２画素列Ｌ２（図２参照）が延びている方向（行方向）に沿っている。
【００７２】
画像処理システム１では、画像取得部１ｂが濃淡画像Ｇ１の情報を受け取り、濃淡画像Ｇ１の情報を演算装置１ａへ引き渡す。演算装置１ａでは、フィルタ１１が濃淡画像Ｇ１に対して上述の平滑処理を施して、平滑画像を生成する。検査部１２は、濃淡画像Ｇ１と平滑画像との差分をとって、さらに二値化処理を施した差分二値化画像Ｇ２を生成し（図８参照）、差分二値化画像Ｇ２に基づいて照明カバー９の検査処理を行う。
【００７３】
図８に示す濃淡画像Ｇ１には、照明カバー９が写っているカバー撮像領域７１が存在する。カバー撮像領域７１には、照明カバー９の表面のキズに対応する欠陥撮像領域７２が存在している。欠陥撮像領域７２は、列方向に長いカバー撮像領域７１において、行方向に線状に形成されている。しかしながら、照明カバー９の表面が曲面であることから、カバー撮像領域７１には、列方向（照明カバー９の長手方向）に沿って濃淡値が変化するグラデーションが発生しやすい。このグラデーションは、列方向（照明カバー９の長手方向）に沿って変化する縞模様のように見える。
【００７４】
一方、平滑画像は、濃淡画像Ｇ１に平滑処理を施した濃淡画像であるので、照明カバー９の表面の線状の汚れ、キズなどの欠陥撮像領域が目立たなくなり、カバー撮像領域のグラデーションが殆ど残った画像になる。
【００７５】
そこで、検査部１２は、濃淡画像Ｇ１と平滑画像との差分をとって、さらに二値化処理を施した差分二値化画像Ｇ２を生成する。差分二値化画像Ｇ２では、カバー撮像領域８１のグラデーションを含む背景成分がほぼキャンセルされて、照明カバー９の表面のキズに対応する欠陥撮像領域８２が強調される。したがって、検査部１２は、差分二値化画像Ｇ２に基づいて照明カバー９の検査処理を行うことで、検査精度を向上させることができる。
【００７６】
濃淡画像Ｇ１に生じるグラデーションのように、列方向に沿って濃淡値が変化するグラデーションをキャンセルする場合には、フィルタ１１の中央値抽出処理における第１画素列Ｌ１を第２画素列Ｌ２より長くすることが好ましい（図２参照）。例えば、第１画素列Ｌ１を構成する画素数を１００とし、第２画素列Ｌ２を構成する画素数を３０とする。なお、第１画素列Ｌ１及び第２画素列Ｌ２を構成するそれぞれの画素の数は、特定の値に限定されない。
【００７７】
また、演算装置１ａは、ＳＩＭＤ命令を実行することができるプロセッサとして、ベクトル演算ユニットを具備するＣＰＵ（Central Processing Unit）、またはＧＰＵ（Graphics Processing Unit）を有することが好ましい。例えば、演算装置１ａのプロセッサとして、インテル（Intel Corporation）製のCore i5 3340Mを用いた場合、画素数が５Ｍｐｉｘの濃淡画像に対して、上述の中央値抽出処理を約０．２秒で完了させることができた。一方、上述の比較例のように、演算装置がソート処理用のプログラムを実行した場合、画素数が５Ｍｐｉｘの濃淡画像に対して、中央値抽出処理を完了させるのに約２０秒を要した。このように、演算装置１ａによる上述の中央値抽出処理は、ソート処理用のプログラムを実行する比較例よりも、演算負荷を低減することができ、演算時間も短縮できる。
【００７８】
（変形例）
変形例のフィルタ１１は、図９、図１０に示す処理を行う。なお、図９、図１０では、（ｍ）と表記しているが、ｍは判定処理の回数を表す回数パラメータであるので、以下では、ｍ＝定数Ｍとして説明を行う。
【００７９】
フィルタ１１の判定部１１１は、図９に示すように、数値ベクトルＶ１と基準ベクトルＶ２（Ｍ）とのＭＩＮ演算を行う。ＭＩＮ演算はＳＩＭＤ命令の一つである。この場合、ＭＩＮ演算は、数値ベクトルＶ１及び基準ベクトルＶ２（Ｍ）の互いに対応する成分の各値を比較して、各成分の最小値を抽出し、１１次元の抽出ベクトルＶ３０（Ｍ）を生成する処理である。すなわち、ＭＩＮ演算では、濃淡値Ｄ（１）と基準値Ｐ１（Ｍ）とが比較され、濃淡値Ｄ（２）と基準値Ｐ１（Ｍ）とが比較され、………、濃淡値Ｄ（１１）と基準値Ｐ１（Ｍ）とが比較される。そして、判定部１１１は、濃淡値Ｄ（１）と基準値Ｐ１（Ｍ）のいずれか小さい方、濃淡値Ｄ（２）と基準値Ｐ１（Ｍ）のいずれか小さい方、………、濃淡値Ｄ（１１）と基準値Ｐ１（Ｍ）のいずれか小さい方で１１個の成分が表された抽出ベクトルＶ３０（Ｍ）を求める。言い換えると、抽出ベクトルＶ３０（Ｍ）は、数値ベクトルＶ１と基準ベクトルＶ２（Ｍ）とから、成分毎の最小値を抽出し、成分毎の最小値で１１個の各成分が表された列ベクトルである。このとき、判定部１１１は、ＳＩＭＤ命令であるＭＩＮ演算を実行することによって、抽出ベクトルＶ３０（Ｍ）の１１個の成分の各値を１サイクルで並列的に求めることができる。なお、数値ベクトルＶ１及び基準ベクトルＶ２（Ｍ）の互いに対応する成分の各値が等しい場合、抽出ベクトルＶ３０（Ｍ）の当該成分の値は濃淡値Ｄ（ｎ）または基準値Ｐ１（Ｍ）になる。
【００８０】
そして、図１０に示すように、判定部１１１は、数値ベクトルＶ１と抽出ベクトルＶ３０（Ｍ）とのＥＱ演算を行う。ＥＱ演算は、数値ベクトルＶ１と抽出ベクトルＶ３０（Ｍ）との互いに対応する成分の各値を比較して、数値ベクトルＶ１と抽出ベクトルＶ３０（Ｍ）の成分毎に対応する各値が等しいか否かを判定し、判定ベクトルＶ４（Ｍ）はこの判定結果として求められる。判定ベクトルＶ４（Ｍ）の各成分は、数値ベクトルＶ１及び基準ベクトルＶ２（Ｍ）の互いに対応する成分の各値を比較した結果を表している。数値ベクトルＶ１の所定成分の濃淡値Ｄ（ｎ）が基準値Ｐ１（Ｍ）以下であれば、判定ベクトルＶ４（Ｍ）の所定成分の値は「１」になる。数値ベクトルＶ１の所定成分の濃淡値Ｄ（ｎ）が基準値Ｐ１（Ｍ）より大きければ、判定ベクトルＶ４（Ｍ）の所定成分の値は「０」になる。したがって、判定ベクトルＶ４（Ｍ）において値が「１」である成分の個数は、数値ベクトルＶ１において基準値Ｐ１（Ｍ）以下になる濃淡値Ｄ（ｎ）の個数になる。言い換えると、判定ベクトルＶ４（Ｍ）において値が「１」である成分の個数は、１１個の画素Ｅ（１）−Ｅ（１１）の各濃淡データのうち、濃淡値Ｄ（ｎ）が基準値Ｐ１（Ｍ）以下になる濃淡データの個数になる。
【００８１】
判定部１１１は、判定ベクトルＶ４（Ｍ）の１１個の成分のうち、値が「１」である成分の個数をカウントすることで、濃淡値Ｄ（ｎ）が基準値Ｐ１（Ｍ）以下になる濃淡データの個数をカウントできる。判定部１１１は、濃淡値Ｄ（ｎ）が基準値Ｐ１（Ｍ）以下になる濃淡データの個数を、カウントパラメータＰ２の値Ｐ２（Ｍ）に設定する。
【００８２】
更新部１１２は、カウント値Ｐ２（Ｍ）に基づいて基準パラメータＰ１の値を更新する更新処理を行う。
【００８３】
具体的に、更新部１１２は、カウント値Ｐ２（Ｍ）が更新閾値Ｋ１より大きければ、ステップ値Ｐ３（Ｍ）を基準値Ｐ１（Ｍ）から減算し、この減算値が、更新後の基準値Ｐ１（Ｍ＋１）になる。また、更新部１１２は、カウント値Ｐ２（Ｍ）が更新閾値Ｋ１より大きければ、ステップ値Ｐ３（Ｍ）を基準値Ｐ１（Ｍ）に加算し、この加算値が、更新後の基準値Ｐ１（Ｍ＋１）になる。また、更新部１１２は、更新後の基準値Ｐ１（Ｍ＋１）を求めた後、ステップ値Ｐ３（Ｍ）の値の半値、または当該半値を丸めた値を、次回のステップ値Ｐ３（Ｍ＋１）とする。
【００８４】
次に、繰り返し制御部１１３は、基準値Ｐ１（Ｍ）に代えて更新後の基準値Ｐ１（Ｍ＋１）を用いた判定処理を判定部１１１に実行させ、判定部１１１は、カウント値Ｐ２（Ｍ＋１）を求める。そして、繰り返し制御部１１３は、カウント値Ｐ２（Ｍ）に代えてカウント値Ｐ２（Ｍ＋１）を用いた上述の更新処理を更新部１１２に実行させる。すなわち、更新部１１２は、カウント値Ｐ２（Ｍ＋１）と更新閾値Ｋ１との大小関係に基づいて、基準値Ｐ１（Ｍ＋１）とステップ値Ｐ３（Ｍ＋１）との加算または減算を行い、基準値Ｐ１（Ｍ＋２）を求める。また、更新部１１２は、更新後の基準値Ｐ１（Ｍ＋２）を求めた後、ステップ値Ｐ３（Ｍ＋１）の値の半値、または当該半値を丸めた値を、次回のステップ値Ｐ３（Ｍ＋２）とする。
【００８５】
ステップ値Ｐ３（ｍ）は、上述の基準値Ｐ１（ｍ）の更新処理が行われる毎に徐々に小さくなる。そして、繰り返し制御部１１３は、ステップ値Ｐ３（ｍ）が予め決められた所定値Ｒになるまで、基準値Ｐ１（ｍ）の更新処理を繰り返させる。そして、繰り返し制御部１１３は、ステップ値Ｐ３（ｍ）が所定値Ｒになった場合、そのときの基準値Ｐ１（ｍ）を、１１個の画素Ｅ（１）−Ｅ（１１）の濃淡中央値の近似値とする。
【００８６】
（まとめ）
上述の実施形態に係る第１の態様の演算装置１ａは、２以上の整数をＮとし、前記Ｎ個の数値データ（濃淡データ）がそれぞれ表すＮ個の数値（濃淡値）の中央値（濃淡中央値）を求める演算装置である。演算装置１ａは、判定部１１１と、更新部１１２と、繰り返し制御部１１３と、を備える。判定部１１１は、Ｎ個の数値がとり得る上限値と下限値との間の値Ｐ１（ｍ）に設定されたパラメータを基準パラメータＰ１とし、Ｎ個の数値と基準値Ｐ１（ｍ）（基準パラメータＰ１の値）とのそれぞれの大小関係を判定する判定処理を行う。更新部１１２は、判定処理の判定結果に基づいて基準値Ｐ１（ｍ）を更新する更新処理を行う。繰り返し制御部１１３は、更新後の基準値Ｐ１（ｍ）の値を用いた判定処理を判定部１１１に実行させ、更新部１１２に基準値Ｐ１（ｍ）を繰り返し更新させる。そして、繰り返し制御部１１３は、所定回数Ｚ繰り返し更新した後の基準値Ｐ１（ｍ）を中央値とする。
【００８７】
したがって、演算装置１ａは、ソート処理を行わないので、分岐命令を用いる必要がなく、複数の数値の中央値（の近似値）を求める場合に演算負荷を低減することができる。
【００８８】
また、実施形態に係る第２の態様の演算装置１ａでは、第１の態様において、判定部１１１は、判定処理において、Ｎ個の数値データのうち基準値Ｐ１（ｍ）より大きい数値を表す数値データの個数をカウント値Ｐ２（ｍ）（カウントパラメータＰ２の値）として求めることが好ましい。そして、更新部１１２は、更新処理において、Ｎの半値、または当該半値を丸めた値を更新閾値Ｋ１とする。更新部１１２は、カウント値Ｐ２（ｍ）が更新閾値Ｋ１より大きければ、基準値Ｐ１（ｍ）より小さいステップ値Ｐ３（ｍ）（ステップパラメータＰ３の値）を基準値Ｐ１（ｍ）に加算して更新後の基準値Ｐ１（ｍ）を求める。更新部１１２は、カウント値Ｐ２（ｍ）が更新閾値Ｋ１より小さければ、ステップ値Ｐ３（ｍ）を基準値Ｐ１（ｍ）から減算して更新後の基準値Ｐ１（ｍ）を求める。
【００８９】
したがって、演算装置１ａは、複数の数値の中央値（の近似値）を求める場合に演算負荷を低減することができる。
【００９０】
また、実施形態に係る第３の態様の演算装置１ａは、第２の態様において、初期値記憶部１１４をさらに備えることが好ましい。初期値記憶部１１４は、Ｎ個の数値がとり得る上限値と下限値との和の半値、または当該半値を丸めた値を、初期基準値Ｐ１（１）（基準パラメータＰ１の初期値）として記憶している。初期ステップ値Ｐ３（１）（ステップパラメータＰ３の初期値）は、初期基準値Ｐ１（１）から前記下限値を減算した値の半値、または当該半値を丸めた値である。判定部１１１は、１回目の判定処理において、Ｎ個の数値データのうち初期基準値Ｐ１（１）より大きい数値を表す数値データの個数をカウント値Ｐ２（ｍ）として求める。更新部１１２は、１回目の更新処理において、カウント値Ｐ２（ｍ）が更新閾値Ｋ１より大きければ、初期ステップ値Ｐ３（１）を初期基準値Ｐ１（１）に加算して更新後の基準値Ｐ１（２）を求める。また、更新部１１２は、カウント値Ｐ２（ｍ）が更新閾値Ｋ１より小さければ、初期ステップ値Ｐ３（１）を初期基準値Ｐ１（１）から減算して更新後の基準値Ｐ１（２）を求める。更新部１１２は、２回目以降の更新処理におけるステップ値Ｐ３（ｍ）として、前回の更新処理におけるステップ値Ｐ３（ｍ）の半値、または当該半値を丸めた値を用いる。
【００９１】
したがって、初期基準値Ｐ１（１）及び初期ステップ値Ｐ３（１）は容易に求められる。この結果、演算装置１ａは、初期基準値Ｐ１（１）を予め記憶することで、複数の数値の中央値（の近似値）を求める場合に演算負荷をより低減することができる。
【００９２】
また、実施形態に係る第４の態様の演算装置１ａは、第２または第３の態様において、判定部１１１は、Ｎ個の数値でＮ個の各成分が表された数値ベクトルＶ１と基準値Ｐ１（ｍ）でＮ個の各成分が表された基準ベクトルＶ２（ｍ）とから、成分毎の最大値を抽出する。そして、判定部１１１は、成分毎の最大値でＮ個の各成分が表された抽出ベクトルＶ３（ｍ）を求めることが好ましい。さらに、判定部１１１は、数値ベクトルＶ１と抽出ベクトルＶ３（ｍ）との互いに対応する成分同士を比較する。判定部１１１は、Ｎ個の各成分が、成分同士の各値が等しい場合に第１値で表され、成分同士の各値が異なる場合に第２値で表された判定ベクトルＶ４（ｍ）を求める。そして、判定部１１１は、判定ベクトルＶ４（ｍ）において第１値で表された成分の数をカウント値Ｐ２（ｍ）として求める。
【００９３】
したがって、演算装置１ａは、ＳＩＭＤ演算を利用して中央値を求めることができ、複数の数値の中央値（の近似値）を求める場合に演算負荷及び演算時間をさらに低減することができる。
【００９４】
また、実施形態に係る第５の態様の演算装置１ａでは、第１の態様において、判定部１１１は、判定処理において、Ｎ個の数値データのうち基準値Ｐ１（ｍ）より小さい数値を表す数値データの個数をカウント値Ｐ２（ｍ）（カウントパラメータＰ２の値）として求めることが好ましい。そして、更新部１１２は、更新処理において、Ｎの半値、または当該半値を丸めた値を更新閾値Ｋ１とする。更新部１１２は、カウント値Ｐ２（ｍ）が更新閾値Ｋ１より大きければ、基準値Ｐ１（ｍ）より小さいステップ値Ｐ３（ｍ）（ステップパラメータＰ３の値）を基準値Ｐ１（ｍ）から減算して更新後の基準値Ｐ１（ｍ）を求める。また、更新部１１２は、カウント値Ｐ２（ｍ）が更新閾値Ｋ１より小さければ、ステップ値Ｐ３（ｍ）を基準値Ｐ１（ｍ）に加算して更新後の基準値Ｐ１（ｍ）を求める。
【００９５】
したがって、演算装置１ａは、複数の数値の中央値（の近似値）を求める場合に演算負荷を低減することができる。
【００９６】
また、実施形態に係る第６の態様の演算装置１ａは、第５の態様において、初期値記憶部１１４をさらに備えることが好ましい。初期値記憶部１１４は、Ｎ個の数値がとり得る上限値と下限値との和の半値、または当該半値を丸めた値を、初期基準値Ｐ１（１）（基準パラメータＰ１の初期値）として記憶している。初期ステップ値Ｐ３（１）（ステップパラメータＰ３の初期値）は、初期基準値Ｐ１（１）から前記下限値を減算した値の半値、または当該半値を丸めた値である。判定部１１１は、１回目の判定処理において、Ｎ個の数値データのうち初期基準値Ｐ１（１）より小さい数値を表す数値データの個数をカウント値Ｐ２（ｍ）として求める。更新部１１２は、１回目の更新処理において、カウント値Ｐ２（ｍ）が更新閾値Ｋ１より大きければ、初期ステップ値Ｐ３（１）を初期基準値Ｐ１（１）から減算して更新後の基準値Ｐ１（２）を求める。また、更新部１１２は、カウント値Ｐ２（ｍ）が更新閾値Ｋ１より小さければ、初期ステップ値Ｐ３（１）を初期基準値Ｐ１（１）に加算して更新後の基準値Ｐ１（２）を求める。更新部１１２は、２回目以降の更新処理におけるステップ値Ｐ３（ｍ）として、前回の更新処理におけるステップ値Ｐ３（ｍ）の半値、または当該半値を丸めた値を用いる。
【００９７】
したがって、初期基準値Ｐ１（１）及び初期ステップ値Ｐ３（１）は容易に求められる。この結果、演算装置１ａは、初期基準値Ｐ１（１）を予め記憶することで、複数の数値の中央値（の近似値）を求める場合に演算負荷をより低減することができる。
【００９８】
また、実施形態に係る第７の態様の演算装置１ａは、第５または第６の態様において、判定部１１１は、Ｎ個の数値でＮ個の各成分が表された数値ベクトルＶ１と基準値Ｐ１（ｍ）でＮ個の各成分が表された基準ベクトルＶ２（ｍ）とから、成分毎の最小値を抽出する。そして、判定部１１１は、成分毎の最小値でＮ個の各成分が表された抽出ベクトルＶ３（ｍ）を求めることが好ましい。さらに、判定部１１１は、数値ベクトルＶ１と抽出ベクトルＶ３（ｍ）との互いに対応する成分同士を比較する。判定部１１１は、Ｎ個の各成分が、成分同士の各値が等しい場合に第１値で表され、成分同士の各値が異なる場合に第２値で表された判定ベクトルＶ４（ｍ）を求める。そして、判定部１１１は、判定ベクトルＶ４（ｍ）において第１値で表された成分の数をカウント値Ｐ２（ｍ）として求める。
【００９９】
したがって、演算装置１ａは、ＳＩＭＤ演算を利用して中央値を求めることができ、複数の数値の中央値（の近似値）を求める場合に演算負荷及び演算時間をさらに低減することができる。
【０１００】
また、実施形態に係る第８の態様の画像処理システム１は、第１乃至第７の態様のいずれか一つの演算装置１ａと、濃淡画像Ｇ１の情報を受け取る画像取得部１ｂと、を備える。Ｎ個の数値は、濃淡画像Ｇ１の複数の画素のうち、注目画素Ｅ（１）を含む所定領域のＮ個の画素Ｅ（１）−Ｅ（１１）のそれぞれの濃淡値Ｄ（１）−Ｄ（１１）である。演算装置１ａは、繰り返し制御部１１３が求めた濃淡中央値（中央値）を注目画素Ｅ（１）の濃淡値に設定することで、濃淡画像Ｇ１の平滑処理を行う。
【０１０１】
したがって、画像処理システム１は、濃淡画像Ｇ１の平滑処理を行う際に、ソート処理を行わないので、分岐命令を用いる必要がなく、複数の数値の中央値（の近似値）を求める演算処理に要する演算負荷を低減することができる。
【０１０２】
また、実施形態に係る第９の態様の画像処理システム１は、第８の態様において、演算装置１ａは、濃淡画像Ｇ１の平滑処理を行うメディアンフィルタとして機能することが好ましい。
【０１０３】
したがって、画像処理システム１は、濃淡画像Ｇ１に写っている線状の汚れ、キズなどを目立たなくして、濃淡画像Ｇ１に写っている汚れ、キズなどの背景（グラデーションなど）を主に残した平滑画像を生成できる。
【０１０４】
また、実施形態に係る第１０の態様の演算方法は、２以上の整数をＮとし、前記Ｎ個の数値データ（濃淡データ）がそれぞれ表すＮ個の数値（濃淡値）の中央値（濃淡中央値）を求める演算方法である。演算方法は、判定ステップ（ステップＳ２）と、更新ステップ（ステップＳ３）と、制御ステップ（ステップＳ５，Ｓ６）と、を備える。判定ステップは、Ｎ個の数値がとり得る上限値と下限値との間の値Ｐ１（ｍ）に設定されたパラメータを基準パラメータＰ１とし、Ｎ個の数値と基準値Ｐ１（ｍ）（基準パラメータＰ１の値）とのそれぞれの大小関係を判定する判定処理を行う。更新ステップは、判定処理の判定結果に基づいて基準値Ｐ１（ｍ）を更新する更新処理を行う。制御ステップは、更新後の基準値Ｐ１（ｍ）の値を用いた判定処理を判定ステップに実行させ、更新ステップに基準値Ｐ１（ｍ）を繰り返し更新させる。そして、制御ステップは、所定回数Ｚ繰り返し更新した後の基準値Ｐ１（ｍ）を中央値とする。
【０１０５】
したがって、演算方法は、ソート処理を行わないので、分岐命令を用いる必要がなく、複数の数値の中央値（の近似値）を求める場合に演算負荷を低減することができる。
【０１０６】
また、実施形態に係る第１１の態様のプログラムは、コンピュータシステムに、第１０の態様の演算方法を実行させる。
【０１０７】
したがって、プログラムを実行したコンピュータシステムは、ソート処理を行わないので、分岐命令を用いる必要がなく、複数の数値の中央値（の近似値）を求める場合に演算負荷を低減することができる。
【０１０８】
なお、上述の実施の形態は本発明の一例である。このため、本発明は、上述の実施形態に限定されることはなく、この実施の形態以外であっても、本発明に係る技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更が可能であることは勿論である。
【符号の説明】
【０１０９】
Ａ１  検査システム
１  画像処理システム
１ａ  演算装置
１ｂ  画像取得部
１１  フィルタ
１１１  判定部
１１２  更新部
１１３  繰り返し制御部
１１４  初期値記憶部
Ｐ１（ｍ）  基準値（基準パラメータＰ１の値）
Ｐ１（１）  初期基準値（基準パラメータＰ１の初期値）
Ｐ２（ｍ）  カウント値（カウントパラメータＰ２の値）
Ｐ３（ｍ）  ステップ値（ステップパラメータＰ３の値）
Ｐ３（１）  初期ステップ値（ステップパラメータＰ３の初期値）
Ｋ１  更新閾値
Ｖ１  数値ベクトル
Ｖ２（ｍ）  基準ベクトル
Ｖ３（ｍ）  抽出ベクトル
Ｖ４（ｍ）  判定ベクトル
Ｇ１  濃淡画像
Ｅ（１）−Ｅ（１１）  画素
Ｅ（１）  注目画素
Ｄ（１）−Ｄ（１１）  濃淡値
【図１】
2019153001.tif 000003
【図２】
2019153001.tif 000004
【図３】
2019153001.tif 000005
【図４】
2019153001.tif 000006
【図５】
2019153001.tif 000007
【図６】
2019153001.tif 000008
【図７】
2019153001.tif 000009
【図８】
2019153001.tif 000010
【図９】
2019153001.tif 000011
【図１０】
2019153001.tif 000012