用于特定 1 位位图坐标转换的算法



我知道Stack Overflow是一个人口稠密的地方,所以我会尽量让自己简短。我是一名业余程序员,在编码世界的一个小利基市场工作;我在外面的经验非常有限。

我的困境是这样的:我有一个 1 位 2D 矩阵,由任意数据组成,旨在表示屏幕上的开/关像素。考虑一个想象力的例子:

11110111101111111100
10111111111111111111
11011111111111011111
11111010111111111111
11111111011111111111
11111111111100011111
11111011011110001101

就我的确切目的而言,这确实是一个糟糕的例子,但它可以解决问题。作为一名程序员,我查看这个数据图像矩阵,并考虑将其无损压缩的方法,也许压缩成一个更小的 1D 矩阵。我意识到定义"on"像素的大部分元素(这种区别是相当任意的,"打开"像素的显示"关闭"以创建图像与"打开"的"关闭"像素的显示相同以创建相同的图像(可能会被人们的眼睛识别为"打开"像素的实心矩形。考虑:

11110111101111111100
10111111111111111111
11011111111111011111
xxxxx010111111111111
xxxxx111011111111111
xxxxx111111100011111
xxxxx011011110001101

存储定义"on"像素元素矩形部分的矩形部分的矩形的坐标(然后将这些坐标按顺序存储在 1D 数组中(似乎是解决此问题的最佳方法,因为以后要重绘相同的图像,我可能只是扫描生成的 1D 数组并绘制所有矩形。

我的问题是:是否存在一种方法或算法来执行这种特定的转换,并且最有效地执行?为此,请考虑Bresenham的Line Algorithm,它可以说是最有效的算法,以及许多其他算法。

我的无知超出了我的利基市场,我想假设存在大量像这样的小算法挑战,几十年前由疯狂的计算机科学家解决,他们现在用磁带和真空管包围自己。我经常遇到的许多算法障碍似乎就是这种情况,也就是说,它们在我的时间之前就已经解决了。

图像比较从来都不是精确的。压缩级别在很大程度上取决于图像本身。所以,即使你聪明地"发现"了一个新的算法,它有时会成功,而其他时候它会做得很差。
这是由于每个图像的性质中的一些随机因素。

有一个旧但仍然有效的网站,其中包含有价值的信息:CFAQ

关于你的"矩形"算法,有一些接近它的东西:PCIF算法

最新更新