图像压缩(行程编码)
利用行程编码对图像进行压缩
//进行压缩 对图像进行编码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *imageFile,*outFile;
int i, data, nextData;
int cnt = 0;
if ((imageFile = fopen("Lena.bmp","rb")) == NULL) {
printf("can't open Lena.bmp\n");
exit(1);
}
if ((outFile = fopen("Lena.cod","wb")) == NULL) {
printf("can't open Lena.cod\n");
exit(1);
}
while (!feof(imageFile))
{
data = fgetc(imageFile);
cnt++;
if (cnt >= 1078) {
cnt = 1;
//first identifer---white pixel or black pixel
fputc(data, outFile);
while (!feof(imageFile)) {
nextData = fgetc(imageFile);
if (data != nextData) {
//output two bytes
//the first one is Low byte
fputc(cnt % 256, outFile);
//the second one is High byte
cnt /= 256;
fputc(cnt, outFile);
cnt = 0;
//exchange
data = nextData;
}
cnt++;
}
goto closeFile;
}
fputc((char)data,outFile);
}
closeFile:
if (fclose(imageFile)) exit(1);
if (fclose(outFile)) exit(1);
system("pause");
return 0;
}
压缩后文件只有24K
//反编码 恢复图像
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *imageZipFile,*outFile;
int i, data, nextData, identifer;
int cnt = 0;
if ((imageZipFile = fopen("Lena.cod", "rb")) == NULL) {
printf("can't open Lena.cod\n");
exit(1);
}
if ((outFile = fopen("RecoveryLena.bmp", "wb")) == NULL) {
printf("can't open RecoveryLena.bmp\n");
exit(1);
}
while (!feof(imageZipFile))
{
data = fgetc(imageZipFile);
cnt++;
if (cnt >= 1078) {
identifer = data;
while (!feof(imageZipFile)) {
data = fgetc(imageZipFile);
nextData = fgetc(imageZipFile);
cnt = nextData * 256 + data;
for (i = 0; i < cnt; i++) {
fputc(identifer, outFile);
}
identifer ^= 0x00ff;
}
goto closeFile;
}
fputc((char)data,outFile);
}
closeFile:
if (fclose(imageZipFile)) exit(1);
if (fclose(outFile)) exit(1);
system("pause");
return 0;
}
恢复后的图像
- 描述: 进行压缩的图像258K
- 大小: 10.6 KB
- 描述: 恢复图像 258K
- 大小: 10.6 KB
分享到:
相关推荐
行程编码,JPEG压缩编码(基本系统)的源码示例,对了解低层图像编码有重要意义
图像压缩编码码matlab实现,包括线性预测编码,算术编码,行程编码,变换编码,DM编码,jpeg x = double(x) - 128; %像素层次移动-128 [xm, xn] = size(x); %得到像素尺寸 t = dctmtx(8); %得到8*8DCT矩阵 %将图像...
带有图像的行程编码算法。其中,包含有压缩和解压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
当代信息社会离不开图像,而图像通常会在计算机中占用非常大的空间,图像包含的冗余数据多,传输受到...我们在行程编码压缩原理基础上编写出行程编码算法,可以实现同一图像的彩色图像、灰度图像和二值图像的算法压缩。