阅读 93

【图像去噪】基于matl中值+均值+Lee+Kuan图像滤波【含Matlab源码 1179期】

一、简介

1 中值滤波 (1)概念: 在这里插入图片描述 (2)原理解释: 在这里插入图片描述 2 均值滤波 均值滤波是指任意一点的像素值,都是周围 N \times M 个像素值的均值。例如下图中,红色点的像素值是其周围蓝色背景区域像素值之和除25,25=5\times5 是蓝色区域的大小。 在这里插入图片描述 均值滤波详细的计算方法如下图所示: 在这里插入图片描述 其中5\times5的矩阵称为核,针对原始图像内的像素点,采用核进行处理,得到结果图像,如下图所示: 在这里插入图片描述 在这里插入图片描述 提取 1/25 可以将核转换为如下形式: 在这里插入图片描述

3 Lee滤波 在这里插入图片描述

二、部分源代码

clear;
A1=imread('44.jpg')
A=double(A1);
figure(1)
imshow(A/256)
title('原始图像');
[a,b]=size(A);

ASp=imnoise(A/256,'speckle',0.02);
figure(2)
imshow(ASp);
title('含散斑噪声的图像');
% imwrite(ASp/256,'55.jpg');
index_ASp=std2(ASp)/mean2(ASp);%散斑指数  潘云《数字全息技术中散斑噪声滤波算法比较》 
ENL=mean2(ASp)^2/std2(ASp)^2;%等效视数
psnr=PSNR(A,ASp);

%中值滤波
ME=Medf(ASp,3);%邻域 3*3
ENL_Me3=mean2(ME)^2/std2(ME)^2;%等效视数
index_ME3=std2(ME)/mean2(ME);%散斑指数 
psnr_ME3=PSNR(A,ME);
figure(3)
% subplot(2,2,1);
imshow(ME);
title('中值滤波后的图像 3*3');

ME=Medf(ASp,5);%邻域
ENL_Me5=mean2(ME)^2/std2(ME)^2;%等效视数
index_ME5=std2(ME)/mean2(ME);%散斑指数 
psnr_ME5=PSNR(A,ME);
figure(4)
% subplot(2,2,2);
imshow(ME);
title('中值滤波后的图像 5*5');

ME=Medf(ASp,7);%邻域 
ENL_Me7=mean2(ME)^2/std2(ME)^2;%等效视数
index_ME7=std2(ME)/mean2(ME);%散斑指数 
psnr_ME7=PSNR(A,ME);
figure(5)
% subplot(2,2,3);
imshow(ME);
title('中值滤波后的图像 7*7');

ME=Medf(ASp,9);%邻域
ENL_Me9=mean2(ME)^2/std2(ME)^2;%等效视数
index_ME9=std2(ME)/mean2(ME);%散斑指数 
psnr_ME9=PSNR(A,ME);
figure(6)
% subplot(2,2,4);
imshow(ME);
title('中值滤波后的图像 9*9');

%Lee滤波
LE=Leef(256*ASp,5);
ENL_Lee5=mean2(LE)^2/std2(LE)^2;%等效视数
index_LE5=std2(LE)/mean2(LE);%散斑指数 
psnr_LE5=PSNR(A,LE);
figure(7)
imshow(LE);
title('Lee滤波后的图像 5*5');

LE=Leef(256*ASp,7);
ENL_Lee7=mean2(LE)^2/std2(LE)^2;%等效视数
index_LE7=std2(LE)/mean2(LE);%散斑指数 
psnr_LE7=PSNR(A,LE);
figure(8)
imshow(LE);
title('Lee滤波后的图像 7*7');

LE=Leef(256*ASp,9);
ENL_Lee9=mean2(LE)^2/std2(LE)^2;%等效视数
index_LE9=std2(LE)/mean2(LE);%散斑指数 
psnr_LE9=PSNR(A,LE);
figure(9)
imshow(LE);
title('Lee滤波后的图像 9*9');


%Kuan滤波
KU=Kuanf(256*ASp,5);
ENL_Kuan5=mean2(KU)^2/std2(KU)^2;%等效视数
index_Ku5=std2(KU)/mean2(KU);%散斑指数 
psnr_Ku5=PSNR(A,KU);
figure(10)  
imshow(KU); 
title('Kuan滤波后的图像 5*5');

KU=Kuanf(256*ASp,7);
ENL_Kuan7=mean2(KU)^2/std2(KU)^2;%等效视数
index_Ku7=std2(KU)/mean2(KU);%散斑指数 
psnr_Ku7=PSNR(A,KU);
figure(11)  
imshow(KU); 
title('Kuan滤波后的图像 7*7');

KU=Kuanf(256*ASp,9);
ENL_Kuan9=mean2(KU)^2/std2(KU)^2;%等效视数
index_Ku9=std2(KU)/mean2(KU);%散斑指数 
psnr_Ku9=PSNR(A,KU);
figure(12)  
imshow(KU); 
title('Kuan滤波后的图像 9*9');


%均值滤波
AV=Avef(ASp,3)
ENL_Aver3=mean2(AV)^2/std2(AV)^2;%等效视数
index_AV3=std2(AV)/mean2(AV);%散斑指数 
psnr_AV3=PSNR(A,AV);
figure(13)  
imshow(AV);
title('均值滤波后的图像 3*3'); 

AV=Avef(ASp,5)
ENL_Aver5=mean2(AV)^2/std2(AV)^2;%等效视数
index_AV5=std2(AV)/mean2(AV);%散斑指数 
psnr_AV5=PSNR(A,AV);
figure(14)  
imshow(AV);
title('均值滤波后的图像 5*5'); 

AV=Avef(ASp,7)
ENL_Aver7=mean2(AV)^2/std2(AV)^2;%等效视数
index_AV7=std2(AV)/mean2(AV);%散斑指数 
psnr_AV7=PSNR(A,AV);
figure(15)  
imshow(AV);
title('均值滤波后的图像 7*7'); 

AV=Avef(ASp,9)
ENL_Aver9=mean2(AV)^2/std2(AV)^2;%等效视数
index_AV9=std2(AV)/mean2(AV);%散斑指数 
psnr_AV9=PSNR(A,AV);
figure(16)  
imshow(AV);
title('均值滤波后的图像 9*9'); 
function  [RIL] = Leef(A,N)
% Lee滤波
% A 输入灰度图像
% RIL 输出Lee滤波后的灰度图像
Ilee=A;

[height,width] = size(Ilee); % height, width:图像的高和宽
nr = floor(N/2); % N = 2*nr+1; 

Ilee = double(Ilee);
Ilee2 = double(Ilee);

% L 视强度图像
L = 9; % 视数
delta = 1/sqrt(L); %噪声标准差


for i = 1:height
    for j = 1:width
        
        % 计算N*N窗口的均值与方差
        sum = 0;
        sum2 = 0;
        num = 0;
        for k = -nr:nr
            for m = -nr:nr
                if( (i+k >=1) && (i+k <= height) && (j+m >= 1) && (j+m <= width) )  % 避免数组越界
                    num = num + 1;
                    sum = sum + Ilee(i+k,j+m);
                    sum2 = sum2 + Ilee(i+k,j+m)*Ilee(i+k,j+m);
                end
            end
        end
        
        u = sum/num; % m均值  E(fxy)
        v = sum2/num - u*u; % 方差 vxy
        cu=delta/1;
        ci=sqrt(v)/u;
        
        % 计算中心点的值
        if(u == 0)
            k = 0;
        else
             k = (1 - cu*cu/(ci*ci));%   Qxy 《SAR图像斑点噪声抑制方法与应用研究》杨红磊
%             k=(1-delta/sqrt(v))/(1+delta);
%              k = (v - delta*delta*u*u) / (v + v*delta*delta); 
        end
        
复制代码

三、运行结果

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

四、备注

版本:2014a

文章分类
人工智能
文章标签