openCV メディアン フィルタリング

 

メディアン フィルタリングは、一般的に使用される画像フィルタリング アルゴリズムです。ピクセルの周囲の複数の点でメディアン フィルタリングを実行し、周囲のピクセルのグレー値に基づいてその点のグレー値を平均し、これらの点のグレー値を次数の値にします。スムーズなノイズ除去の目的を達成するのと同様です。メディアン フィルタリングは画像処理で広く使用されており、画像フィルタリングや画像強調処理でも広く使用されています。メディアン フィルタリングの原理は次のとおりです。 (1) メディアン フィルタリングは、グレースケール画像の各ピクセルのグレー値の平均を計算することによってノイズ除去を実現するアルゴリズムです。グレースケール分散ではなくグレースケール平均を使用してノイズを除去し、グレースケール イメージの基本情報は変更されないようにします。メディアン フィルタリングの本質は、画像のローカル統計と分析を実行することによって、最適な平滑化ウィンドウのサイズと方向を決定することです。(2) メディアン フィルタリング 画像処理では、グレー レベルの分散をグレー レベルの平均値で置き換えるのが最も簡単な方法です。このアルゴリズムはシンプルで使いやすいですが、ノイズ抑制には効果的ではありません。グレースケール分散の代わりにグレースケール平均を使用する利点は、ノイズをフィルタリングして詳細な情報を保持できることです。(3) メディアン フィルタリングは、1 つの点に対して複数の点の中央値を計算し、その点の周囲のピクセルのグレースケール値を平均して、ノイズ除去の目的を達成します。

  • 1. アルゴリズム的思考

    メディアン フィルタリングは統計分析に基づいた画像処理技術であり、その基本的な考え方は、画像のノイズ除去にグレースケールの分散ではなくグレースケールの平均を使用することです。その基本原理は、画像をグレー値空間内で同じサイズのいくつかのウィンドウに分割し、各ウィンドウの各ピクセルのグレー値と隣接するウィンドウのピクセルのグレー値を計算することです。比率、この比率を計算として使用します。ピクセルのグレースケール特徴ベクトルを取得し、この特徴ベクトルに対してメディアン フィルターを実行し、近傍ウィンドウ内のすべてのピクセルのグレースケール値の比率で重み付けして、滑らかな画像を取得します。フィルタリング プロセスでは、より良いフィルタリング効果を得るためにノイズをフィルタリングする必要がある領域にノイズが追加されることがよくあります。このように、グレースケールの特徴があまり目立たず、ノイズの多いピクセルがノイズ フィルタリングが必要ない領域に表示され、画質に影響を与えます。したがって、メディアン フィルター アルゴリズムには、ノイズを除去する機能があるだけでなく、優れたエッジ保存機能もあります。

  • 2. アルゴリズム処理

    (1) 画像のグレースケール:各ピクセルのグレースケール(階調値)は明るさ(輝度値)で表され、最大明るさ(最大値)、最小明るさ(最小値)、中間値が使用されます。 . 表す値。(2) グレー値の平均を求める: 各ピクセルについて、いくつかの隣接するピクセルのグレー値とピクセルのグレー値の間の差を使用して平均を計算します。(3) 中央値を決定する: 平均を比較することによって、どのピクセルが現在のピクセルであるかを決定します。(4) 平滑化ウィンドウの選択: ノイズを抑制するために、画像の階調特性とノイズの特性に基づいて、適切なサイズの平滑化ウィンドウを選択できます。(5) 平均値の計算: 現在のピクセルと他の隣接するピクセルを比較し、現在のピクセルの階調レベルが他の隣接するピクセルの階調レベルと類似している場合、そのピクセルは現在のピクセルとみなされます。(6) 出力結果:得られた中央値を出力結果として使用します。(7) パラメータ設定: 平滑化ウィンドウ内のすべてのピクセルが平滑化効果を得ることができるように、平滑化ウィンドウのサイズを設定します。これにより、ノイズを除去するという目的が達成されます。

  • 3. ウィンドウサイズ

    ウィンドウ サイズによってウィンドウ内のピクセル数が決まり、これによってフィルタリングの効果が決まります。ウィンドウが大きすぎると、フィルタ処理中にノイズ ポイントが埋もれてフィルタ効果が低下し、ウィンドウが小さすぎると、ノイズ ポイントが埋もれてフィルタ効果が低下します。したがって、適切なウィンドウ サイズを選択することが重要です。メディアン フィルター ウィンドウのサイズを選択するために一般的に使用される原則は、画像ピクセルを単位として、隣接する 2 つのピクセルの中央値の差がピクセルのグレー値の半分を超えてはいけないということです。一般に、小さい画像ウィンドウには小さいサイズを選択し、大きい画像ウィンドウには大きいサイズを選択します。例: 300×300 の画像の場合、以下を選択できます。(1) ウィンドウ サイズが 4 の場合、ノイズ ポイントとして最大 50 ピクセルを処理できます。

  • 4. 閾値の設定

    メディアン フィルタリングは、シンプルで効果的な画像フィルタリング アルゴリズムです。これには次の利点があります。 (1) ノイズを効果的に抑制し、画像の詳細を保持し、グレースケール画像に対するフィルタリング効果が向上します。(2) 画像のエッジと輪郭が維持され、画像のグレー値の突然の変化によって引き起こされる斑点が除去されます。(3) ノイズに強く、一般にノイズが多い場合のフィルタ効果は良好です。(4) 画像を引き伸ばさないでください。また、画像を引き伸ばすことによって生じる縞や斑点を避けてください。(5)良好なフィルタ効果が得られ、画像のエッジ、質感、形状等の情報を保持することができる。画像を補正する必要がある場合は、メディアン フィルタリングの前にメディアン補正のステップを追加して、より良い補正効果を実現できます。(6) 複数の画像に対してメディアンフィルタリングを実行し、閾値を自動設定することができます。これはメディアン フィルタリングで最も重要なパラメータの 1 つです。(7) メディアン フィルターのアルゴリズムはシンプルで実装が容易で、計算量も少ないため、リアルタイム処理やリアルタイム イメージングに広く使用されています。(8) アルゴリズムは処理速度、演算速度が速く、リアルタイム処理に適しています。

  • 5. 中央値の計算

    メディアン フィルタリングは、ノイズをある程度まで効果的に抑制する一般的に使用される画像処理手法ですが、ノイズが残る場合があります。ノイズを除去するために、多くのメディアン フィルタリング手法が設計されており、一般的な手法には、平均法、メディアン平均法、適応メディアン法などがあります。これらの方法は、画像のスムーズなノイズ除去をある程度実現できますが、その効果はあまり理想的ではありません。より良い結果を得るために、メディアン フィルタリング手法にパラメータ (画像処理に必要な情報を反映する加重メディアン) が導入されます。加重中央値は、ピクセルの周囲のいくつかの点を選択し、これらの点の平均値を計算します。計算式は次のとおりです: i はピクセル点、s は i に隣接する点、i からの距離は h (s)、h (s) は k 番目のピクセル点の平均値を表します、a、 b、cはそれぞれk番目の画素点iの平均、j、kを表します。メディアン フィルタリング アルゴリズムの最大の利点は、ノイズを平滑化して画質を向上させることができ、フィルタリング結果が鮮明で安定しているため、後続の処理におけるノイズによる干渉がある程度軽減されることです。

  • 6. スムージング

    画像処理では、通常、画像を滑らかにするためにメディアン フィルタリングが使用されます。メディアン フィルタリングは、画像の特性を維持しながらノイズによる干渉を除去できる基本的な画像平滑化技術です。主に、画像のノイズ、エッジのぼやけ、テクスチャの歪みなどの問題を解決するために使用されます。(1) スムーズなウィンドウサイズ。従来のメディアン フィルタリングでは、固定ウィンドウ サイズ方式が使用され、処理中に特定のルールに従ってウィンドウ サイズが継続的に変更されます。ウィンドウ サイズがノイズ強度に比例する場合、最高のノイズ除去効果が得られます。メディアン フィルターは、処理中にノイズ強度の影響を考慮しない固定ウィンドウ サイズを使用するため、最適なノイズ除去効果が得られます。(2) フィルタリングの方向。従来のメディアン フィルタリングは通常、時計回りまたは反時計回りのフィルタリングを使用しますが、メディアン フィルタリングは画像内のノイズの位置に基づいて選択できるため、より効果的にノイズを除去できます。

  • 7. 結果の出力

    (1) アルゴリズムの実行中に、ピクセル値が均一であるかどうかを考慮する必要があります。そうしないと、局所的なピークが表示されます。局所的なピークがある場合、画像内に存在する可能性のあるノイズ ポイントを特定できます。グレースケール画像の場合、画像のグレースケール分布は不均一でノイズ ポイントを見つけるのが難しいため、通常はメディアン フィルタリングを実行する必要はありません。ただし、カラー画像の場合、ピクセル値が均等に分布していれば、画像内に存在するノイズ ポイントを直接決定できます。(2) アルゴリズムの出力結果には主に 3 つのケースがあります。 1 つ目のケースは、結果を直接出力する (つまり、メディアン フィルタリング後) 2 つ目のケースは、結果を出力した後にメディアン フィルタリングを実行して結果を出力することです。つまり、ウィンドウの元の部分が処理されるときに、メディアン フィルタリング ウィンドウが使用されます。この方法はノイズ抑制に非常に効果的です。この方法は、最初の方法ほど効果的ではありませんが、ノイズを非常によく抑制できるという利点があります。(3) 通常、アルゴリズムにはフィルター ウィンドウ サイズの選択が含まれますが、一般に小さいウィンドウを選択することで、ノイズ抑制効果が確保され、より良い画質が得られます。ただし、ウィンドウが小さすぎると画像の細部が破壊される可能性があり、ウィンドウが大きすぎると情報が失われる可能性があります。

以下は、一般的に使用される OpenCV メディアン フィルタリング コードです。

1. グレースケール画像に対してメディアン フィルタリングを実行します` ``python import cv2
#グレースケール画像を読み込みますimg = cv2.imread('image.jpg', 0) # メディアン フィルタリングimg_median = cv2.medianBlur(img, 5) # 元の画像を表示しますメディアン フィルター処理された画像cv2.imshow('Original Image', img) cv2.imshow('メディアン フィルター処理された画像', img_median) cv2.waitKey(0) cv2.destroyAllWindows() ```` 2. 色に対してメディアン フィルタリングを実行します。 Images```python import cv2 #カラー画像を読み込みますimg = cv2.imread('image.jpg') # メディアン フィルタ処理img_median = cv2.medianBlur(img, 5) # 元の画像と中央の画像を表示します 値フィルタされた画像cv2. imshow('元の画像', img) cv2.imshow('メディアン フィルター処理された画像', img_median) cv2.waitKey(0) cv2.destroyAllWindows() ```
























3. ビデオに対してリアルタイムのメディアン フィルタリングを実行します` ``python import cv2
#カメラを開きますcap = cv2.VideoCapture(0) while True: # ビデオ フレームを読み取りますret, Frame = cap.read() # メディアン フィルタFrame_median = cv2 .medianBlur(frame, 5) # 元のビデオとメディアン フィルター処理されたビデオを表示します。cv2.imshow('Original Video', Frame) cv2.imshow('メディアン フィルター処理されたビデオ', Frame_median) # q キーを押して終了します。 loop if cv2 .waitKey(1) & 0xFF == ord('q'): Break # カメラを放し、すべてのウィンドウを閉じるcap.release() cv2.destroyAllWindows() ```

















おすすめ

転載: blog.csdn.net/qq_42751978/article/details/130790557