信息论与信源编码实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《信息论与编码》实验报告
1 实验目的
(1) 理解信源编码的基本原理;
(2) 熟练掌握Huffman编码的方法;
(3) 理解无失真信源编码和限失真编码方法在实际图像信源编码应用中的差异。
2 实验设备与软件
(1) PC计算机系统
(2) VC++6.0语言编程环境
(3) 基于VC++6.0的图像处理实验基本程序框架imageprocessing
(4) 常用图像浏览编辑软件Acdsee和数据压缩软件winrar。
(5) 实验所需要的bmp格式图像(灰度图像若干幅)
3 实验内容与步骤
(1) 针对“图像1.bmp”、“图像2.bmp”和“图像3.bmp”进行灰度频率统计(即计算图像灰度直方图),在此基础上添加函数代码构造Huffman码表,针对图像数据进行Huffman编码,观察和分析不同图像信源的编码效率和压缩比。
(2) 利用图像处理软件Acdsee将“图像1.bmp”、“图像2.bmp”和“图像3.bmp”转换为质量因子为10、50、90的JPG格式图像(共生成9幅JPG图像),比较图像格式转换前后数据量的差异,比较不同品质因素对图像质量的影响;
(3) 数据压缩软件winrar将“图像1.bmp”、“图像2.bmp”和“图像3.bmp”分别生成压缩包文件,观察和分析压缩前后数据量的差异;
(4) 针对任意一幅图像,比较原始BMP图像数据量、Huffman编码后的数据量(不含码表)、品质因素分别为10、50、90时的JPG文件数据量和rar压缩包的数据量,分析不同编码方案下图像数据量变化的原因。
4 实验总结分析
实验步骤(1):
实验代码:
void CImageProcessingDoc::OnImageHuffman()
{
// TODO: Add your command handler code here
int m_Width, m_Height, m_SaveWidth;
int i,j,k;
int *b;
double *a,acl=0,size=0,ratio=0,ce=0,e=0;//acl:average code length(平均码长);ce:code efficiency(编码效率);e:entropy (信息熵);size:图像大小;ratio:压缩比;
long s=0;
b=new int[256];
a=new double[256];
for (i=0; i<256; i++)
{
b[i]=0;a[i]=0;
}
m_Width = m_pDibInit->GetWidth();
m_Height = m_pDibInit->GetHeight();
m_SaveWidth = m_pDibInit->GetSaveWidth();
for(j=0;j for(i=0;i { k=m_pDibInit->m_pDibBits[j*m_SaveWidth + i]; b[k]+=1; }//图像统计灰度个数 for (i=0; i<256; i++) a[i]=(double)b[i]/((double)m_Width*m_Height);//灰度概率统计//霍夫曼编码程序段 Huffm huffm(256); huffm.Huffman(a); huffm.HuffmanCode(); for (i=0; i<256; i++) { acl+=a[i]*(256-huffm.code[i].start);//编码后的平均码长 s+=(256-huffm.code[i].start)*b[i]; } for (i=0; i<256; i++) { if (a[i]>0.000001) e+=-1.0*a[i]*log10(a[i])/log10(2.0);//图像信息熵 } ce=e/acl;//霍夫曼编码效率 size=s/(1024.0*8.0);//图像大小 ratio=((double)m_Height*(double)m_Width*8.0)/s;//图像信源的压缩比 ss.Format("信息熵:%.3f 平均码长:%.3f 编码效率:%.3f%% 压缩比:%.3f 图像大小:%.3f kB ",e,acl,ce*100,ratio,size); } 实验结果图: 图像1 图像2 图像3 名称 类型 信息熵(比特/符号) 5.928 4.410 6.709 编码效率99.468% 99.237% 99.628% 压缩比 1.342 1.800 1.188 实验分析:不同图像信源的霍夫曼编码效率都很高,都超过了99%,这与编码方式有关,因为霍夫曼编码是一种高效的编码方式,应用了最优码的构造方式,所得的是最短的平均码长的码字,是一种最优码;编码后的图像压缩比与图像信息熵有关,信息熵越大,图像的平均信息量较大,霍夫曼编码后压缩比越小。 实验步骤(2): 实验结果图: 图像1.bmp质量因子90、50、10的jpg格式图像依次分别为: 图像2.bmp质量因子90、50、10的jpg格式图像依次分别为: 图像3.bmp质量因子90、50、10的jpg格式图像依次分别为: