(57)【要約】 【課題】  高い精度で高速に処理を行なうことができるメディアンフィルタおよびメディアンフィルタプログラムを提供する。【解決手段】  時系列的に順次に入力されたＮ個のデータを、入力順を示すインデックスに対応づけて昇順に並換手段１００＿１１で並べ換え、次いで中央値抽出手段１００＿１２で、それらＮ個のデータのうちの中央に並んだデータを中央値として抽出し、さらに入力更新手段１００＿１３で、Ｎ個のデータのうちの、上記インデックスに従って最も古い入力データを消去して新たな１個のデータを入力する。【選択図】  図４
2007179183.tif 000002
【特許請求の範囲】
【請求項１】
一次元的に配列された一連のデータのうちの、順次に１データずつ移動する、連続するＮ個のデータの中央値を順次抽出して出力するメディアンフィルタにおいて、
時系列的に順次に入力されたＮ個のデータを、入力順を示すインデックスに対応づけて昇順に並べ換える並換手段と、
前記並換手段により昇順に並べられたＮ個のデータのうちの中央に並んだデータを中央値として抽出する中央値抽出手段と、
前記Ｎ個のデータのうちの、前記インデックスに従って最も古い入力データを消去して新たな１個のデータを入力する入力更新手段とを備えたことを特徴とするメディアンフィルタ。
【請求項２】
前記並換手段は、新たに入力された１個のデータの配置位置を二分法に従って検索するものであることを特徴とする請求項１記載のメディアンフィルタ。
【請求項３】
二次元的に配列されたデータのうちの所定の行方向に順次に１データずつ移動する、該行方向にＮ１個並ぶとともに列方向にＮ２個並ぶＮ１×Ｎ２個のデータの中央値を順次に抽出して出力するメディアンフィルタにおいて、
行方向について時系列的に順次に入力されたＮ１×Ｎ２個のデータを、入力順の列を示すインデックスに対応づけて、一次元的に昇順に並べ換える並換手段と、
前記並換手段により昇順に並べられたＮ１×Ｎ２個のデータのうちの中央に並んだデータを中央値として抽出する中央値抽出手段と、
前記Ｎ１×Ｎ２個のデータのうちの、前記インデックスに従って最も古い入力列のＮ２個のデータを消去して新たな列のＮ２個のデータを入力する入力更新手段とを備えたことを特徴とするメディアンフィルタ。
【請求項４】
前記並換手段は、新たに入力したＮ２個のデータの配置位置を二分法に従って検索するものであることを特徴とする請求項３記載のメディアンフィルタ。
【請求項５】
プログラムを実行する演算処理装置内で実行され、該演算処理装置を、一次元的に配列された一連のデータのうちの、順次に１データずつ移動する、連続するＮ個のデータの中央値を順次抽出して出力するメディアンフィルタとして動作させるメディアンフィルタプログラムであって、
前記演算処理装置を、
時系列的に順次に入力されたＮ個のデータを、入力順を示すインデックスに対応づけて昇順に並べ換える並換手段と、
前記並換手段により昇順に並べられたＮ個のデータのうちの中央に並んだデータを中央値として抽出する中央値抽出手段と、
前記Ｎ個のデータのうちの、前記インデックスに従って最も古い入力データを消去して新たな１個のデータを入力する入力更新手段とを備えたメディアンフィルタとして動作させることを特徴とするメディアンフィルタプログラム。
【請求項６】
前記並換手段は、新たに入力された１個のデータの配置位置を二分法に従って検索するものであることを特徴とする請求項５記載のメディアンフィルタプログラム。
【請求項７】
プログラムを実行する演算処理装置内で実行され、該演算処理装置を、二次元的に配列されたデータのうちの所定の行方向に順次に１データずつ移動する、該行方向にＮ１個並ぶとともに列方向にＮ２個並ぶＮ１×Ｎ２個のデータの中央値を順次に抽出して出力するメディアンフィルタとして動作させるメディアンフィルタプログラムであって、
前記演算処理装置を、
行方向について時系列的に順次に入力されたＮ１×Ｎ２個のデータを、入力順の列を示すインデックスに対応づけて、一次元的に昇順に並べ換える並換手段と、
前記並換手段により昇順に並べられたＮ１×Ｎ２個のデータのうちの中央に並んだデータを中央値として抽出する中央値抽出手段と、
前記Ｎ１×Ｎ２個のデータのうちの、前記インデックスに従って最も古い入力列のＮ２個のデータを消去して新たな列のＮ２個のデータを入力する入力更新手段とを備えたメディアンフィルタとして動作させることを特徴とするメディアンフィルタプログラム。
【請求項８】
前記並換手段は、新たに入力したＮ２個のデータの配置位置を二分法に従って検索するものであることを特徴とする請求項７記載のメディアンフィルタプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、配列されたデータの中央値を順次に抽出して出力するメディアンフィルタ、およびプログラムを実行する演算処理装置をメディアンフィルタとして動作させるメディアンフィルタプログラムに関する。
【背景技術】
【０００２】
従来より、画像信号に含まれる不要な信号やインパルス性雑音による画像劣化を抑えるために、配列されたデータの中央値を順次に抽出して出力するメディアンフィルタが知られている。このメディアンフィルタでは、画像を構成する画素のうちの対象画素およびその対象画素の近傍内における画素データ（濃度値）を読み取り、読み取った濃度値を昇順あるいは降順に並べ換えて中央値を算出し、この中央値を対象画素の新しい濃度値として割り当てるということが行なわれる。
【０００３】
メディアンフィルタの技術として、例えば、各画素の濃度値を一次元的に配列し、一次元的に配列された中心位置における濃度値と、その中心位置の対称位置における濃度値とを比較し、中央値が常に中心位置になるように交換する処理を画素数分繰り返すことで、中央値を短時間で求める技術が提案されている（特許文献１参照）。
【０００４】
また、所定の画素数を対象としたメディアン抽出テーブルを作成し、このメディアン抽出テーブルから中央値を求めるとともにそのテーブルを更新する処理を繰り返し実行することにより処理時間を短縮する技術が提案されている（特許文献２参照）。
【０００５】
さらに、横方向および縦方向の昇順ソーティングを順次行なって対角方向について最大値および最小値を求め、この対角方向と交差する方向の対角線方向で昇順ソーティングを行なうことにより、ソーティング処理を高速化する技術が提案されている（特許文献３参照）。
【０００６】
また、各画素を中心とする３×３サイズの画像領域（ウインドウ）内の、９個の画素値の中央値を求めるにあたり、大小順にソートする処理を３段階のステップに分けて行なうことにより、処理速度を高める技術が提案されている（特許文献４参照）。
【０００７】
さらに、５点以上の多点信号について中央値を求めるにあたり、５点未満の信号について中央値を求め、この中央値に対してさらに中央値を求めることにより、処理速度を高める技術が提案されている（特許文献５参照）。
【０００８】
また、全画素に対して濃度値を平均処理した後、近傍との分散値を算出し、その分散値が閾値よりも大きい場合のみメディアンフィルタ処理を行なうことにより、処理速度を高める技術が提案されている（特許文献６参照）。
【０００９】
さらに、隣接する２つのウインドウに共通な２組の中央値の比較を行なうことにより、２つのウインドウの処理を同時に行なって、処理速度を高める技術が提案されている（特許文献７参照）。
【特許文献１】特開平５−１２４３７号公報
【特許文献２】特開平５−２３３８０２号公報
【特許文献３】特開平５−３００３７２号公報
【特許文献４】特開平６−２７４６１７号公報
【特許文献５】特開平７−３３６１９２号公報
【特許文献６】特開平８−２０２８７１号公報
【特許文献７】特開２００４−２２００９４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述した特許文献１に提案された、一次元的に配列された中心位置における濃度値とその中心位置の対称位置における濃度値とを比較して中央値が常に中心位置になるように交換する処理を繰り返す技術では、中央値を短時間で求めることができるものの、おおよその中央値しか求めることができず、従ってメディアンフィルタ処理における精度が低いという問題がある。
【００１１】
また、特許文献２に提案された、メディアン抽出テーブルを作成して中央値を求めることにより処理時間を短縮する技術では、メディアン抽出テーブルの作成にあたり行なわれる演算処理に起因して数値の精度が低下するため、やはりメディアンフィルタ処理における精度が低いという問題がある。
【００１２】
さらに、特許文献３に提案された技術では、横方向，縦方向，対角線方向の昇順ソーティングにあたり、１画素について合計２１ステップが必要とされる。このため、処理時間の短縮に欠けるという問題がある。
【００１３】
また、特許文献４に提案された技術は、大小順にソートする処理を３段階のステップに分けて行なうものであるため、処理精度が低いという問題がある。
【００１４】
さらに、特許文献５に提案された技術は、５点未満の信号について中央値を求め、この中央値に対してさらに中央値を求める処理を行なうものであるため、おおよその中央値しか求めることができず、従ってメディアンフィルタ処理における精度が低いという問題がある。
【００１５】
また、特許文献６に提案された技術は、全画素に対して濃度値を平均処理して算出した分散値が閾値よりも大きい場合のみメディアンフィルタ処理を行なうものである。即ち、処理時間を短縮するために一部の画素についてのみ中央値を求めるものである。従って、全画素に対して中央値を求める場合と比較し、精度が低いという問題がある。
【００１６】
さらに、特許文献７に提案された技術は、隣接する２つのウインドウに共通な２組の中央値の比較を行なうことにより、それら２つのウインドウの処理を同時に行なうものであるため、やはり精度が低いという問題がある。
【００１７】
本発明は、上記事情に鑑み、高い精度で高速に処理を行なうことができるメディアンフィルタおよびメディアンフィルタプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成する本発明のメディアンフィルタのうちの第１のメディアンフィルタは、一次元的に配列された一連のデータのうちの、順次に１データずつ移動する、連続するＮ個のデータの中央値を順次抽出して出力するメディアンフィルタにおいて、
時系列的に順次に入力されたＮ個のデータを、入力順を示すインデックスに対応づけて昇順に並べ換える並換手段と、
上記並換手段により昇順に並べられたＮ個のデータのうちの中央に並んだデータを中央値として抽出する中央値抽出手段と、
上記Ｎ個のデータのうちの、上記インデックスに従って最も古い入力データを消去して新たな１個のデータを入力する入力更新手段とを備えたことを特徴とする。
【００１９】
本発明の第１のメディアンフィルタは、入力順を示すインデックスに対応づけて昇順に並べられたＮ個のデータのうちの中央に並んだデータを中央値として抽出するとともに、上記Ｎ個のデータのうちの、上記インデックスに従って最も古い入力データを消去して新たな１個のデータを入力するものである。このため、Ｎ個のデータのうちの、最も古い入力データを除く残りの入力データの並び換えは既に終了していることとなり、新たに入力された１個のデータのみを考慮した並び換えを行なえば済む。従って、並び換えの回数が少なくて済み、中央値の抽出を高精度に且つ高速に行なうことができる。
【００２０】
ここで、本発明の第１のメディアンフィルタにおける上記並換手段は、新たに入力された１個のデータの配置位置を二分法に従って検索するものであることが好ましい。
【００２１】
このようにすると、新たに入力された１個のデータのみを考慮した並び換えを効率よく行なうことができ、従ってメディアンフィルタ処理に要する時間をより短縮することができる。
【００２２】
また、上記目的を達成する本発明のメディアンフィルタのうちの第２のメディアンフィルタは、二次元的に配列されたデータのうちの所定の行方向に順次に１データずつ移動する、その行方向にＮ１個並ぶとともに列方向にＮ２個並ぶＮ１×Ｎ２個のデータの中央値を順次に抽出して出力するメディアンフィルタにおいて、
行方向について時系列的に順次に入力されたＮ１×Ｎ２個のデータを、入力順の列を示すインデックスに対応づけて、一次元的に昇順に並べ換える並換手段と、
上記並換手段により昇順に並べられたＮ１×Ｎ２個のデータのうちの中央に並んだデータを中央値として抽出する中央値抽出手段と、
上記Ｎ１×Ｎ２個のデータのうちの、上記インデックスに従って最も古い入力列のＮ２個のデータを消去して新たな列のＮ２個のデータを入力する入力更新手段とを備えたことを特徴とする。
【００２３】
本発明の第２のメディアンフィルタは、行方向について時系列的に順次に入力されたＮ１×Ｎ２個のデータを、入力順の列を示すインデックスに対応づけて一次元的に昇順に並べられたＮ１×Ｎ２個のデータのうちの中央に並んだデータを中央値として抽出するとともに、上記Ｎ１×Ｎ２個のデータのうちの、上記インデックスに従って最も古い入力列のＮ２個のデータを消去して新たな列のＮ２個のデータを入力するものである。このため、Ｎ１×Ｎ２個のデータのうちの、最も古い入力列のＮ２個のデータを除く残りの入力データの並び換えは既に終了していることとなり、新たに入力された列のＮ２個のデータのみを考慮した並び換えを行なえば済む。従って、並び換えの回数が少なくて済み、中央値の抽出を高精度に且つ高速に行なうことができる。
【００２４】
ここで、本発明の第２のメディアンフィルタにおける上記並換手段は、新たに入力したＮ２個のデータの配置位置を二分法に従って検索するものであることが好ましい。
【００２５】
このようにすると、新たに入力したＮ２個のデータのみを考慮した並び換えを効率よく行なうことができ、従ってメディアンフィルタ処理に要する時間をより短縮することができる。
【００２６】
さらに、上記目的を達成する本発明のメディアンフィルタプログラムのうちの第１のメディアンフィルタプログラムは、プログラムを実行する演算処理装置内で実行され、その演算処理装置を、一次元的に配列された一連のデータのうちの、順次に１データずつ移動する、連続するＮ個のデータの中央値を順次抽出して出力するメディアンフィルタとして動作させるメディアンフィルタプログラムであって、
上記演算処理装置を、
時系列的に順次に入力されたＮ個のデータを、入力順を示すインデックスに対応づけて昇順に並べ換える並換手段と、
上記並換手段により昇順に並べられたＮ個のデータのうちの中央に並んだデータを中央値として抽出する中央値抽出手段と、
上記Ｎ個のデータのうちの、上記インデックスに従って最も古い入力データを消去して新たな１個のデータを入力する入力更新手段とを備えたメディアンフィルタとして動作させることを特徴とする。
【００２７】
ここで、本発明の第１のメディアンフィルタプログラムにおける上記並換手段は、新たに入力された１個のデータの配置位置を二分法に従って検索するものであることが好ましい。
【００２８】
本発明の第１のメディアンフィルタプログラムは、上記本発明の第１のメディアンフィルタとして動作させるメディアンフィルタプログラムであるため、時系列的に順次に入力されたＮ個のデータの並び換えの回数が少なくて済み、中央値の抽出を高精度に且つ高速に行なうことができる。従って、メディアンフィルタ処理を高精度に且つ高速に行なうことができる。
【００２９】
また、上記目的を達成する本発明のメディアンフィルタプログラムのうちの第２のメディアンフィルタプログラムは、プログラムを実行する演算処理装置内で実行され、その演算処理装置を、二次元的に配列されたデータのうちの所定の行方向に順次に１データずつ移動する、その行方向にＮ１個並ぶとともに列方向にＮ２個並ぶＮ１×Ｎ２個のデータの中央値を順次に抽出して出力するメディアンフィルタとして動作させるメディアンフィルタプログラムであって、
上記演算処理装置を、
行方向について時系列的に順次に入力されたＮ１×Ｎ２個のデータを、入力順の列を示すインデックスに対応づけて、一次元的に昇順に並べ換える並換手段と、
上記並換手段により昇順に並べられたＮ１×Ｎ２個のデータのうちの中央に並んだデータを中央値として抽出する中央値抽出手段と、
上記Ｎ１×Ｎ２個のデータのうちの、上記インデックスに従って最も古い入力列のＮ２個のデータを消去して新たな列のＮ２個のデータを入力する入力更新手段とを備えたメディアンフィルタとして動作させることを特徴とする。
【００３０】
ここで、本発明の第２のメディアンフィルタプログラムにおける上記並換手段は、新たに入力したＮ２個のデータの配置位置を二分法に従って検索するものであることが好ましい。
【００３１】
本発明の第２のメディアンフィルタプログラムは、上記本発明の第２のメディアンフィルタとして動作させるメディアンフィルタプログラムであるため、時系列的に順次に入力されたＮ１×Ｎ２個のデータの並び換えの回数が少なくて済み、中央値の抽出を高精度に且つ高速に行なうことができる。従って、メディアンフィルタ処理を高精度に且つ高速に行なうことができる。
【発明の効果】
【００３２】
本発明によれば、高い精度で高速に処理を行なうことができるメディアンフィルタおよびメディアンフィルタプログラムを提供することができる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の実施の形態について説明する。
【００３４】
図１は、本発明の第１のメディアンフィルタの一実施形態が実現される演算処理装置を示す概要図である。
【００３５】
この図１には、演算処理装置として、一般にワークステーションまたはパーソナルコンピュータと呼ばれるコンピュータ１００が示されており、このコンピュータ１００により本発明の第１のメディアンフィルタの一実施形態が実現される。先ず、このコンピュータ１００のハードウェア構成について説明する。
【００３６】
このコンピュータ１００は、ＣＰＵ（中央処理装置）、ＲＡＭ（ランダムアクセスメモリ）、ハードディスク、通信用ボード等が内蔵された本体部１０１、その本体部１０１からの指示により表示画面１０２ａ上に画像や文字列を表示する表示部１０２、このコンピュータ１００に利用者の指示を入力するためのキーボード１０３、表示画面１０２ａ上の任意の位置を指定することにより、その指定時にその位置に表示されていたアイコン等に応じた指示を入力するマウス１０４を備えている。
【００３７】
本体部１０１は、さらに外観上、フレキシブルディスク（図示せず）、ＣＤ―ＲＯＭ７００が装填されるフレキシブルディスク装填口１０１ａ、ＣＤ―ＲＯＭ装填口１０１ｂを有しており、それらの内部には、それらの装填口１０１ａ,１０１ｂから装填されたフレキシブルディスクやＣＤ−ＲＯＭ７００をドライブしてアクセスするフレキシブルディスクドライブやＣＤ−ＲＯＭドライブも内蔵されている。
【００３８】
図２は、図１に示した外観を有するコンピュータのハードウェア構成図である。
【００３９】
図２のハードウェア構成図には、ＣＰＵ１１１、ＲＡＭ１１２、ハードディスクコントローラ１１３、フレキシブルディスクドライブ１１４、ＣＤ―ＲＯＭドライブ１１５、マウスコントローラ１１６、キーボードコントローラ１１７、ディスプレイコントローラ１１８、および通信用ボード１１９が示されており、それらはバス１１０で相互に接続されている。
【００４０】
フレキシブルディスクドライブ１１４、ＣＤ―ＲＯＭドライブ１１５は、図１を参照して説明したように、それぞれフレキシブルディスク装填口１０１ａおよびＣＤ−ＲＯＭ装填口１０１ｂから装填されたフレキシブルディスク５００、ＣＤ−ＲＯＭ７００をアクセスするものである。通信用ボード１１９は通信回線６００に接続される。
【００４１】
また、図２には、ハードディスクコントローラ１１３によりアクセスされるハードディスク１２０、マウスコントローラ１１６により制御されるマウス１０４、キーボードコントローラ１１７により制御されるキーボード１０３、およびディスクプレイコントローラ１１８により制御される表示部１０２（ＣＲＴディスプレイ）も示されている。
【００４２】
図３は、図１に示す演算処理装置であるコンピュータを、本発明の第１のメディアンフィルタの一実施形態として動作させる本発明の第１のメディアンフィルタプログラムの一実施形態が記憶されたＣＤ−ＲＯＭを示す概念図である。
【００４３】
図３に示すＣＤ−ＲＯＭ７００には、メディアンフィルタプログラムログラム７１０が記憶されており、このメディアンフィルタプログラムログラム７１０は、並換ルーチン部７１１、中央値抽出ルーチン部７１２、および入力更新ルーチン部７１３で構成されている。メディアンフィルタプログラムログラム７１０の各部の細部については、本発明の第１のメディアンフィルタの一実施形態の各部の作用とあわせて説明する。
【００４４】
図４は、本発明の第１のメディアンフィルタの一実施形態の構成を示す図である。
【００４５】
図４に示すメディアンフィルタ１００＿１は、一次元的に配列された一連のデータのうちの、順次に１データずつ移動する、連続するＮ個のデータの中央値を順次抽出して出力するメディアンフィルタである。このメディアンフィルタ１００＿１には、並換手段１００＿１１と、中央値抽出手段１００＿１２と、入力変更手段１００＿１３とが備えられている。
【００４６】
並換手段１００＿１１は、図３に示す並換ルーチン部７１１のプログラムの作用を受けて動作し、時系列的に順次に入力されたＮ個のデータを、入力順を示すインデックスに対応づけて昇順に並べ換える。詳細には、この並換手段１００＿１１は、新たに入力された１個のデータの配置位置を二分法に従って検索する。
【００４７】
中央値抽出手段１００＿１２は、図３に示す中央値抽出ルーチン部７１２のプログラムの作用を受けて動作し、並換手段１００＿１１により昇順に並べられたＮ個のデータのうちの中央に並んだデータを中央値として抽出する。
【００４８】
入力更新手段１００＿１３は、図３に示す入力更新ルーチン部７１３のプログラムの作用を受けて動作し、Ｎ個のデータのうちの、上記インデックスに従って最も古い入力データを消去して新たな１個のデータを入力する。
【００４９】
図５は、図４に示すメディアンフィルタにおいて実行される処理ルーチンのフローチャートである。
【００５０】
この処理ルーチンでは、一次元的に配列された一連のデータのうちの、順次に１データずつ移動する、連続する７個のデータ（１×７サイズのデータ）の中央値を順次抽出して出力する処理が実行される。
【００５１】
先ず、ステップＳ１において、７個のリスト構造体を作り、それぞれを連結する。尚、リスト構造体を採用しているのは、並び換えをポインタの切り換えで迅速に行なうためである。
【００５２】
次に、ステップＳ２において、６個のデータ（２８，４２，１４，５８，２１，６８）にインデックス番号（０，１，２，３，４，５）を付してリスト構造体に格納する。
【００５３】
さらに、ステップＳ３に進み、リスト構造体に格納してあるデータをソートする。これにより、データが昇順（１４，２１，２８，４２，５８，６８）に並び換えられる。
【００５４】
次に、ステップＳ４において、７個目のデータ（２５）をリスト構造体の適切な位置に追加する。
【００５５】
さらに、ステップＳ５において、リスト構造体の中央にある値（ここでは２８）を取り出し、これをメディアン値（中央値）とし、元データと置き換える。
【００５６】
次いで、ステップＳ６において、リスト構造体から古いデータ（インデックス番号０のデータ）を削除して、その構造体を最後尾に移動させる。
【００５７】
さらに、ステップＳ７において、インデックス番号を下げる。
【００５８】
次に、ステップＳ８において、上述した処理を１行の終わりまで繰り返すために、最終列か否かが判定される。最終列でないと判定された場合は隣のデータを読み出してステップＳ４に戻る。一方、最終列であると判定された場合はステップＳ９に進む。
【００５９】
ステップＳ９では、最終行か否かが判定される。最終行でないと判定された場合は次の行を処理するためにステップＳ２に戻る。一方、最終行であると判定された場合は、この処理ルーチンを終了する。
【００６０】
図６は、１×ｎサイズからなるデータの演算範囲の移動概念図である。
【００６１】
図６には、１行×ｎ列からなる元データが示されている。ここでは、この元データの斜線部がメディアン処理する範囲であるものとする。
【００６２】
また、図６には、演算範囲が移動する様子が示されている。尚、この演算範囲における斜線部は中央値を示す。隣接するブロックの６個分（重複要素）はすでに並び換えが済んでいるため、新たなデータの追加だけで常に並び順が保たれる。このため、並び換えの回数が減少し、中央値の取り出しを高速に行なうことができる。
【００６３】
図７は、リスト構造体に格納されたデータが配列部に格納される様子を示す図である。
【００６４】
図７には、リスト構造体に格納された、インデックス番号（０，１，２，３，４，５）が付されたデータ（２８，４２，１４，５８，２１，６８）が示されている。これらのデータは一旦配列部１１２ａに格納される。配列部１１２ａとしては、ＲＡＭ１１２の作業領域が用いられる。リスト構造体に格納されているデータをソートするにあたり、このような配列部１１２ａを使用することにより、ソート処理を効率よく行なうことができる。尚、データの並び換えを行なうときは、配列部１１２ａに格納されたデータとリスト構造体のポインタ切り換えが同時に行なわれる。
【００６５】
図８は、配列部の中央にあるデータを取り出す様子を示す図である。
【００６６】
図８に示す配列部１１２ａには、昇順に並び換えられたデータ１４，２１，２５，２８，４２，５８，６８が格納されている。ここで、配列部１１２ａの中央にあるデータ２８が中央値として取り出される。
【００６７】
図９は、画像データをメディアン処理する様子を示す概念図である。
【００６８】
図９に示す画像データは、１×ｎサイズからなる画像データである。この画像データのうちのメディアン処理する範囲内のデータが、演算バッファにコピーされる。さらに、演算バッファで中央値が算出され、その後メディアンバッファにコピーされる。メディアンバッファにコピーされたデータは、そのメディアンバッファで遅延されて、画像データの所定の位置に設定される。尚、演算バッファ，メディアンバッファとしてはＲＡＭ１１２（図２参照）が用いられる。
【００６９】
図１０は、図９に示す演算バッファの概要を示す図である。
【００７０】
図１０（ａ）には、演算バッファの最初の状態が示されている。図１０（ａ）に示す演算バッファは、アドレス０ｘＦＦＦＦ〜０ｘＦＦＥＡで指定されるメモリから構成されている。このメモリ上に、１つの先頭アドレス保持部と７個のリスト領域を確保し、それぞれを、次データのアドレスを保持することで連結する。
【００７１】
先ず、図１０（ｂ）に示すように、６個のデータ（２８，４２，１４，５８，２１，６８）に６個のインデックス番号（０，１，２，３，４，５）を付して演算バッファに格納する。
【００７２】
次に、図１０（ｃ）に示すように、演算バッファに格納したデータをソートする。データの交換は、アドレスの切り換えで行なう。
【００７３】
さらに、図１０（ｄ）に示すように、７個目のデータを演算バッファの適切な位置に追加し、算出したメディアン値（中央値：ここでは２８）をメディアンバッファに格納する。
【００７４】
次いで、図１０（ｅ）に示すように、演算バッファから古いデータを削除して、そのリスト構造を最後尾に移動させる。
【００７５】
さらに、図１０（ｆ）に示すように、全てのインデックス番号を下げる。
【００７６】
この後から行の終わりまでは、図１０（ｄ），図１０（ｅ），図１０（ｆ）に示す処理と、古いデータの削除および新しいデータの挿入処理を行なう。最終行まで処理すると、さらに図１０（ｂ），図１０（ｃ）に示す処理を実行した後、図１０（ｄ），図１０（ｅ），図１０（ｆ）に示す処理を最終行まで処理することを全データの処理が完了するまで繰り返す。
【００７７】
図１１は、図９に示すメディアンバッファの概要を示す図である。
【００７８】
このメディアンバッファは、先に入力したデータが先に出力されるという特徴を持つＦＩＦＯ構造になっている。
【００７９】
図１１（ａ），図１１（ｂ），図１１（ｃ），図１１（ｄ），図１１（ｅ）に示すように、メディアン値（２８，２６，２７，２６）を入力するたびに、格納してあるデータが移動する。ここで、図１１（ｆ）に示すように、メディアンバッファが一杯になると、最初に入力されたデータ（２８）から出力されていく。その後、遅延させて画像データの処理位置にメディアン値を設定する。このように処理することで、更新用画像バッファを作成する必要もなく、従って回路規模の増大を抑えることができる。
【００８０】
図１２は、図１に示す演算処理装置であるコンピュータを、本発明の第２のメディアンフィルタの一実施形態として動作させる本発明の第２のメディアンフィルタプログラムの一実施形態が記憶されたＣＤ−ＲＯＭを示す概念図である。
【００８１】
図１２に示すＣＤ−ＲＯＭ８００には、メディアンフィルタプログラムログラム８１０が記憶されており、このメディアンフィルタプログラムログラム８１０は、並換ルーチン部８１１、中央値抽出ルーチン部８１２、および入力更新ルーチン部８１３で構成されている。メディアンフィルタプログラムログラム８１０の各部の細部については、本発明の第２のメディアンフィルタの一実施形態の各部の作用とあわせて説明する。
【００８２】
図１３は、本発明の第２のメディアンフィルタの一実施形態の構成を示す図である。
【００８３】
図１３に示すメディアンフィルタ１００＿２は、二次元的に配列されたデータのうちの所定の行方向に順次に１データずつ移動する、その行方向にｍ（本発明にいうＮ１個に相当）並ぶとともに列方向にｎ個（本発明にいうＮ２に相当）並ぶｍ×ｎ個のデータの中央値を順次に抽出して出力するメディアンフィルタである。このメディアンフィルタ１００＿２には、並換手段１００＿２１と、中央値抽出手段１００＿２２と、入力変更手段１００＿２３とが備えられている。
【００８４】
並換手段１００＿２１は、図１２に示す並換ルーチン部８１１のプログラムの作用を受けて動作し、行方向について時系列的に順次に入力されたｍ×ｎ個のデータを、入力順の列を示すインデックスに対応づけて、一次元的に昇順に並べ換える。詳細には、この並換手段１００＿２１は、新たに入力したｎ個のデータの配置位置を二分法に従って検索する。
【００８５】
中央値抽出手段１００＿２２は、図１２に示す中央値抽出ルーチン部８１２のプログラムの作用を受けて動作し、並換手段１００＿２１により昇順に並べられたｍ×ｎ個のデータのうちの中央に並んだデータを中央値として抽出する。
【００８６】
入力更新手段１００＿２３は、図１２に示す入力更新ルーチン部８１３のプログラムの作用を受けて動作し、ｍ×ｎ個のデータのうちの、上記インデックスに従って最も古い入力列のｎ個のデータを消去して新たな列のｎ個のデータを入力する。
【００８７】
図１４は、図１３に示すメディアンフィルタにおいて実行される処理ルーチンのフローチャートである。
【００８８】
この処理ルーチンでは、ｍ×ｎ個のデータとして３×３個のデータを処理する場合について説明する。
【００８９】
先ず、ステップＳ２１において、３×３個の二次元データを一次元化する。
【００９０】
次に、ステップＳ２２において、９個のリスト構造体を作り、それぞれを連結する。
【００９１】
さらに、ステップＳ２３において、６個のデータにインデックス番号を付してリスト構造体に格納する。具体的には、０列における３個のデータ（２８，４２，１４）にインデックス番号（０）を付し、また１列における３個のデータ（５８，２１，６８）にインデックス番号（１）を付してリスト構造体に格納する。尚、リスト構造体を採用しているのは、並び換えをポインタの切り換えで迅速に行なうためである。
【００９２】
さらに、ステップＳ２４に進み、リスト構造体に格納してあるデータをソートする。これにより、データが昇順（１４，２１，２８，４２，５８，６８）に並び換えられる。
【００９３】
次に、ステップＳ２５において、７，８，９個目のデータ（７０，７２，２５）をリスト構造体の適切な位置に追加する。
【００９４】
さらに、ステップＳ２６において、リスト構造体の中央にある値（ここでは４２）を取り出し、これをメディアン値（中央値）とし、元データと置き換える。
【００９５】
次いで、ステップＳ２７において、次にデータ列を処理するために、リスト構造体から古いデータ列（インデックス番号０が付されたデータ１４，２８，４２）を削除して、その構造体を最後尾に移動させる。
【００９６】
さらに、ステップＳ２８において、インデックス番号を下げる。
【００９７】
次に、ステップＳ２９において、上述した処理を１行の終わりまで繰り返すために、最終列か否かが判定される。最終列でないと判定された場合は隣のデータを読み出してステップＳ２５に戻る。一方、最終列であると判定された場合はステップＳ３０に進む。
【００９８】
ステップＳ３０では、最終行か否かが判定される。最終行でないと判定された場合は、次の行を処理することとなる。ここで、次の行を処理するときは新たに６個のデータを格納するところから始める。このため、ステップＳ２３に戻る。一方、最終行であると判定された場合は、この処理ルーチンを終了する。
【００９９】
図１５は、ｍ×ｎサイズからなるデータの演算範囲の移動概念図である。
【０１００】
図１５には、ｍ行×ｎ列からなる元データが示されている。ここでは、この元データの斜線部がメディアン処理する範囲であるものとする。
【０１０１】
また、図１５には、演算範囲が移動する様子が示されている。尚、この演算範囲における斜線部は中央値を示す。隣接するブロックの６個分（重複要素）はすでに並び換えが済んでいるため、新たなデータ列の追加だけで常に並び順が保たれる。このため、中央値の取り出しを高速に行なうことができる。
【０１０２】
図１６は、リスト構造体に格納されたデータが配列部に格納される様子を示す図である。
【０１０３】
図１６には、リスト構造体に格納された、インデックス番号（０，１，２，３，４，５）が付されたデータ（２８，４２，１４，５８，２１，６８）が示されている。これらのデータは一旦配列部１１２ａに格納される。リスト構造体に格納されているデータをソートするにあたり、このような配列部１１２ａを使用することにより、ソート処理を効率よく行なうことができる。尚、データの並び換えを行なうときは、配列部１１２ａに格納されたデータとリスト構造体のポインタ切り換えが同時に行なわれる。
【０１０４】
図１７は、配列部の中央にあるデータを取り出す様子を示す図である。
【０１０５】
図１７に示す配列部１１２ａには、昇順に並び換えられた９個のデータ１４，２１，２５，２８，４２，５８，６８，７０，７２が格納されている。ここで、配列部１１２ａの中央にあるデータ４２が中央値として取り出される。
【０１０６】
図１８は、画像データをメディアン処理する様子を示す概念図である。
【０１０７】
図１８に示す画像データは、ｍ×ｎサイズからなる画像データである。先ず、この画像データから処理範囲の二次元データを一次元データに変換し、次いで一次元データを演算バッファにコピーする。さらに、演算バッファで中央値を算出し、その後メディアンバッファにコピーする。メディアンバッファにコピーされたデータは、そのメディアンバッファで遅延されて、画像データの所定の位置に設定される。
【０１０８】
図１９は、図１８に示す演算バッファの概要を示す図である。
【０１０９】
図１９（ａ）には、演算バッファの最初の状態が示されている。図１９（ａ）に示す演算バッファは、アドレス０ｘＦＦＦＦ〜０ｘＦＦＥ４で指定されるメモリから構成されている。このメモリ上に、１つの先頭アドレス保持部と９個のリスト領域を確保し、それぞれを、次データのアドレスを保持することで連結する。
【０１１０】
先ず、図１９（ｂ）に示すように、３個のデータ（２８，４２，１４）にインデックス番号（０）を付し、また３個のデータ（５８，２１，６８）にインデックス番号（１）を付して演算バッファに格納する。
【０１１１】
次に、図１９（ｃ）に示すように、演算バッファに格納したデータをソートする。データの交換は、アドレスの切り換えで行なう。
【０１１２】
さらに、図１９（ｄ）に示すように、７，８，９個目のデータを演算バッファの適切な位置に追加し、算出したメディアン値（中央値：ここでは４２）をメディアンバッファに格納する。
【０１１３】
次いで、図１９（ｅ）に示すように、演算バッファから古いデータ列を削除して、そのリスト構造を最後尾に移動させる。
【０１１４】
さらに、図１９（ｆ）に示すように、全てのインデックス番号を下げる。
【０１１５】
この後から行の終わりまでは、図１９（ｄ），図１９（ｅ），図１９（ｆ）に示す処理と、古いデータ列の削除および新しいデータ列の挿入処理を行なう。最終行まで処理すると、さらに図１９（ｂ），図１９（ｃ）に示す処理を実行した後、図１９（ｄ），図１９（ｅ），図１９（ｆ）に示す処理を最終行まで処理することを全データの処理が完了するまで繰り返す。
【０１１６】
図２０は、図１８に示すメディアンバッファの概要を示す図である。
【０１１７】
このメディアンバッファは、先に入力したデータが先に出力されるという特徴を持つＦＩＦＯ構造になっている。
【０１１８】
図２０（ａ），図２０（ｂ），図２０（ｃ）に示すように、メディアン値（４２，４１，…）を入力するたびに、格納してあるデータが移動する。ここで、図２０（ｄ）に示すように、メディアンバッファが一杯になると、最初に入力されたデータ（４２）から出力されていく。その後、遅延させて画像データの処理位置にメディアン値を設定する。このように処理することで、更新用画像バッファを作成する必要もなく、従って回路規模の増大を抑えることができる。
【０１１９】
尚、本実施形態では、本発明の第１，第２のメディアンフィルタの一実施形態をコンピュータ１００により実現した例で説明したが、これに限られるものではなく、例えば、被写体光を撮像素子で捉えて画像信号を生成するデジタルカメラ、携帯電話に搭載されるカメラ、あるいは動画を撮影するビデオカメラ等の光学機器にも、本発明を適用することができる。
【図面の簡単な説明】
【０１２０】
【図１】本発明の第１のメディアンフィルタの一実施形態が実現される演算処理装置を示す概要図である。
【図２】図１に示した外観を有するコンピュータのハードウェア構成図である。
【図３】図１に示す演算処理装置であるコンピュータを、本発明の第１のメディアンフィルタの一実施形態として動作させる本発明の第１のメディアンフィルタプログラムの一実施形態が記憶されたＣＤ−ＲＯＭを示す概念図である。
【図４】本発明の第１のメディアンフィルタの一実施形態の構成を示す図である。
【図５】図４に示すメディアンフィルタにおいて実行される処理ルーチンのフローチャートである。
【図６】１×ｎサイズからなるデータの演算範囲の移動概念図である。
【図７】リスト構造体に格納されたデータが配列部に格納される様子を示す図である。
【図８】配列部の中央にあるデータを取り出す様子を示す図である。
【図９】画像データをメディアン処理する様子を示す概念図である。
【図１０】図９に示す演算バッファの概要を示す図である。
【図１１】図９に示すメディアンバッファの概要を示す図である。
【図１２】図１に示す演算処理装置であるコンピュータを、本発明の第２のメディアンフィルタの一実施形態として動作させる本発明の第２のメディアンフィルタプログラムの一実施形態が記憶されたＣＤ−ＲＯＭを示す概念図である。
【図１３】本発明の第２のメディアンフィルタの一実施形態の構成を示す図である。
【図１４】図１３に示すメディアンフィルタにおいて実行される処理ルーチンのフローチャートである。
【図１５】ｍ×ｎサイズからなるデータの演算範囲の移動概念図である。
【図１６】リスト構造体に格納されたデータが配列部に格納される様子を示す図である。
【図１７】配列部の中央にあるデータを取り出す様子を示す図である。
【図１８】画像データをメディアン処理する様子を示す概念図である。
【図１９】図１８に示す演算バッファの概要を示す図である。
【図２０】図１８に示すメディアンバッファの概要を示す図である。
【符号の説明】
【０１２１】
１００  コンピュータ
１０１  本体部
１０１ａ  フレキシブルディスク装填口
１０１ｂ  ＣＤ−ＲＯＭ装填口
１００＿１，１００＿２  メディアンフィルタ
１００＿１１，１００＿２１  並換手段
１００＿１２，１００＿２２  中央値抽出手段
１００＿１３，１００＿２３  入力更新手段
１０２ａ  表示画面
１０２  表示部
１０３  キーボード
１０４  マウス
１１０  バス
１１１  ＣＰＵ
１１２  ＲＡＭ
１１２ａ  配列部
１１３  ハードディスクコントローラ
１１４  フレキシブルディスクドライブ
１１５  ＣＤ―ＲＯＭドライブ
１１６  マウスコントローラ
１１７  キーボードコントローラ
１１８  ディスプレイコントローラ
１１９  通信用ボード
１２０  ハードディスク
５００  フレキシブルディスク
６００  通信回線
７００，８００  ＣＤ−ＲＯＭ
７１０，８１０  メディアンフィルタプログラム
７１１，８１１  並換ルーチン部
７１２，８１２  中央値抽出ルーチン部
７１３，８１３  入力更新ルーチン部
【図１】
2007179183.tif 000003
【図２】
2007179183.tif 000004
【図３】
2007179183.tif 000005
【図４】
2007179183.tif 000006
【図５】
2007179183.tif 000007
【図６】
2007179183.tif 000008
【図７】
2007179183.tif 000009
【図８】
2007179183.tif 000010
【図９】
2007179183.tif 000011
【図１０】
2007179183.tif 000012
【図１１】
2007179183.tif 000013
【図１２】
2007179183.tif 000014
【図１３】
2007179183.tif 000015
【図１４】
2007179183.tif 000016
【図１５】
2007179183.tif 000017
【図１６】
2007179183.tif 000018
【図１７】
2007179183.tif 000019
【図１８】
2007179183.tif 000020
【図１９】
2007179183.tif 000021
【図２０】
2007179183.tif 000022