日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab中多边形滤波器,几种常见空间滤波器MATLAB实现

發布時間:2024/9/27 循环神经网络 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab中多边形滤波器,几种常见空间滤波器MATLAB实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文鏈接:https://blog.csdn.net/LYduring/article/details/80443573

一、目的

實現算術均值濾波器、幾何均值濾波器、中值濾波器、修正的阿爾法均值濾波器、自適應中值濾波器,并比較不同濾波器的降噪結果。

二、代碼

代碼的思路如下:

(1)先對原始的電路圖先后進行加高斯噪聲和椒鹽噪聲;之后設置濾波器的模板大小為5*5,分別對被噪聲污染的圖像進行算術均值、幾何均值、中值、修正的阿爾法濾波,并輸出圖像,方便結果比較。

(2)為了比較中值濾波器和自適應中值濾波器的濾波結果,先對原始電路圖添加椒鹽噪聲;接著對噪聲圖像進行模板大小為5*5的中值濾波;最后對噪聲圖像進行最大模板為5*5的自適應中值濾波,分別輸出濾波后的圖像,比較結果。

代碼具體實現如下:

%******************************************************%

%目的:比較幾種不同均值濾波器和自適應中值濾波器的去噪聲效果

%日期:2018.5.18

%******************************************************%

%讀入圖像

img = imread('img.tif');

figure;

subplot(1,3,1);

imshow(img);

title('原始圖像');

%分別添加加入高斯噪聲和椒鹽噪聲

f1 = imnoise(img,'gaussian');

subplot(1,3,2)

imshow(f1);

title('添加高斯噪聲');

f2 = imnoise(f1,'salt & pepper');

subplot(1,3,3)

imshow(f2);

title('再添加椒鹽噪聲');

f2 = double(f2);

[M,N] = size(f2);

%%%%比較幾種均值濾波器及中值濾波器的濾波結果%%%%%%

%算術均值濾波器

n = 5; %模板大小

f11 = f2;

for i = 1:M-n+1

for j = 1:N-n+1

g1 = f2(i:i+n-1,j:j+n-1);

s1 = sum(sum(g1));

%中心點的值用子圖像的算術均值代替

f11(i+(n-1)/2,j+(n-1)/2) = s1/(n*n);

end

end

img1 = uint8(f11);

figure;

subplot(1,2,1);

imshow(img1);

title('算術均值濾波結果');

%幾何均值濾波器

n = 5; %模板大小

f21 = f2 + ones(M,N); %防止有個像素點為0而導致乘積為0

f12 = f21;

for i = 1:M-n+1

for j = 1:N-n+1

g2 = f21(i:i+n-1,j:j+n-1);

s2 = prod(g2(:));

%中心點的值用子圖像的幾何均值代替

f12(i+(n-1)/2,j+(n-1)/2) = s2.^(1/numel(g2));

end

end

img2 = uint8(f12);

subplot(1,2,2);

imshow(img2);

title('幾何均值濾波結果');

%中值濾波器

img3 = uint8(medfilt2(f2,[5 5]));

figure;

subplot(1,2,1);

imshow(img3);

title('中值濾波結果');

%修正的阿爾法均值濾波器

n = 5; %模板大小

d = 5; %去掉最值灰度值的個數

f13 = f2;

for i = 1:M-n+1

for j = 1:N-n+1

g3 = f2(i:i+n-1,j:j+n-1);

g3 = sort(g3(:)); %對鄰域內的像素點進行排序

min_num = ceil(d/2); %去掉最小灰度值的個數

max_num = floor(d/2); %去掉最大灰度值的個數

%去掉d個最值灰度級后求算術均值

g3(1:min_num) = zeros(min_num,1);

g3(n-max_num+1:n) = zeros(max_num,1);

s3 = sum(g3);

%中心點的值用子圖像的算術均值代替

f13(i+(n-1)/2,j+(n-1)/2) = s3/(n*n-d);

end

end

img4 = uint8(f13);

subplot(1,2,2);

imshow(img4);

title('修正的阿爾法均值濾波結果');

%%%%%%%比較中值濾波器及自適應中值濾波器的濾波結果%%%%%%%

f2 = imnoise(img,'salt & pepper');

figure;

subplot(1,4,1);

imshow(img);

title('原圖');

subplot(1,4,2);

imshow(f2);

title('添加椒鹽噪聲的圖像');

%中值濾波器

img5 = uint8(medfilt2(f2,[5 5]));

subplot(1,4,3);

imshow(img5);

title('中值濾波結果');

%自適應中值濾波器

f14 = f2;

alreadyPro = false(size(f2)); %看是否完成進程

Smax=5; %最大窗口尺寸

for s = 3:2:Smax %起始窗口尺寸設為3

%得到特定的灰度值

zmin = ordfilt2(f2, 1, ones(s, s), 'symmetric');

zmax = ordfilt2(f2, s * s, ones(s, s), 'symmetric');

zmed = medfilt2(f2, [s s], 'symmetric');

%進程B

processB = (zmed > zmin) & (zmax > zmed) & ~alreadyPro;

%進程A

processA = (f2 > zmin) & (zmax > f2);

outZxy = processB & processA;

outZmed = processB & ~processA;

f14(outZxy) = f2(outZxy);

f14(outZmed) = zmed(outZmed);

alreadyPro = alreadyPro | processB;

if all(alreadyPro(:))

break;

end

end

f14(~alreadyPro) = zmed(~alreadyPro);

img6 = uint8(f14);

subplot(1,4,4);

imshow(img6);

title('自適應中值濾波結果');

三、結果分析

得到的結果如下:

由濾波結果,我們可以看出,對于添加了高斯噪聲和椒鹽噪聲的圖像,算術均值和幾何均值濾波器的效果比較差,尤其是幾何均值濾波器;而中值濾波器和修正后的阿爾法均值濾波器的降噪效果比前面兩種濾波器的效果要好很多,修正的阿爾法均值濾波器的效果最好,使圖像變得更平滑。中值濾波器和自適應中值濾波器進行比較,兩者的降噪效果都不錯,不過中值濾波器導致了原始圖像細節的丟失,而自適應中值濾波器則很好地保持了原始圖像的清晰度和細節。

標簽:subplot,濾波器,f2,title,均值,濾波,幾種,MATLAB

來源: https://www.cnblogs.com/Ph-one/p/11604362.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的matlab中多边形滤波器,几种常见空间滤波器MATLAB实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。