MATLAB实验三

更新时间:2023-08-20 18:22:01 阅读量: 高等教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Matlab实验,图形处理相关,包括灰度线性非线性变换,dct图像压缩,均值中值滤波

Matlab 实验三

2 x1、 使用非线性灰度变换函数 f ( x ) 1 对一幅彩色图像进行点运算,并与使

0.64用线性灰度变换函数 f ( x ) x 4 进行点运算的结果进行比较。

解答:

原图片读入之后数据类型为unit8,并不能进行非线性的1 x2变换,先转换成为double类型数据进行非线性变换。

可见非线性变换是原图的颜色发生了变化,而线性变换只是把原图的亮度变化了而已。

MATLAB代码:

%test1

clc;close all;clear all;

im = imread('alies.jpg');

im_double = im2double(im);

im1 = 1 - im_double.^2;

im2 = 4 + 0.64 * im;

figure();

subplot(131);

imshow(im);title('原图');

subplot(132);

imshow(im1);title('非线性变换');

subplot(133);

imshow(im2);title('线性变换');

Matlab实验,图形处理相关,包括灰度线性非线性变换,dct图像压缩,均值中值滤波

2、对一幅图像进行DCT变换,分别保留最大的总变换系数个数的1/4、1/8和1/16个变换系数,进行反DCT得到重构图像,显示原图像和重构图像并计算重构图像的峰值信噪比。

解答: 为了避免直接截取DCT系数造成的图像大小变化,采取对截取掉的部分填充0的方法进行DCT系数截取。

原图和重构图像如下:

MATLAB代码:

[test2.m]

%test2

clc;close all;clear all;

im = imread('alies.jpg');

im = im2double(im);

im_size = size(im);

lenx = im_size(1);

leny = im_size(2); 计算得出峰值信噪比分别为:65.5464,64.1656,63.1766。

Matlab实验,图形处理相关,包括灰度线性非线性变换,dct图像压缩,均值中值滤波

im_dct(:,:,1) = dct2(im(:,:,1));

im_dct(:,:,2) = dct2(im(:,:,2));

im_dct(:,:,3) = dct2(im(:,:,3));

im_dct_4 = zeros(im_size);im_dct_8 = zeros(im_size);im_dct_16 = zeros(im_size);

im_dct_4(1:floor(lenx/4), 1:floor(leny/4), :)

1:floor(leny/4), :);

im_dct_8(1:floor(lenx/8), 1:floor(leny/8), :)

1:floor(leny/8), :);

im_dct_16(1:floor(lenx/16), 1:floor(leny/16), :)

1:floor(leny/16), :);

im_4(:,:,1) = idct2(im_dct_4(:, :, 1));

im_4(:,:,2) = idct2(im_dct_4(:, :, 2));

im_4(:,:,3) = idct2(im_dct_4(:, :, 3));

im_8(:,:,1) = idct2(im_dct_8(:, :, 1));

im_8(:,:,2) = idct2(im_dct_8(:, :, 2));

im_8(:,:,3) = idct2(im_dct_8(:, :, 3));

im_16(:,:,1) = idct2(im_dct_16(:, :, 1));

im_16(:,:,2) = idct2(im_dct_16(:, :, 2));

im_16(:,:,3) = idct2(im_dct_16(:, :, 3));

figure();

subplot(232); = im_dct(1:floor(lenx/4), = im_dct(1:floor(lenx/8), = im_dct(1:floor(lenx/16),

Matlab实验,图形处理相关,包括灰度线性非线性变换,dct图像压缩,均值中值滤波

imshow(im);title('原图');

subplot(234);

imshow(im_4);title('1/4 DCT')

subplot(235);

imshow(im_8);title('1/8 DCT');

subplot(236);

imshow(im_16);title('1/16 DCT');

pnsr_4 = pnsr(im_4, im)

pnsr_8 = pnsr(im_8, im)

pnsr_16 = pnsr(im_16, im)

[pnsr.m]

function pnsr = pnsr( I, P )

%计算原始图像I和处理后图像P之间的峰值信噪比

if size(I) ~= size(P)

error('图像大小必须相同');

elseif length(size(I)) == 3

%彩色图像

sizep = size(I);

mse = 0;lenx = sizep(1);leny = sizep(2);

for z = 1:3

for x = 1:lenx

for y = 1:leny

mse = mse + abs(I(x, y, z)^2 - P(x, y, z)^2);

end

end

mse = mse / (lenx * leny);

end

mse = mse/3;

Matlab实验,图形处理相关,包括灰度线性非线性变换,dct图像压缩,均值中值滤波

mse = double(mse);

pnsr = 10 * log10(255^2/mse);

elseif length(size(I)) == 2

%灰度图像

sizep = size(I);

mse = 0;lenx = sizep(1);leny = sizep(2);

for x = 1:lenx

for y = 1:leny

mse = mse + abs(I(x, y, z)^2 - P(x, y, z)^2);

end

end

mse = mse / (lenx * leny);

mse = double(mse);

pnsr = 10 * log10(255^2/mse);

end

end

3、对一幅分别添加了椒盐噪声和高斯白噪声的图象进行均值和中值滤波(取三种不同大小的模板),并分析实验结果。

解答: 如下图所示,对原图加入椒盐噪声,分别使用2x2,4x4,8x8的模板对图像进行滤波。

可见中值滤波对椒盐噪声的滤波效果非常明显,2x2的模板率出了大部分噪声,还有小部分剩余,4x4基本率出了全部噪声,而8x8模板在滤除噪声的同时对原图像造成了不小的影响,是图像边缘模糊。

但是均值滤波的效果就不是很明显了,无论是2x2,4x4还是8x8滤波后都能看到明显的噪声。

Matlab实验,图形处理相关,包括灰度线性非线性变换,dct图像压缩,均值中值滤波

如下图所示,对原始图像加入高斯噪声,然后分别使用2x2,4x4,8x8的模板对图像进行均值滤波。

可见,使用中值滤波对图像的噪声并不能很好的过滤,但也能够过滤掉一部分噪声,8x8的滤波效果最好,但是对原始图像产生了比较大的影响,背景的纹理基本不可见。

使用均值滤波对高斯噪声的滤波结果比较理想,使用4x4滤波后的图像基本看不到噪声的存在,使用8x8模板之后噪声已经非常小了,但是原图像却发生了很大的变化。

Matlab实验,图形处理相关,包括灰度线性非线性变换,dct图像压缩,均值中值滤波

综上所述,对于不同的噪声类型不同的滤波方法产生的结果不同。中值滤波对于椒盐噪声有很好的滤波效果,而均值滤波对搞死噪声有较好的滤波效果。同时中值滤波和均值滤波在使用的模板过大的时候会对图形造成较大的影响,边缘模糊,细节纹理丢失等。

MATLAB代码:

[test3_salt.m]

%test3

clc;close all;clear all;

im = imread('alies.jpg');im = im2double(im);

%加入椒盐噪声和高斯噪声

im_salt = imnoise(im, 'salt & pepper', 0.1);

%中值滤波(2x2, 4x4, 8x8)

for z = 1:3

%椒盐噪声

im_salt_mid_2x2(:,:,z) = medfilt2(im_salt(:,:,z), [2, 2]);

im_salt_mid_4x4(:,:,z) = medfilt2(im_salt(:,:,z), [4, 4]);

Matlab实验,图形处理相关,包括灰度线性非线性变换,dct图像压缩,均值中值滤波

im_salt_mid_8x8(:,:,z) = medfilt2(im_salt(:,:,z), [8, 8]); end

%均值滤波(2x2, 4x4, 8x8)

mask1 = ones(2, 2)/4;

mask2 = ones(4, 4)/16;

mask3 = ones(8, 8)/64;

for z = 1:3

%椒盐噪声

im_salt_avg_2x2(:,:,z) = conv2(im_salt(:,:,z), mask1); im_salt_avg_4x4(:,:,z) = conv2(im_salt(:,:,z), mask2); im_salt_avg_8x8(:,:,z) = conv2(im_salt(:,:,z), mask3); end

figure('name', '椒盐噪声滤波');

subplot(331);

imshow(im);title('原图');

subplot(333);

imshow(im_salt);title('椒盐噪声');

subplot(334);

imshow(im_salt_mid_2x2);title('2x2中值滤波椒盐噪声'); subplot(335);

imshow(im_salt_mid_4x4);title('4x4中值滤波椒盐噪声'); subplot(336);

imshow(im_salt_mid_8x8);title('8x8中值滤波椒盐噪声'); subplot(337);

imshow(im_salt_avg_2x2);title('2x2均值滤波椒盐噪声'); subplot(338);

imshow(im_salt_avg_4x4);title('4x4均值滤波椒盐噪声'); subplot(339);

imshow(im_salt_avg_8x8);title('8x8均值滤波椒盐噪声');

Matlab实验,图形处理相关,包括灰度线性非线性变换,dct图像压缩,均值中值滤波

[test3_gaus.m]

%test3

clc;close all;clear all;

im = imread('alies.jpg');im = im2double(im);

%加入高斯噪声和高斯噪声

im_gaus = imnoise(im, 'gaussian', 0.1);

%中值滤波(2x2, 4x4, 8x8)

for z = 1:3

%高斯噪声

im_gaus_mid_2x2(:,:,z) = medfilt2(im_gaus(:,:,z), [2, 2]); im_gaus_mid_4x4(:,:,z) = medfilt2(im_gaus(:,:,z), [4, 4]); im_gaus_mid_8x8(:,:,z) = medfilt2(im_gaus(:,:,z), [8, 8]); end

%均值滤波(2x2, 4x4, 8x8)

mask1 = ones(2, 2)/4;

mask2 = ones(4, 4)/16;

mask3 = ones(8, 8)/64;

for z = 1:3

%高斯噪声

im_gaus_avg_2x2(:,:,z) = conv2(im_gaus(:,:,z), mask1); im_gaus_avg_4x4(:,:,z) = conv2(im_gaus(:,:,z), mask2); im_gaus_avg_8x8(:,:,z) = conv2(im_gaus(:,:,z), mask3); end

figure('name', '高斯噪声滤波');

subplot(331);

imshow(im);title('原图');

subplot(333);

imshow(im_gaus);title('高斯噪声');

subplot(334);

Matlab实验,图形处理相关,包括灰度线性非线性变换,dct图像压缩,均值中值滤波

imshow(im_gaus_mid_2x2);title('2x2中值滤波高斯噪声'); subplot(335);

imshow(im_gaus_mid_4x4);title('4x4中值滤波高斯噪声'); subplot(336);

imshow(im_gaus_mid_8x8);title('8x8中值滤波高斯噪声'); subplot(337);

imshow(im_gaus_avg_2x2);title('2x2均值滤波高斯噪声'); subplot(338);

imshow(im_gaus_avg_4x4);title('4x4均值滤波高斯噪声'); subplot(339);

imshow(im_gaus_avg_8x8);title('8x8均值滤波高斯噪声');

本文来源:https://www.bwwdw.com/article/esuj.html

微信扫码分享

《MATLAB实验三.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文
范文搜索
下载文档
Top