数字图像处理六:图像质量评价标准&图像编码

(1)噪声滤除:分别采用均值滤波器和中值滤波器对受高斯噪声(椒盐噪声)污染的图像进行滤波处理。

对图像的去噪效果,最常用的评价指标是峰值信噪比(Peak Signal to Noise Ratio,PSNR),其计算公式如下:
在这里插入图片描述
其中,MSE指均方误差(Mean Square Error,各像素点灰度值误差平方的平均数):
在这里插入图片描述
其中,X为理想图像(未被噪声污染的图像); 为去除噪声后所得图像; 为图像的像素坐标集合(行数*列数)。显然,PSNR值越大表明去噪效果越好。考虑到噪声通常为锐化和高频信息,因此,可采用光滑滤波器或低通滤波器对图像进行噪声滤除。

%%   1.高斯噪声滤除效果
clc;clear;close all;
img = imread('实验图片素材/lena.bmp');
%均值为0.05的高斯噪声
img_n_gau = imnoise(img,'gaussian',0,0.05);
%均值滤波
N = 3;
h = fspecial('average',N);
I1 = filter2(h,img_n_gau);
%中值滤波
%指定窗口大小为3*3
I2 = medfilt2(img_n_gau,[N,N]);

subplot(221);imshow(img);title('原始图像');
subplot(222);imshow(img_n_gau);title('加入高斯噪声图像');
subplot(223);imshow(I1,[]);title('均值滤波后图像');
subplot(224);imshow(I2,[]);title('中值滤波后图像');
MSK_K1 = sum( sum( (double(I1)-double(img)).^2) / (size(img,1)*size(img,2)) )%均值滤波均方误差
MSK_K2 = sum( sum( (double(I2)-double(img)).^2) / (size(img,1)*size(img,2)) )%中值滤波均方误差
PSKR_K1 = 10*log10(255*255/MSK_K1)   %均值滤波信噪比   
PSKR_K2 = 10*log10(255*255/MSK_K2)   %中值滤波信噪比

数字图像处理六:图像质量评价标准&图像编码_第1张图片

%% 2.椒盐噪声滤除效果
clc;clear;close all;
img = imread('实验图片素材\lena.bmp');
%密度为0.05的椒盐噪声
img_n_s_p = imnoise(img,'salt & pepper',0.05);
%均值滤波
N = 3;
h = fspecial('average');
I1 = filter2(h,img_n_s_p);
%中值滤波
%指定窗口大小为3*3
I2 = medfilt2(img_n_s_p,[N,N]);

subplot(221);imshow(img);title('原始图像');
subplot(222);imshow(img_n_s_p);title('加入椒盐噪声图像');
subplot(223);imshow(I1,[]);title('均值滤波后图像');
subplot(224);imshow(I2,[]);title('中值滤波后图像');
MSK_K1 = sum( sum( (double(I1)-double(img)).^2) / (size(img,1)*size(img,2)) )%均值滤波均方误差
MSK_K2 = sum( sum( (double(I2)-double(img)).^2) / (size(img,1)*size(img,2)) )%中值滤波均方误差
PSKR_K1 = 10*log10(255*255/MSK_K1)   %均值滤波信噪比   
PSKR_K2 = 10*log10(255*255/MSK_K2)   %中值滤波信噪比

数字图像处理六:图像质量评价标准&图像编码_第2张图片

(2)哈夫曼编码:设输入图像的灰度级{y1,y2,y3,y4,y5,y6,y7,y8}出现的概率分别为0.4,0.18,0.1,0.1,0.07,0.06,0.05,0.04,对符号进行哈夫曼编码。
首先将信源符号按出现的概率大小顺序排列,并将两处概率最小的进行相加,形成一组新的概率,其次再将这组新的概率按大小顺序排列,如此重复直到只有两个概率为止。
分配码字,码字分配从最后一步开始反向进行,对最后两个概率一个赋予0码字,另一个赋予1码字。
**数字图像处理六:图像质量评价标准&图像编码_第3张图片
**

%huffman.m
function [ h,l ] = huffman(p)
n = length(p);
q = p;
m = zeros(n-1,n);
for i = 1:n-1
    [q,l] = sort(q);
    m(i,:) = [l(1:n-i+1),zeros(1,i-1)];
    q = [q(1)+q(2),q(3:n),1];
end
for i = 1:n-1
    c(i,1:n*n) = blanks(n*n);
end
c(n-1,n) = '0';
c(n-1,2*n) = '1';
for i=2:n-1
    c(n-i,1:n-1) = c(n-i+1,n*(find(m(n-i+1,:)==1)) -  (n-2):n*(find(m(n-i+1,:)==1)));
    c(n-i,n) = '0';
    c(n-i,n+1:2*n-1) = c(n-i,1:n-1);
    c(n-i,2*n) = '1';
    for j=1:i-1
        c(n-i,(j+1)*n+1:(j+2)*n) = c(n-i+1,n*(find(m(n-i+1,:)==j+1)-1)+1 : n*find(m(n-i+1,:)==j+1));
    end
end
for i=1:n
    h(i,1:n) = c(1,n*(find(m(1,:)==i)-1) + 1:find(m(1,:)==i)*n);
    ll(i) = length(find(abs(h(i,:))~=32));
end
l = sum(p.*ll);
end
#主程序
clc;clear;
p = [0.4,0.18,0.1,0.1,0.07,0.06,0.05,0.04];
[h,l] = huffman(p)

数字图像处理六:图像质量评价标准&图像编码_第4张图片

你可能感兴趣的:(机器视觉与图像处理,图像处理,计算机视觉,matlab)