数字图像处理 实验八 图像变换压缩编码
- 格式:doc
- 大小:122.50 KB
- 文档页数:4
实验八图像变换压缩编码一,实验目的:1,掌握变换压缩编码的原理与方法2,了解有损压缩图像质量评价的指标二,实验条件1,MATLAB软件2,典型的灰度,彩色图像。
三,实验原理1,去除数据冗余度可以有效地压缩数据2,图像编码压缩的主要技术指标:压缩比,客观评价SNR,主观评价四,实验内容1,以DCT变换为例,采用标准亮度量化表,得有损压缩的变换值,计算并显示其直方图2,采用标准量化表将上述变换值反量化回去后用IDCT变换回图像,比较并计算压缩前后图像的差异(MSE,PSNR等)3,根据由1计算得到的直方图试判断采用Huffman编码的平均码长。
五,实验步骤1,以DCT变换为例,采用标准亮度量化表,得有损压缩的变换值,计算并显示其直方图(1)代码如下所示I=imread('a.jpg');J=rgb2gray(I);J=imresize(J,[512 512]);%imshow(J);A=zeros(8,8);B=zeros(512,512);lighttable=... %标准亮度量化表[16 11 10 16 24 40 51 61,12 12 14 19 26 58 60 55,14 13 16 24 40 57 69 56,14 17 22 29 51 87 80 62,18 22 37 56 68 109 103 77,24 35 55 64 81 104 113 92,49 64 78 87 103 121 120 101,72 92 95 98 112 100 103 99];for i=1:64 %用i,j来控制子块for j=1:64for m=(8*(i-1)+1):8*ifor n=(8*(j-1)+1):8*jA(m-(8*(i-1)+1)+1,n-(8*(j-1)+1)+1)=J(m,n);%提取8*8子块endendC1=dct2(A); %对子块进行dct2变换C2=round(C1./lighttable); %将C1进行量化,并取整for p=1:8 %将子块按序存进512*512的矩阵中for q=1:8B(p+8*(i-1),q+8*(j-1))=C2(p,q);endendendendH=zeros(1,256*2-1);for i=1:mfor j=1:nH(B(i,j)+255)=H(B(i,j)+255)+1; %统计各值概率endendX=[-255:255];plot(X,H); %绘制坐标为-255—255的直方图(2)直方图如下所示-300-200-100010020030000.511.522.552,采用标准量化表将上述变换值反量化回去后用IDCT 变换回图像,比较并计算压缩前后图像的差异(MSE ,PSNR 等)(1)代码如下所示for i=1:64 %用i ,j 来控制子块for j=1:64for m=(8*(i-1)+1):8*ifor n=(8*(j-1)+1):8*jA(m-(8*(i-1)+1)+1,n-(8*(j-1)+1)+1)=B(m,n);endendC3=A.*lighttable; %将子块反量化回去C4=idct2(C3); %对C3进行IDCT 变换for p=1:8for q=1:8D(p+8*(i-1),q+8*(j-1))=C4(p,q);endendendendD=uint8(D);subplot(1,2,1),imshow(J);subplot(1,2,2),imshow(D);%计算J 和D 均方根误差e = double(J) - double(D);[m, n] = size(e);MSE = sqrt(sum(sum(e.^2))/(m*n));k = 8;%k为图像是表示地个像素点所用的二进制位数,即位深。
实验项目3、图像压缩与编码一、实验目的(1)理解图像压缩编码的基本原理;(2)掌握用程序代码实现DCT变换编码;(3)掌握用程序代码实现游程编码。
二、实验原理及知识点1、图像压缩编码图像信号经过数字化后,数据量相当大,很难直接进行保存。
为了提高信道利用率和在有限的信道容量下传输更多的图像信息,必须对图像进行压缩编码。
图像压缩技术标准一般可分为如下几种:JPEG压缩(JPEG Compression)、JPEG 2000、H.26X标准(H.26X standards)以及MPEG标准(MPEG standards)。
数字压缩技术的性能指标包括:压缩比、平均码字长度、编码效率、冗余度。
从信息论角度分,可以将图像的压缩编码方法分为无失真压缩编码和有限失真编码。
前者主要包括Huffman编码、算术编码和游程编码;后者主要包括预测编码、变换编码和矢量量化编码以及运动检测和运动补偿技术。
图像数据压缩的目的是在满足一定图像质量的条件下,用尽可能少的比特数来表示原始图像,以提高图像传输的效率和减少图像存储的容量,在信息论中称为信源编码。
图像压缩是通过删除图像数据中冗余的或者不必要的部分来减小图像数据量的技术,压缩过程就是编码过程,解压缩过程就是解码过程。
2、游程编码某些图像特别是计算机生成的图像往往包含许多颜色相同的块,在这些块中,许多连续的扫描行或者同一扫描行上有许多连续的像素都具有相同的颜色值。
在这些情况下就不需要存储每一个像素的颜色值,而是仅仅存储一个像素值以及具有相同颜色的像素数目,将这种编码方法称为游程(或行程)编码,连续的具有相同颜色值的所有像素构成一个行程。
在对图像数据进行编码时,沿一定方向排列的具有相同灰度值的像素可看成是连续符号,用字串代替这些连续符号,可大幅度减少数据量。
游程编码记录方式有两种:①逐行记录每个游程的终点列号:②逐行记录每个游程的长度3、DCT变换编码变换编码是在变换域进行图像压缩的一种技术。
实验三图像编码一、实验内容:用Matlab语言、C语言或C++语言编制图像处理软件,对某幅图像进行时域和频域的编码压缩。
二、实验目的和意义:1. 掌握哈夫曼编码、香农-范诺编码、行程编码2.了解图像压缩国际标准三、实验原理与主要框架:3.1实验所用编程环境:Visual C++6.0(简称VC)3.2实验处理的对象:256色的BMP(BIT MAP )格式图像BMP(BIT MAP )位图的文件结构:(如图3.1)图3.1 位图的文件结构具体组成图:单色DIB 有2个表项16色DIB 有16个表项或更少 256色DIB 有256个表项或更少 真彩色DIB 没有调色板每个表项长度为4字节(32位) 像素按照每行每列的顺序排列每一行的字节数必须是4的整数倍biSize biWidth biHeight biPlanes biBitCount biCompression biSizeImagebiXPelsPerMeter biYPelsPerMeter biClrUsedbiClrImportantbfType=”BM ” bfSizebfReserved1 bfReserved2 bfOffBits BITMAPFILEHEADER位图文件头 (只用于BMP 文件)BITMAPINFOHEADER位图信息头Palette 调色板DIB Pixels DIB 图像数据3.3 数字图像基本概念数字图像是连续图像(,)f x y 的一种近似表示,通常用由采样点的值所组成的矩阵来表示:(0,0)(0,1)...(0,1)(1,0)(1,1)...(1,1).........(1,0)(1,1)...(1,1)f f f M f f f M f N f N f N M -⎡⎤⎢⎥-⎢⎥⎢⎥⎢⎥----⎣⎦每一个采样单元叫做一个像素(pixel ),上式(2.1)中,M 、N 分别为数字图像在横(行)、纵(列)方向上的像素总数。
图像压缩编码实验报告一、实验目的1.了解有关数字图像压缩的基本概念,了解几种常用的图像压缩编码方式;2.进一步熟悉JPEG编码与离散余弦变换(DCT)变换的原理及含义;3.掌握编程实现离散余弦变换(DCT)变换及JPEG编码的方法;4.对重建图像的质量进行评价。
二、实验原理1、图像压缩基本概念及原理图像压缩主要目的是为了节省存储空间,增加传输速度。
图像压缩的理想标准是信息丢失最少,压缩比例最大。
不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。
压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。
应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分为以下3类:(1)无损压缩编码种类哈夫曼(Huffman)编码,算术编码,行程(RLE)编码,Lempel zev编码。
(2)有损压缩编码种类预测编码,DPCM,运动补偿;频率域方法:正交变换编码(如DCT),子带编码;空间域方法:统计分块编码;模型方法:分形编码,模型基编码;基于重要性:滤波,子采样,比特分配,向量量化;(3)混合编码JBIG,H.261,JPEG,MPEG等技术标准。
2、JPEG 压缩编码原理JPEG是一个应用广泛的静态图像数据压缩标准,其中包含两种压缩算法(DCT和DPCM),并考虑了人眼的视觉特性,在量化和无损压缩编码方面综合权衡,达到较大的压缩比(25:1以上)。
JPEG既适用于灰度图像也适用于彩色图像。
其中最常用的是基于DCT变换的顺序式模式,又称为基本系统。
JPEG 的压缩编码大致分成三个步骤:(1)使用正向离散余弦变换(forward discrete cosine transform,FDCT)把空间域表示的图变换成频率域表示的图。
(2)使用加权函数对DCT系数进行量化,该加权函数使得压缩效果对于人的视觉系统最佳。
(3)使用霍夫曼可变字长编码器对量化系数进行编码。
图像压缩编码方法图像压缩编码是一种通过减少图像数据的表示量来降低存储和传输成本的技术。
图像压缩编码方法包括有损压缩和无损压缩两种。
有损压缩是指在压缩过程中会丢失一定的图像信息,但通常可以接受的程度在人眼感知上是不可察觉的。
有损压缩编码方法主要通过利用图像中的冗余信息和人眼视觉系统的特性来实现图像的压缩,主要有几种方法:1. 颜色空间转换:将RBG图像转换为YUV或者将CMYK图像转换为RGB,通过减少颜色通道的数量来降低数据量。
2. 离散余弦变换(Discrete Cosine Transform,DCT):DCT是一种将原始图像通过变换后得到一系列频率系数的方法,低频系数所表示的信息对于人眼来说更加重要,而高频系数相对不重要,因此可以对高频系数进行压缩或丢弃。
3. 量化(Quantization):通过对DCT系数进行适当的量化,将系数的数值范围映射到较小的范围内,进一步减小数据量。
量化的精度越高,则数据量越小,但图像质量也会受到影响。
4. 预测编码(Predictive Coding):利用图像中像素之间的相关性,通过对当前像素值的预测来减少需要传输的数据。
常用的预测编码方法有差值编码(Differential Encoding)和运动补偿(Motion Compensation)。
5. 生成码字(Codebook):通过统计图像中各个像素值的频次来生成一个码本,将高频次出现的像素值用较短的码字表示,以减小数据量。
有损压缩编码方法的主要优点是压缩率高,但缺点是压缩后图像质量有损失。
适用于图像中存在较多冗余信息或对图像质量要求不高的场景,如网络传输、存储等。
无损压缩编码是指在压缩过程中不丢失任何图像信息,通过利用图像内部的冗余性来减小数据量。
常用的无损压缩编码方法有:1. 霍夫曼编码(Huffman Coding):将出现频率较高的像素值用较短的编码表示,出现频率较低的像素值用较长的编码表示,以减小数据量。
实验八图像变换压缩编码
一,实验目的:
1,掌握变换压缩编码的原理与方法
2,了解有损压缩图像质量评价的指标
二,实验条件
1,MATLAB软件
2,典型的灰度,彩色图像。
三,实验原理
1,去除数据冗余度可以有效地压缩数据
2,图像编码压缩的主要技术指标:压缩比,客观评价SNR,主观评价四,实验内容
1,以DCT变换为例,采用标准亮度量化表,得有损压缩的变换值,计算并显示其直方图
2,采用标准量化表将上述变换值反量化回去后用IDCT变换回图像,比较并计算压缩前后图像的差异(MSE,PSNR等)
3,根据由1计算得到的直方图试判断采用Huffman编码的平均码长。
五,实验步骤
1,以DCT变换为例,采用标准亮度量化表,得有损压缩的变换值,计算并显示其直方图
(1)代码如下所示
I=imread('a.jpg');
J=rgb2gray(I);
J=imresize(J,[512 512]);
%imshow(J);
A=zeros(8,8);
B=zeros(512,512);
lighttable=... %标准亮度量化表
[16 11 10 16 24 40 51 61,
12 12 14 19 26 58 60 55,
14 13 16 24 40 57 69 56,
14 17 22 29 51 87 80 62,
18 22 37 56 68 109 103 77,
24 35 55 64 81 104 113 92,
49 64 78 87 103 121 120 101,
72 92 95 98 112 100 103 99];
for i=1:64 %用i,j来控制子块
for j=1:64
for m=(8*(i-1)+1):8*i
for n=(8*(j-1)+1):8*j
A(m-(8*(i-1)+1)+1,n-(8*(j-1)+1)+1)=J(m,n);%提取
8*8子块
end
end
C1=dct2(A); %对子块进行dct2变换
C2=round(C1./lighttable); %将C1进行量化,并取整
for p=1:8 %将子块按序存进512*512的矩
阵中
for q=1:8
B(p+8*(i-1),q+8*(j-1))=C2(p,q);
end
end
end
end
H=zeros(1,256*2-1);
for i=1:m
for j=1:n
H(B(i,j)+255)=H(B(i,j)+255)+1; %统计各值概率
end
end
X=[-255:255];
plot(X,H); %绘制坐标为-255—255的直方图
(2)直方图如下所示
-300-200-1000100200300
00.5
1
1.5
2
2.5
5
2,采用标准量化表将上述变换值反量化回去后用IDCT 变换回图像,比
较并计算压缩前后图像的差异(MSE ,PSNR 等)
(1)代码如下所示
for i=1:64 %用i ,j 来控制子块
for j=1:64
for m=(8*(i-1)+1):8*i
for n=(8*(j-1)+1):8*j
A(m-(8*(i-1)+1)+1,n-(8*(j-1)+1)+1)=B(m,n);
end
end
C3=A.*lighttable; %将子块反量化回去
C4=idct2(C3); %对C3进行IDCT 变换
for p=1:8
for q=1:8
D(p+8*(i-1),q+8*(j-1))=C4(p,q);
end
end
end
end
D=uint8(D);
subplot(1,2,1),imshow(J);
subplot(1,2,2),imshow(D);
%计算J 和D 均方根误差
e = double(J) - double(D);
[m, n] = size(e);
MSE = sqrt(sum(sum(e.^2))/(m*n));
k = 8;
%k为图像是表示地个像素点所用的二进制位数,即位深。
fmax = 2.^k - 1;
a = fmax.^2;
b = sum(sum(e.^2));
PSNR = 10*log(m*n*a/b);
(2)显示压缩前后图像
(3)显示MSE和PSNR的值
MSE=4.4339
PSNR=81.04
3,根据由1计算得到的直方图试判断采用Huffman编码的平均码长。
答:由1的直方图可以确定一个大的分布值为-3—3。
即编码需要的比特数位3位。
其中有一位来表示正负。
六,讨论与分析
1,有可能增强压缩效率的部分在哪里?
在取直方图的时候,综合整幅图像的数据。
使得值分布得更集中,可以更有效地去除数据冗余度从而压缩数据。