- 近傍平均法を使用して、塩胡椒ノイズとガウス ノイズで汚染された画像をそれぞれフィルタリングします (ノイズ強度は 0.05 に設定)。次の 3 つの異なるマスクをそれぞれ使用する必要があり、それぞれ比較が行われます。
- Matlab プログラム: (バージョン 2016a)
1. clc;
2. clear;
3. close all;
4. img=imread('hua.jpg');
5. img1=imnoise(img,'salt & pepper',0.05);% 0.05的椒盐噪声
6. img2 = imnoise(img,'gaussian',0.05);% 0.05的高斯噪声
7. H1=[0,1,0;1,1,1;0,1,0]/4;%定义H1掩模
8. H2=ones(3,3)/9;%定义H2掩模
9. H3=[1,2,1;2,4,2;1,2,1]/16;%定义H3掩模
10.
11. M1=imfilter(img1,H1);%采用H1掩模处理椒盐噪声
12. M2=imfilter(img1,H2);%采用H2掩模处理椒盐噪声
13. M3=imfilter(img1,H3);%采用H3掩模处理椒盐噪声
14. M4=imfilter(img2,H1);%采用H1掩模处理高斯噪声
15. M5=imfilter(img2,H2);%采用H2掩模处理高斯噪声
16. M6=imfilter(img2,H1);%采用H3掩模处理高斯噪声
17.
18. subplot(3,3,1),imshow(img); title('原图');
19. subplot(3,3,2),imshow(img1); title('加入椒盐噪声(密度:0.05)后效果');
20. subplot(3,3,3),imshow(img2); title('加入高斯噪声(密度:0.05)后效果');
21. subplot(3,3,4),imshow(M1); title('采用H1掩模处理椒盐噪声图像效果');
22. subplot(3,3,5),imshow(M2); title('采用H2掩模处理椒盐噪声图像效果');
23. subplot(3,3,6),imshow(M3); title('采用H3掩模处理椒盐噪声图像效果');
24. subplot(3,3,7),imshow(M4); title('采用H1掩模处理高斯噪声图像效果');
25. subplot(3,3,8),imshow(M5); title('采用H2掩模处理高斯噪声图像效果');
26. subplot(3,3,9),imshow(M6); title('采用H3掩模处理高斯噪声图像效果');
-
元画像、加工画像:
-
処理プロセスと結果の説明:
上記のプログラムは、塩胡椒ノイズとガウス ノイズによって汚染された画像を、それぞれ 3 つの近傍平均テンプレート H1、H2、H3 を定義することによって処理します。シミュレーション結果から、近傍平均法が適切であることがわかります。を実装すると非常に便利で、画像内の粒状ノイズを除去するのに適していますが、この方法は画像信号を平滑化するだけでなく、画像の細部をぼかします。上記の処理画像から、図に示すように、H2 マスクと H3 マスクは塩コショウ ノイズの抑制に優れており、H1 よりも塩コショウ ノイズが除去されていることがわかります。ガウス ノイズの場合、H1 マスクと H3 マスクは H2 マスクほどノイズを抑制する効果がありません。H3 のガウス ソルト ノイズはまだ存在しますが、弱められています。一方、H1 マスクはエッジがぼやけているため、全体的に H2 マスクは両方のタイプのノイズに対して優れています。
(オプション) オーバーリミット近傍平均法 (しきい値法) を使用して、ガウス ノイズによって汚染されたイメージをフィルター処理し (ノイズ強度は 0.05 に設定されます)、近傍平均化にはガウス マスクを使用します (以下を参照)。
Matlab プログラム: (バージョン 2016a)
スクリプト: test2.m:
1. % 超限邻域滤波
2. clc,clear,close all % 清理命令区、清理工作区、关闭显示图形
3. feature jit off % 加速代码运行
4. img = imread('hua.jpg');
5. img1 = imnoise(img,'gaussian',0.05);%加入噪声密度:0.05的高斯噪声
6. img2=rgb2gray(img1);
7. img3 = threddmean_filter( img2,5, 5/255 ); % 应用超限邻域滤波
8. figure('color',[1,1,1])
9.
10. subplot(221),imshow(img,[]),title('original image')
11. subplot(222),imshow(img1,[]),title('gaussian image')
12. subplot(223),imshow(img2,[]),title('灰度图')
13. subplot(224),imshow(img3,[]),title('超限邻域滤波效果图')
可选:效果优化
1. colormap(jet) % 颜色
2. shading interp % 消隐
関数: threddmean_filter.m:
1. function Z = threddmean_filter(X,n,thred)
2. % 函数对输人图像进行超限邻域平均法滤波
3. % 函数输入
4. % X:输人二维图像矩阵
5. % n:掩膜尺寸
6. % thred:阈值
7. % 函数输出
8. % Z:输出图像矩阵,数据类型与输人相同
9. if size(X,3)~=1
10. error('图像应该为2维矩阵')
11. end
12. if ~isa(X,'double')
13. X = double(X)/255; % 数据类型
14. end
15. H = fspecial('average',n); % 均值模板
16. Y = imfilter(X, H);
17. thre = abs(X-Y)>thred; % 判断哪些是门限
18. Z = X; % 赋值
19. Z(thre)=Y(thre);
20. Z = im2uint8(Z); % 类型转换
21. end
- 元の画像、処理された画像、
色効果表示なし:
色効果表示を追加します。
- 処理の過程と結果の説明:
参考資料: Webページリンク
コンサルティング情報: このプログラムは主にcsdn Webサイトを参照していますが、初回実行時にエラーが発生し、オーバーリミット近傍による画像入力を促すメッセージが表示されます。フィルター関数は 2 次元行列ではありません。エラー分析では、画像のグレースケール処理が存在しないため、data および rgb2gray 関数を使用して画像を処理し、結果のマップをオーバーリミット近傍フィルター関数に入力します。
プログラミング ロジック:
前の処理方法と同様に、画像は最初に前処理されます。プログラミングの核心はオーバーリミット近傍メソッドであり、オーバーリミット近傍フィルター関数を使用してオーバーリミット近傍フィルターの機能を完了します。
オーバーリミットフィルター機能のアイデア:
- オーバーリミット フィルター関数には、イメージ、マスク、フィルターしきい値の 3 つの入力値があります (しきい値の範囲は 0 ~ 255)。
- 入力画像形式が正しいかどうかを確認する
- 入力画像フォーマットが正しい後、平均テンプレート H を設定します。
- imfilter 関数を使用して入力画像 X のピクセル平均値を取得し、それを Y に代入します。
- abs(XY) を使用して、しきい値 thred を超える画像内の点を見つけます。
これらの点を近傍ピクセルの平均値で置き換えるというアイデアは、ピクセルと指定された近傍内のピクセルの平均値または加重平均値をピクセルの新しい値として使用して、突然のピクセルポイントにより、特定の 近傍平均法によって引き起こされる画像のぼやけの問題を解決するには、しきい値法 (オーバーリミット近傍平均法とも呼ばれ、ピクセルのグレー値が隣接ピクセルの平均値よりも大きく、一定のレベルに達する場合) を使用します。 , ピクセルを判定し、ノイズであれば、このピクセル値を周囲のピクセルの平均値で置き換えます、そうでない場合は、そのピクセルはノイズ
点ではないと考えられ、置き換えられません。効果も異なり、小さなノイズは常に最初にフィルタリングされますが、大きなノイズポイントに必要なしきい値は減少します。しきい値が増加すると、ノイズフィルタリング効果は非常に優れていますが、同時に、元の画像の一部の詳細は失われます。
2. メディアン フィルター メソッドを使用して、下図に示す画像をフィルターします。メディアン フィルター テンプレートには制限がなく、自分で選択でき、最適な効果が適切です。
- Matlab プログラム: (バージョン 2016a)
1. clc;
2. clear;
3. close all;
4. %初始化
5. img=imread('tupian.png');
6. img1 = imnoise(img,'gaussian',0.05);%加入噪声密度:0.05的高斯噪声
7. img2 = imnoise(img,'salt & pepper',0.05);%加入噪声密度:0.05的椒盐噪声
8.
9. img3=rgb2gray(img1);%灰度处理,灰度处理后的图像是二维矩阵
10. img4=rgb2gray(img2);%灰度处理,灰度处理后的图像是二维矩阵
11. %降噪处理
12. M1=medfilt2(img3,[5 5]);%对有高斯噪声图像进行3x3中值滤波
13. M2=medfilt2(img3,[9 9]);
14. M3=medfilt2(img3,[16 16]);
15. M4=medfilt2(img4,[5 5]);%对有椒盐噪声图像进行3x3中值滤波
16. M5=medfilt2(img4,[9 9]);
17. M6=medfilt2(img4,[16 16]);
18. %显示图像
19. subplot(3,3,1),imshow(img); title('原图');
20. subplot(3,3,2),imshow(img1); title('加入高斯噪声(密度:0.05)后效果');
21. subplot(3,3,3),imshow(img2); title('加入椒盐噪声(密度:0.05)后效果');
22. subplot(3,3,4),imshow(M1); title('对有高斯噪声图像进行5x5中值滤波');
23. subplot(3,3,5),imshow(M2); title('对有高斯噪声图像进行9x9中值滤波');
24. subplot(3,3,6),imshow(M3); title('对有高斯噪声图像进行16x16中值滤波');
25. subplot(3,3,7),imshow(M4); title('对有椒盐噪声图像进行5x5中值滤波');
26. subplot(3,3,8),imshow(M5); title('对有椒盐噪声图像进行9x9中值滤波');
27. subplot(3,3,9),imshow(M6); title('对有jiaoyan噪声图像进行16x16中值滤波');
-
元の画像、処理された画像。
-
プロセスと処理結果の説明;
メディアン フィルター法は、ガウス ノイズを含む画像のノイズを除去するために使用されます。なぜなら、メディアン フィルターは一般的に使用される非線形フィルター処理方法であり、画像処理技術で最も一般的に使用される前処理技術だからです。線形フィルタによる画像のぼやけを克服し、粒状ノイズを効果的に除去しながら、良好なエッジ特性を維持し、十分なフィルタ効果を得ることができ、特に塩胡椒ノイズの除去に適しています。画像に塩コショウ ノイズを追加し、ガウス ノイズと塩コショウ ノイズ フィルタリングに対するさまざまな効果を比較します。
プログラミングのアイデア:
まず画像を読み取って処理して、さまざまなノイズを含むグレースケール イメージを取得し、次に matlab ツールボックスの関数 medfilt2 を使用して、それぞれ 3x3、5x5、7x7、9x9、および 16x16 のテンプレートを使用してメディアン フィルター処理を実行します。 5x5.9x9.16x16 テンプレートの効果がより明らかであることが判明したため、これら 3 つのテンプレートが最終的にフィルタリング テンプレートとして選択されます。
実験分析:
シミュレーション結果から、メディアン フィルタリング方法は操作がシンプルで実装が簡単で、境界をよりよく保護できますが、画像内の細い線や小さな領域が失われる場合があることがわかります。実験結果図の 3 行目の処理効果から、塩コショウ ノイズのスポットがほぼ完全に除去されていることがわかります。これは、画像の塩コショウ ノイズのフィルタリングに非常に効果的です。そこで、画像に塩胡椒ノイズを加えた後、メディアンフィルタを適用しますが、ガウスノイズについては、結果グラフの2段目に示すように、多少のノイズ除去効果はあるものの、効果はあまりよくありません。メディアン フィルターを使用する場合、ウィンドウのサイズはフィルター効果に直接影響し、この 2 つは正比例します。つまり、ウィンドウが大きいほど画像のノイズ除去効果は向上しますが、価格はその程度が大きくなるほど高くなります。画像のぼやけ。したがって、メディアン フィルターを選択するときは、総合的に考慮する必要があります。