资源简介
本程序用游程编码的思想实现了基于图像数据的压缩方法的实现,并有源代码和文档。
![](http://www.nz998.com/pic/45389.jpg)
代码片段和文件信息
#include“iostream.h“
#include
#include“stdlib.h“
#include“vector“
#include“algorithm“
#include“math.h“
using namespace std;
struct data
{//用于存储码字及其编码结果
int mz;
vector code;
};
struct rle
{//用于存储每个码字及其个数
int length;
int mz;
};
int get_gd(int n)
{//用于求出编码的长度
int i=0;
int j=n-1;
while(j>0)
{
j=(j-j%2)/2;
i++;
}
return i;
}
void Creadmz(int hdvector& vdint hs)
{//用于构建码字
int w=0;
int ws=get_gd(hd);
for(int i=0;i {
data d;
d.mz=i+hs;
w=i;
while(w>0)
{
if(w % 2 == 1)
d.code.push_back(‘1‘);
else d.code.push_back(‘0‘);
w=(w-w%2)/2.0;
}
for(int m = d.code.size();m d.code.push_back(‘0‘);
vd.push_back(d);
}
}
void print( vectorvd)
{//用于输出编码结果表明
for(int i=0;i {
cout< for(int j=vd[i].code.size()-1;j>=0;j--)
cout< cout< }
}
void print1( vector re)
{//输出码及其个数的组合
for(int i=0;i {
cout<<“<“<“<<“ “;
}
}
template
void print2(vector cdint n)
{//输出编解码结果
int num=0;
for(int i=0;i {
cout< num++;
if(num%n==0) cout< }
cout< }
/*bool read(vector &vrint hdint & corint &rows)
{//读入要编码的灰度矩阵
int rowacr;
rle re;
cout<<“请输入矩阵的行列数:“< cin>>row;
cin>>acr;
cor=acr;
rows=row;
cout<<“请输入灰度值矩阵:“< for(int i=0;i
{
int n;
n=re.mz=0;
if(n==re.mz)
{
cin>>n;
if(n>=hd){vr.clear(); return false;}
}
for(int j=1;j {
re.mz=n;
re.length=0;
while(n==re.mz&&j {
re.length++;
j++;
cin>>n;
if(n>=hd){vr.clear(); return false;}
}
if(n!=re.mz)
{
vr.push_back(re);
if(j==acr)
{
re.mz=n;
re.length=1;
vr.push_back(re);
}
}
else if(j==acr)
{
if(n==re.mz)
{
re.length++;
vr.push_back(re);
}
else {
re.mz=n;
re.length=1;
vr.push_back(re);
}
}
else vr.push_back(re);
}
}return true;
}*/
bool read1(vector & vcint num)
{//用于读取要解码的序列
cout<<“请输入你要解码的序列(以‘#‘号结束):“< char ch;
cin>>ch;
while(ch!=‘#‘)
{
vc.push_back(ch);
cin>>ch;
if(ch!=‘0‘&&ch!=‘1‘&&ch!=‘#‘) {
cout<<“你输入的码序列不正确请较正后rr再输入。“;
vc.clear();
return false;
}
}
if(vc.size()%num!=0)
{
cout<<“你输入的码序列不正确请较正后再输入。“;
vc.clear();
return false;
}
return true;
}
int find(vector vdint x)
{//用于查找要编码的灰度值是否在灰度级范围内如果在反回相应码在编码序列中的位置
int low=0;
int high=vd.size()-1;
int mid=0;
while(low<=high)
{
mid = (low + high)/2;
if(vd[mid].mz==x) return mid;
else if(x else low = mid +1;
}
cout<<“the element ‘“< return -1;
}
void Encode(vector vrvector vdvector vhvector &cd)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 254061 2008-12-15 20:30 RunLength_finsh\Debug\RunLength.exe
文件 363084 2008-12-15 20:30 RunLength_finsh\Debug\RunLength.ilk
文件 105612 2008-12-15 20:30 RunLength_finsh\Debug\RunLength.obj
文件 1881860 2008-12-15 20:29 RunLength_finsh\Debug\RunLength.pch
文件 648192 2008-12-15 20:30 RunLength_finsh\Debug\RunLength.pdb
文件 74752 2008-12-15 20:30 RunLength_finsh\Debug\vc60.idb
文件 110592 2008-12-15 20:30 RunLength_finsh\Debug\vc60.pdb
文件 5203 2008-12-15 20:30 RunLength_finsh\RunLength.cpp
文件 3437 2008-12-15 20:29 RunLength_finsh\RunLength.dsp
文件 543 2008-12-15 20:30 RunLength_finsh\RunLength.dsw
文件 50176 2008-12-15 20:30 RunLength_finsh\RunLength.ncb
文件 48640 2008-12-15 20:30 RunLength_finsh\RunLength.opt
文件 1453 2008-12-15 20:30 RunLength_finsh\RunLength.plg
文件 92160 2008-12-15 20:27 RunLength_finsh\游程编码.doc
目录 0 2008-12-15 20:30 RunLength_finsh\Debug
目录 0 2008-12-17 19:35 RunLength_finsh
----------- --------- ---------- ----- ----
3639765 16
相关资源
- 介绍几种压缩算法及《笨笨数据压缩
- 很好的一个小波变换图像压缩程序
- lzw压缩,解压缩算法
- 哈夫曼压缩算法(源代码 实现报告)
- jpeg图像压缩实例代码
- lz4压缩解压工具x64和x86
- 块体形状对岩石黏结颗粒模型力学特
- 7-zip压缩包
- 压缩包免费破解密码工具
- 超强JPG图片压缩工具,减小图片文件
- 大型强子对撞机在压缩质量情景中寻
- 压缩感知常见测量矩阵一维仿真信号
- 扎努西电气机械天津压缩机有限公司
- 压缩文件修复工具
- 3d N $$ \\ mathcal {N} $$ = 4个理论和共形块
- 视频压缩工具软件免费版
- 磁通压缩中的模块化对称异常
- 相对论核碰撞中形成的强子物质的等
- Hagedorn态对重离子碰撞中形成的强子物
- 2017黑马软件测试全套完整视频教程
- 压缩作用下砂岩变形破坏过程中的能
- 基于Simulation的涡旋压缩机支架体动态
- 易语言压缩解压模块
- 非超对称杂散弦理论的Calabi-Yau压缩
- 空气调节器用全封闭型电动机-压缩机
- Huffman Compress 霍夫曼编码 压缩 解压缩
- 未压缩与压缩的dicom文件
- 定时自动压缩备份文件并发送电子邮
- 破解加密压缩包
- 自动截拼图工具适合做地图等-地图
评论
共有 条评论