图像压缩(行程编码)
利用行程编码对图像进行压缩
//进行压缩 对图像进行编码
#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压缩编码基本系统_jpeg压缩编码_Vc_图像压缩_"这个主题涵盖了图像压缩的核心技术,包括了基本的编码理论和编程实践。无论是对理论研究还是实际开发,理解并掌握这些知识点都是非常重要的。...
Matlab领域上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN Matlab武动乾坤上传的资料均有对应的代码,代码均可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;...行程编码图像压缩、蚁群算法优化小波变换图像压缩
图像压缩编码码matlab实现,包括线性预测编码,算术编码,行程编码,变换编码,DM编码,jpeg x = double(x) - 128; %像素层次移动-128 [xm, xn] = size(x); %得到像素尺寸 t = dctmtx(8); %得到8*8DCT矩阵 %将图像...
二维行程编码(2D Run-Length Encoding,简称2D RLE)是一种无损图像压缩方法,尤其适用于具有大量连续相同颜色像素的图像。在GIS(地理信息系统)领域,这种压缩技术常用于存储和处理地图数据,因为地图往往具有...
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
在图像处理领域,行程编码(Run-Length Encoding, RLE)是一种简单且有效的无损数据压缩技术,尤其适用于处理具有大片相同颜色区域的图像。在VC++环境下实现图像的行程编码,需要理解行程编码的基本原理,并熟悉C++...
- 压缩方法分为冗余度压缩(如哈夫曼编码、算术编码、行程编码)和信息量压缩(如预测编码、DCT、分形编码)。 2. **离散余弦变换(DCT)**: - DCT在图像压缩中的核心作用在于它能将图像数据的能量集中到少数几...
需要注意的是,虽然行程编码对于有大量重复像素的图像压缩效果显著,但对颜色变化频繁的图像,其压缩率可能较低。此外,行程编码是一种无损压缩方法,不会引入信息损失,但与有损压缩技术(如JPEG、JPEG 2000等)...
带有图像的行程编码算法。其中,包含有压缩和解压缩
CSDN Matlab武动乾坤上传的资料均有对应的代码,代码均可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;...行程编码图像压缩、蚁群算法优化小波变换图像压缩
Matlab领域上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN Matlab武动乾坤上传的资料均有对应的代码,代码均可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN Matlab武动乾坤上传的资料均有对应的代码,代码均可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN Matlab武动乾坤上传的资料均有对应的代码,代码均可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN Matlab武动乾坤上传的资料均有对应的代码,代码均可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩
Matlab领域上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 ...行程编码图像压缩、蚁群算法优化小波变换图像压缩