资源简介
内有exe可执行文件,可直接运行来观看效果,本人用VS2008编写
代码片段和文件信息
// huffman_coding.cpp
// Huffman2015.1.12
// 作者:杜衡 电信硕3
// 输入方式:控制台输入图像路径
// 功能:对256色的灰度图像进行压缩编码
#include “stdafx.h“
#include
#include
#include
#include “Windows.h“
#include “math.h“
#include
//几个全局变量,存放读入图像的位图数据、宽、高、颜色表及每像素所占位数(比特)
//此处定义全局变量主要为了后面的图像数据访问及图像存储作准备
unsigned char *pBmpBuf;//读入图像数据的指针
int bmpWidth;//图像的宽
int bmpHeight;//图像的高
int imgSpace;//图像所需空间
RGBQUAD *pColorTable;//颜色表指针
int biBitCount;//图像类型
char str[100];//文件名称
int Num[300];//各灰度值出现的次数
float Feq[300];//各灰度值出现的频率
unsigned char *lpBuf;//指向图像像素的指针
unsigned char *m_pDib;//存放打开文件的DIB
int NodeNum; //Huffman树总节点个数
int NodeStart; //Huffman树起始节点
struct Node{ //Huffman树节点
int color; //记录叶子节点的灰度值(非叶子节点为 -1)
int lsonrson; //节点的左右儿子(若没有则为 -1)
int num; //节点的数值(编码依据)
int mark; //记录节点是否被用过(用过为1,没用过为0)
}node[600];
char CodeStr[300][300]; //记录编码值
int CodeLen[300]; //编码长度
bool ImgInf[8000000]; //图像信息
int InfLen; //图像信息长度
/***********************************************************************
* 函数名称:
* readBmp()
*
*函数参数:
* char *bmpName -文件名字及路径
*
*返回值:
* 0为失败1为成功
*
*说明:给定一个图像文件名及其路径,读图像的位图数据、宽、高、颜色表及每像素
* 位数等数据进内存存放在相应的全局变量中
***********************************************************************/
bool readBmp(char *bmpName) //在后边读取文件时,内部实参为readpath
{
//二进制读方式打开指定的图像文件
FILE *fp=fopen(bmpName“rb“); // rb:允许读写
if(fp==0)
{
printf(“未找到指定文件!\n“);
return 0;
}
//跳过位图文件头结构BITMAPFILEHEADER
fseek(fp sizeof(BITMAPFILEHEADER)0);
//定义位图信息头结构变量,读取位图信息头进内存,存放在变量head中
BITMAPINFOHEADER head;
fread(&head sizeof(BITMAPINFOHEADER) 1fp);
//获取图像宽、高、每像素所占位数等信息
bmpWidth = head.biWidth;
bmpHeight = head.biHeight;
biBitCount = head.biBitCount;
//定义变量,计算图像每行像素所占的字节数(必须是4的倍数)
int lineByte=(bmpWidth * biBitCount/8+3)/4*4;
//灰度图像有颜色表,且颜色表表项为256
if(biBitCount==8)
{
//申请颜色表所需要的空间,读颜色表进内存
pColorTable=new RGBQUAD[256];
fread(pColorTablesizeof(RGBQUAD)256fp);
}
//申请位图数据所需要的空间,读位图数据进内存
pBmpBuf=new unsigned char[lineByte * bmpHeight];
fread(pBmpBuf1lineByte * bmpHeightfp);
//关闭文件
fclose(fp);
return 1;
}
/***********************************************************************
保存信息
***********************************************************************/
// 函数功能:二进制转十进制
int Change2to10(int pos){
int ijtwo = 1;
j = 0;
for(i = pos + 7;i >= pos;i --){
j += two * ImgInf[i];
two *= 2;
}
return j;
}
// 函数功能:保存Huffman编码树
int saveInfo(char *writePathint lineByte){
int ijk;
FILE *fout;
fout = fopen(writePath“w“);
fprintf(fout“%d %d %d\n“NodeStartNodeNumInfLen);//输出起始节点、节点总数、图像所占空间
for(i = 0;i < NodeNum;i ++){ //输出Huffman树
fprintf(fout“%d %d %d\n“node[i].colornode[i].lsonnode[i].rson);
}
/*for(i = 0;i < InfLen;i ++){
fprintf(fout“%d“ImgInf[i]);
}
fprintf(fout“\n“);*/
fclose(fout);
return 0;
}
// 函数功能:保存文件
bool
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 44544 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\Debug\huffman_coding.exe
文件 459356 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\Debug\huffman_coding.ilk
文件 584704 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\Debug\huffman_coding.pdb
文件 25820 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\Debug\BuildLog.htm
文件 663 2015-01-10 16:40 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\Debug\huffman_coding.exe.em
文件 728 2015-01-10 16:40 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\Debug\huffman_coding.exe.em
文件 621 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\Debug\huffman_coding.exe.intermediate.manifest
文件 53421 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\Debug\huffman_coding.obj
文件 3211264 2015-01-10 16:40 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\Debug\huffman_coding.pch
文件 65 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\Debug\mt.dep
文件 12265 2015-01-10 16:40 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\Debug\stdafx.obj
文件 478208 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\Debug\vc90.idb
文件 167936 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\Debug\vc90.pdb
文件 13776 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\huffman_coding.cpp
文件 4519 2015-01-10 17:07 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\huffman_coding.vcproj
文件 1427 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\huffman_coding.vcproj.USER-20130119ZL.Administrator.user
文件 1225 2015-01-10 16:35 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\ReadMe.txt
文件 219 2015-01-10 16:35 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\stdafx.cpp
文件 233 2015-01-10 16:35 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\stdafx.h
文件 498 2015-01-10 16:35 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\targetver.h
文件 11029504 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding.ncb
文件 908 2015-01-10 16:35 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding.sln
..A..H. 13312 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding.suo
文件 5174 2015-01-10 17:22 数字图像编码作业第五题 杜衡 2014204068\test\keyboard.bmp
文件 5174 2015-01-10 17:19 数字图像编码作业第五题 杜衡 2014204068\test\lena.bmp
文件 2443 2015-01-13 18:38 数字图像编码作业第五题 杜衡 2014204068\test\lena_Huffman.bhd
文件 154 2015-01-13 18:38 数字图像编码作业第五题 杜衡 2014204068\test\lena_Huffman.txt
文件 5174 2015-01-13 17:40 数字图像编码作业第五题 杜衡 2014204068\test\lena_Huffman_Decode.bmp
文件 62399 2015-01-13 19:13 数字图像编码作业第五题 杜衡 2014204068\霍夫曼图像压缩编码解码程序说明.docx
目录 0 2015-01-14 09:43 数字图像编码作业第五题 杜衡 2014204068\huffman_coding\huffman_coding\Debug
............此处省略8个文件信息
相关资源
- 小波图像压缩源代码
- Tiff图像压缩
- 奇异值分解及应用
- jpeg编码实现
- kakadu2.2.3和openjpeg1.3两开源图像压缩软
- 小波图像压缩算法研究、改进及仿真
- 普通图像JPEG压缩可以实现.zip
- JPEG 图像压缩 源码 源代码 算法文档介
- JPEG2000图像压缩基础、标准和实践——
- 基于spiht算法的静态图像压缩毕设
- JPEG2000图像压缩基础、标准和实践——
- JPEG.BMP图像压缩算法(绝对物超所值)
- 主成分分析的图像压缩与重构.pdf
- DSP课程设计基于DSP的数字图像处理
- 基于主成分分析,图像压缩和重建,
- 图像压缩行程编码
- 图像压缩与解压缩算法解析
- 小波图像处理
- 哈夫曼编码实现图像压缩
- som神经网络用于实现图像压缩
- 图像压缩,使用SPIHT算法进行图像压缩
- 图像压缩 JPG压缩软件图片尺寸修改工
- DCT图像压缩
- 基于小波阈值的图像压缩
- JPEG图像压缩编码及解码源代码可定图
- 图像压缩论文
- jbig图像压缩算法源码
- 基于字典学习与稀疏模型的SAR图像压
- BP神经网络实现图像压缩,精解含代码
- 低比特率图像压缩
评论
共有 条评论