記事ディレクトリ
学習目標
画像のノイズの種類を理解する
平均フィルタリング、ガウス フィルタリング、メディアン フィルタリングなどについて学びます。
フィルターを使用して画像を処理する機能
1. 画像のノイズ
画像の収集、処理、送信のプロセスには必然的にノイズが混入するため、人々による画像の理解と分析が妨げられます。一般的な画像ノイズには、ガウス ノイズ、塩胡椒ノイズなどがあります。
1. 塩胡椒ノイズ
インパルス ノイズとも呼ばれるソルト アンド ペッパー ノイズは、画像でよく見られるノイズの一種です。ランダムに現れる白または黒の点です。明るい領域では黒いピクセル、暗い領域では白いピクセルになることがあります
。 . (または両方)。
コショウノイズは、画像信号への突然の強い干渉、アナログ/デジタルコンバーター、またはビット伝送エラーなどによって発生する可能性があります。たとえば、センサーが故障すると最小ピクセル値が得られ、センサーが飽和すると最大ピクセル値が得られます。
2. ガウスノイズ
ガウス ノイズとは、ノイズ密度関数がガウス分布に従うタイプのノイズを指します。空間領域および周波数領域におけるガウス ノイズは数学的に扱いやすいため、このノイズ (ノーマル ノイズとも呼ばれる) モデルが実際によく使用されます。ガウス確率変数 z の確率密度関数は次の式で与えられます。
ここで、z はグレー値を表し、μ は z の平均値または期待値を表し、δ は z の標準偏差を表します。ラベルの差δ2の二乗をzの分散と呼びます。ガウス関数の曲線を図に示します。
2. 画像平滑化処理
信号処理の観点から見ると、画像の平滑化は高周波情報を除去し、低周波情報を保持することです。したがって、画像にローパス フィルタリングを実装できます。ローパス フィルタリングは、画像内のノイズを除去し、画像を滑らかにすることができます。
フィルタリングの違いに応じて、平均フィルタリング、ガウスフィルタリング、メディアンフィルタリング、バイラテラルフィルタリングに分けることができます。
1. 平均値フィルタリング
平均値フィルタリングを使用して画像ノイズを除去します。また、(x, y) 点を中心とし、サイズが mxn のマトリックス サブイメージ ウィンドウの座標グループも表します。平均フィルターは次のように表すことができます。
正規化された畳み込みボックスによって完成されます。中心要素を、畳み込みボックスでカバーされる領域内のすべてのピクセルの平均に置き換えます。
たとえば、3X3 の正規化された平均化フィルターは次のようになります。
平均値フィルタリングの利点は、アルゴリズムが単純で計算速度が速いことです。欠点は、ノイズ除去中に多くの詳細が削除され、画像が非常にぼやけてしまうことです。
(1)API
cv.blur(src, ksize, anchor, borderType)
パラメータ:
src: 入力画像
ksize: コンボリューションカーネルサイズ
アンカー: コアの中心を示すデフォルト値 (-1,-1)
borderType: ボーダータイプ
(2) コード例
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
# 1 图像读取
img = cv.imread('./image/dogsp.jpeg')
# 2 均值滤波
blur = cv.blur(img,(5,5))
# 3 图像显示
plt.figure(figsize=(10,8),dpi=100)
plt.subplot(121),plt.imshow(img[:,:,::-1]),plt.title('原图')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur[:,:,::-1]),plt.title('均值滤波后结果')
plt.xticks([]), plt.yticks([])
plt.show()
2. ガウスフィルター
2 次元ガウスはガウス フィルターを構築するための基礎です。その確率分布関数は次のとおりです:
G(x, y) の分布は上げられた帽子の形をしています。ここでの δ は 2 つの値と見なすことができ、1 つは x の値と見なされます方向の標準偏差δx、もう一方はy方向のラベル差δyで、
δxとδyの値が大きいほど全体の形状が平坦になる傾向があり、δxとδyの場合は全体の形状が平坦になる傾向があります。形状がより突き出ています。
正規分布は釣鐘型の曲線で、中心に近づくほど値が大きくなり、中心から離れるほど値が小さくなります。スムージング結果を計算するときは、「中心点」を原点として使用し、法線曲線上の位置に応じて他の点に重みを割り当て、加重平均を取得するだけです。
ガウス平滑化は、画像からガウス ノイズを除去するのに非常に効果的です。<\font>
(1) ガウス平滑化処理
1) まず重み行列を決定します
中心点の座標が (0, 0) であると仮定すると、それに近い 8 つの点の座標は次のようになります。それ
以降の点も同じです。
重み行列を計算するには、δ の値を設定する必要があります。δ = 1.5 と仮定すると、ぼかし半径 1 の重み行列は次のようになります: これら 9 点の重みの合計は 0.4787147 に等しくなります
。これら 9 つのポイントの加重平均を計算するだけで、それらの重みの合計を 1 に等しくする必要があるため、最終的な重み行列を取得するには、上記の 9 つの値を 0.4787147 で割る必要があります。
2) ガウスぼかしを計算する
重み行列を使用すると、ガウスぼかしの値を計算できます。
現在 9 つのピクセルがあり、グレースケール値 (0 ~ 255) が次のようになっていると仮定します。
各ポイントには、対応する重み値が乗算されます。
最終的に、行列は次のように取得されます。
これら9つの値を加算したものが中心点のガウスぼかし値となります。
すべてのポイントに対してこのプロセスを繰り返して、ガウスぼやけた画像を取得します。元の画像がカラー画像の場合、3 つの RGB チャネルでガウス平滑化を実行できます。
(2)API
cv2.GaussianBlur(src,ksize,sigmaX,sigmay,borderType)
パラメータ:
src: 入力画像
ksize: ガウス コンボリューション カーネルのサイズ、注意: コンボリューション カーネルの幅と高さは奇数である必要があり、異なる値にすることもできます。 sigmaX: 水平方向の標準偏差 sigmaY: 水平方向の
標準
偏差垂直方向。デフォルト値は 0 で、sigmaX
borderType: パディングボーダータイプと同じを示します。
(3) コード例
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
# 1 图像读取
img = cv.imread('./image/dogGasuss.jpeg')
# 2 高斯滤波
blur = cv.GaussianBlur(img,(3,3),1)
# 3 图像显示
plt.figure(figsize=(10,8),dpi=100)
plt.subplot(121),plt.imshow(img[:,:,::-1]),plt.title('原图')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur[:,:,::-1]),plt.title('高斯滤波后结果')
plt.xticks([]), plt.yticks([])
plt.show()
3. メディアンフィルタリング
メディアン フィルタリングは典型的な非線形フィルタリング テクノロジであり、基本的な考え方は、ピクセルのグレー値を、そのピクセルの近傍のグレー値の中央値に置き換えることです。
メディアン フィルタリングは、一般的な値と大きく異なる近傍の値に依存しないため、ごま塩ノイズに特に役立ちます。
(1)API
cv.medianBlur(src, ksize )
パラメータ:
src: 入力画像
ksize: コンボリューションカーネルのサイズ
(2) コード例
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
# 1 图像读取
img = cv.imread('./image/dogsp.jpeg')
# 2 中值滤波
blur = cv.medianBlur(img,5)
# 3 图像展示
plt.figure(figsize=(10,8),dpi=100)
plt.subplot(121),plt.imshow(img[:,:,::-1]),plt.title('原图')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur[:,:,::-1]),plt.title('中值滤波后结果')
plt.xticks([]), plt.yticks([])
plt.show()
要約する
画像ノイズ
塩とコショウのノイズ
ガウスノイズ
画像の平滑化
平均フィルター
アルゴリズムはシンプルで計算速度は速いですが、ノイズ除去プロセス中に多くの有用な情報が削除されるため、画像が非常にぼやけてしまいます。
ガウスフィルター
ガウスノイズも除去できますが、計算量が多く処理が複雑です。
メディアンフィルター
塩胡椒ノイズを除去するのに使いやすいです。