0

我的任务有问题。我有一个读取 PGM 图像文件的类。我需要创建几个类,主要的是一个压缩类。我需要将 PGM(由二维数组表示)压缩成一维数组。

以下是说明:

public static short[] compress(short[][]) 
  • 传递一个代表图像的 2D 短裤数组。
  • 将压缩图像作为 1D 短裤数组返回。
  • 这种方法是我主要关心的。

压缩思路:

  • 寻找相似像素值的水平或垂直运行,并记录像素值自身重复的次数。
  • Spektre 的注释:这称为PCX 使用的RLE 运行长度编码,例如

算法:

1.使用水平运行计算压缩图像数组

2.使用垂直运行计算压缩图像数组

3.选择压缩图像使用此特定图像的最佳技术。

4.设置图片的标题

  • 将 short [ ] 结果数组的第一个和第二个值设置为宽度和高度值。
  • 将 short[ ] 结果数组中的第三个值设置为 1 用于水平压缩或 2 用于垂直压缩。

5.设置图片主体

  • 剩下的 short [ ] 结果数组用 RLE 数量和值填充

还有一些其他的方法

  • 如果有人想帮助他们:

    public static void write(short[], String) 
    
  • 传递一个代表压缩图像和所需文件名的 1D 短裤数组。

  • 只需将值写入文本文件,并在文件名中添加 .compressed 扩展名。

    public static short[] read(String) 
    
  • 传递一个压缩的图像文件名。

  • 只需读取值并以一维短裤数组形式返回它们。

    public static short[][] decompress(short[]) 
    
  • 传递一个代表压缩图像的一维短裤数组。

  • 只需解压缩文件,以便我们可以将其显示在屏幕上
  • 使用我们已有的 showGrayImage() 代码。

提前致谢!

4

0 回答 0