您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 医学现状与发展 > DCT与DWT对图像处理的matlab仿真
1数字图像处理实验报告DCT和DWT的MATLAB仿真实验目的学习DCT变换基本原理;掌握DCT变换的特性;理解DCT变换在图像图理中的应用;学习DWT变换基本原理;掌握DWT变换的特性;理解DWT变换在图像图理中的应用。2实验内容及结果离散余弦变换(DCT)对lena、camenaman、bird三幅灰度图像做DCT变换。1、lena.tif(1)lena.tif原始图像如图1-1:图1-1(2)对整幅图像直接进行DCT变换,得系数图如图1-2。图1-2观察系数图,会发现经过DCT变换后,能量分布不均匀,左上角原始图像DCT系数3低频部分系数值高,右下角高频部分系数值低,这表明图像能量主要集中在低频上。(3)为了定量分析系数能量分布情况,取系数矩阵左上角16*16个相素,计算其能量在整个矩阵中占的百分比。经计算,得能量百分比为energy_percent=96.32%。可见低频部分能量在整幅图中占的比重是非常大的。(4)由以上分析可以得出,高频成分能量在图中占的比重很小,它反映的是图像的细节,因此,可丢掉高频信息,实现数据压缩。在具体实现上,对图像进行8*8分块DCT变换,并只保留每个分块系数左上角10个系数(共64个系数),重构图像并对比。对比如图1-3。图1-3对比原图和压缩后的图像,可以看出,保留10个像素值重构图像仍然较好,视觉效果可以接受。计算原始图像和压缩后的图像的峰值信噪比(PSNR),得原始图像压缩后的图像4PSNR=+35.01dB。2、cameraman.tifCameraman和bird的DCT变换处理方式与lena基本相同,因此对于这两幅图像只附上其处理结果,具体过程及对结果分析不再赘述。(1)cameraman原始图像如图1-4。图1-4(2)系数图如图1-5。图1-5(3)计算左上角16*16个像素的能量分布百分比,得原始图像像DCT系数5energy_percent=94.83%。(4)对比原始图像和压缩后的图像,如图1-6。图1-6计算峰值信噪比,得PSNR=+33.79dB。3、bird.tif(1)bird原始图像如图1-7。图1-7原始图像压缩后的图像原始图像6(2)系数图如图1-8。图1-8(3)计算左上角16*16个像素的能量百分比,得energy_percent=97.19%。(4)对比原如图像和压缩后的图像,如图1-9。图1-9计算峰值信噪比,得PSNR=+33.91dB。DCT系数原始图像压缩后的图像7二、离散小波变换(DWT)仍然采用lena、cameraman、bird这三幅图像进行离散小波变换。采用的小波为哈尔小波(haar)。1、lena.tif(1)lena的原始图像如下图2-1。图2-1(2)对图像进行一级分解,图像被分解为2*2个空间分布的小波系数:近似值系数、水平细节系数、垂直细节系数和对角细节系数。如图2-2。原始图像近似值系数水平细节系数垂直细节系数对角细节系数8观察对比这4个子带,小波系数的分布特点是越往低频子带系数值越大,包涵的图像信息越多,对视觉比较重要,如近似值系数。越往高频子带系数值越小,包涵的图像信息越少,对视觉来说不太重要。因此,可只保留低频子带,从而实现图像压缩。(3)计算系数能量比。保留低频子带系数,计算其占的能量百分比为energy_percent=99.50%。可见,低频子带占了绝大部分能量。(4)用低频子带系数重构图像,并与原图像对比,如下所示。图2-3将由低频子带重构的图像与原图像对比,可以发现视觉效果非常好,计算两幅图的峰值信噪比,得PSNR=+34.99dB。2、cameraman.tif原始图像重构图像9对于cameraman和bird两幅图像,只附上实验结果,具体过程不再赘述。(1)caemraman原始图像如图2-4。图2-4(2)一级分解各子带如图2-5。图2-5(3)计算低频子带系数能量比,得energy_percent=98.98%。(4)对比原始图像和重构图像,如下图2-6所示。原始图像像近似值系数水平细系数垂直细节系数对角细节系数10图2-6计算峰值信噪比,得PSNR=+34.63dB。3、bird.tif(1)bird原始图像如下图2-7所示。图2-7(2)一级分解各子带系数如图2-8所示。原始图像重构图像原始图像11图2-8(3)计算低频子带系数能量比,得energy_percent=99.235。(4)对比原始图像和重构图像,如下图2-9所示。图2-9计算峰值信噪比,得PSNR=+34.06dB。近似值系数水平细节系数垂直细节系数对角细节系数原始图像重构图像12附录1DCT源代码clear;clc%读取并显示原图像i1=imread('lena.tif');%其他两幅图像需将此处改为cameraman.tif和bird.tiffigure(1);imshow(i1);title('原始图像')%进行DCT变换并显示DCT系数图j=dct2(i1);figure(2);imshow(log(abs(j)),[]);title('DCT系数');colormap(jet(64));%分析DCT系数能量分布情况a=zeros(size(i1));a(1:16,1:16)=1;e1=(abs(j).*a).^2;e2=abs(j).^2;c1=sum(sum(e1,1),2);c2=sum(sum(e2,1),2);energy_percent=c1/c213%对图像进行分块DCT变换fun1=@dct2;k=blkproc(i1,[88],fun1);%数据压缩,丢弃高频数据T=[1111000011100000110000001000000000000000000000000000000000000000];l=blkproc(k,[88],'P1.*x',T);fun2=@idct2;i2=blkproc(l,[88],fun2);%对比原始图像与压缩后的图像,并求panri2=(i2)/255;i2=im2uint8(i2);figure(3);subplot(1,2,1);imshow(i1);title('原始图像');14subplot(1,2,2);imshow(i2);title('压缩后的图像');psnr(i1,i2);附录2DWT源代码clear%读取并显示原始图像a=imread('lena.tif');%其他两幅图像需将此处改为cameraman.tif和bird.tiffigure(1);imshow(a);title('原始图像')%进行一级小波变换;采用haar小波w='haar';[ca1,ch1,cv1,cd1]=dwt2(a,w);a1=upcoef2('a',ca1,w,1);h1=upcoef2('h',ch1,w,1);v1=upcoef2('v',cv1,w,1);d1=upcoef2('d',cd1,w,1);%显示各部分系数figure(2);subplot(2,2,1);imshow(a1,[]);title('近似值系数')subplot(2,2,2);imshow(ch1,[0,30]);title('水平细节系数')subplot(2,2,3);imshow(cv1,[0,30]);title('垂直细节系数')subplot(2,2,4);imshow(cd1,[0,30]);title('对角细节系数')15%计算系数能量分布情况m=abs(a1).^2;n=abs(a1.^2+h1.^2+v1.^2+d1.^2);energy_percent=sum(sum(m,1),2)/sum(sum(n,1),2)%只保留近似值系数,对比原始图像和重构的图像a1=(a1)/255;a1=im2uint8(a1);figure(3);subplot(1,2,1);imshow(a);title('原始图像')subplot(1,2,2);imshow(a1);title('重构图像')psnr(a,a1);16附录3PSNR计算函数functionpsnr=psnr(a,b)c=b-a;MSE=mean(mean(c.^2));psnr=10*log10(255^2/MSE);disp(sprintf('PSNR=+%5.2fdB',psnr));
本文标题:DCT与DWT对图像处理的matlab仿真
链接地址:https://www.777doc.com/doc-5468856 .html