2
将图像压缩为4 KiB预览
在这个挑战中,您将创建一个图像预览压缩算法。目的是将任意图像文件减少为4 KiB预览图像,该图像可用于快速识别带宽非常小的图像。 您必须编写两个程序(或一个组合程序):压缩程序和解压缩程序。两者都必须将文件或标准输入作为输入,并输出到文件或标准输出。压缩器必须接受选择的主流无损图像格式(例如PNG,BMP,PPM)的一个图像,并输出最多4096字节的文件。解压缩器必须接受压缩器生成的任何文件,并输出与输入尽可能接近的图像。请注意,编码器/解码器没有源代码大小限制,因此您可以发挥算法的创造力。 限制条件: 别作弊'。您的程序可能不会使用隐藏的输入,在Internet上存储数据等。也禁止您包含仅与评分图像集有关的功能/数据。 对于库/工具/内置程序,允许您使用常规图像处理操作(缩放,模糊,色彩空间变换等),但不能使用图像解码/编码/压缩操作(压缩器输入和解压缩器输出除外)。也不允许进行一般的压缩/解压缩。打算针对此挑战实施自己的压缩。 解压缩器输出的图像的尺寸必须与提供给压缩器的原始文件的尺寸完全匹配。您可以假定任一方向的图像尺寸均不超过2 16。 您的压缩器必须在5分钟以内的普通家用PC上运行,而解压缩器必须在10秒以内运行以下集合中的任何映像。 计分 为了帮助快速验证和视觉比较,请在压缩后使用您的答案附上测试语料库的无损相册。 您的压缩器将使用以下图像集进行测试: 您可以在此处以zip文件下载所有图像。 您的分数将是所有图像上压缩器的平均结构相似性指数。我们将使用开源dssim来应对这一挑战。它可以很容易地从源代码构建,或者,如果您在Ubuntu上,它也具有PPA。如果您自己给答案打分,则是首选方法,但是如果您不知道如何构建C应用程序并且不运行Debian / Ubuntu,则可以让其他人为您打分。dssim期望输入/输出为PNG,因此,如果以其他格式输出,请先将输出转换为PNG。 为了使评分更加轻松,这是一个快速帮助Python脚本,用法python score.py corpus_dir compressed_dir: import glob, sys, os, subprocess scores = [] for img in sorted(os.listdir(sys.argv[1])): ref, preview = (os.path.join(sys.argv[i], img) for i in (1, 2)) sys.stdout.write("Comparing {} to {}... ".format(ref, preview)) out = …