对于一个项目,我正在寻找一种算法,将大量图像转换为调色板图像,这些图像可以共享相同的调色板.
鉴于:
结果:
限制:
我的问题是什么:
因此,这应该是结果:在这种情况下,一个颜色索引表(也称为指示图像)使用两个不同的调色板生成两个不同的RGB图像.
由于输入文件都是RGB图像,我们需要先将它们转换为具有匹配颜色索引的调色板.
在下图中,您可以看到算法如何开始使用前三个图像:
到现在为止还挺好.但是我们应该如何继续使用最后一张图片呢?它可以共享前一个的颜色索引,但它与任何现有的调色板都不匹配.实际上它与任何现有的调色板都不匹配.
因此下图描述了实际问题:如何确定最适合图像的内容?创建一个新的调色板,创建一个新的颜色索引,如果我们过去另有决定,一切都会好的怎么办?我们怎么知道?
那么,这四个图像仍然是简单的情况.让我们假设算法已经处理了很多图像,并生成了一个调色板.我们的input-image-list中的下一个图像找到一个匹配的调色板,因此它可以很容易地创建新的颜色索引并且没问题.但是:结果应该是最少的图像和调色板,所以可能有另一种方式!
通过检查所有先前的图像,我们发现,我们可以使用前一图像的现有调色板和 …
我有一个问题,我从一些数据库图像中收到大量直方图。这些直方图表示为向量 (0...255),我必须识别并使用双峰直方图。
是否有一个公式可以自动识别哪些直方图是双峰的,哪些不是?由于它们是数字向量,我可以使用编程语言(Java/C#)来处理它。
文献中有没有软件识别双峰直方图的标准?
以下是我正在使用的直方图和格式输入的 3 个示例。每个直方图都是一个具有 256 (0...255) 个位置的向量。
Histogram 1
8029, 41, 82, 177, 135, 255, 315, 591, 949, 456, 499, 688, 446, 733, 712, 1595, 2633, 3945, 6134, 9755, 9236, 11911, 11888, 9450, 13119, 8819, 5991, 4399, 6745, 2017, 3747, 1777, 2946, 1623, 2151, 454, 3015, 3176, 2211, 1080, 391, 580, 750, 473, 10424, 334, 559, 621, 340, 2794, 1094, 5274, 2822, 204, 389, 728, 268, 15, 1060, 58, 113, 2728, 52, 3166, 11, 103, 522, 107, …Run Code Online (Sandbox Code Playgroud) 我目前正致力于一个爱好项目,以自动解决流行的手机游戏I Love Hue中的拼图.这个游戏可以在这里找到.
基本上,游戏的整个前提是你会得到一堆彩色的矩形块,这些块以网格形式组织起来.您可以交换大多数块,除了一些用黑点标记的固定块.游戏的目的是交换块周围,以获得二维色谱.对颜色进行排序,使得每个块的颜色大约是其周围颜色的平均值.(对不起,我不知道任何颜色理论,但可能还有一个关于我正在寻找的内容.)这是一个典型的谜题:

我已经能够通过adb截取屏幕截图,从块中提取RGB矩阵并标记哪些块是"固定的".我遇到了这个问题的实际算法部分的问题.
这是我到目前为止所做的:
我正在开发一款 iOS 应用程序,它允许用户拍摄一系列照片 - 然后将照片放入动画中并导出为 MP4 和 GIF。
虽然 MP4 呈现源质量,但 GIF 颜色等级是可见的。
这是视觉比较:
动图:
MP4
我用于导出为 GIF 的代码:
var dictFile = new NSMutableDictionary();
var gifDictionaryFile = new NSMutableDictionary();
gifDictionaryFile.Add(ImageIO.CGImageProperties.GIFLoopCount, NSNumber.FromFloat(0));
dictFile.Add(ImageIO.CGImageProperties.GIFDictionary, gifDictionaryFile);
var dictFrame = new NSMutableDictionary();
var gifDictionaryFrame = new NSMutableDictionary();
gifDictionaryFrame.Add(ImageIO.CGImageProperties.GIFDelayTime, NSNumber.FromFloat(0f));
dictFrame.Add(ImageIO.CGImageProperties.GIFDictionary, gifDictionaryFrame);
InvokeOnMainThread(() =>
{
var imageDestination = CGImageDestination.Create(fileURL, MobileCoreServices.UTType.GIF, _images.Length);
imageDestination.SetProperties(dictFile);
for (int i = 0; i < this._images.Length; i++)
{
imageDestination.AddImage(this._images[i].CGImage, dictFrame);
}
imageDestination.Close();
});
Run Code Online (Sandbox Code Playgroud)
我用于导出为 MP4 的代码:
var videoSettings = new NSMutableDictionary(); …Run Code Online (Sandbox Code Playgroud) 我必须实现的任务是将24位BMP转换为该绘图仪的指令集.在绘图仪中,我可以改变16种常见颜色.我面临的第一个复杂性是颜色减少.我面临的第二个复杂性是如何将像素转换为一组绘图指令.
作为使用油漆的绘图工具刷将被使用.这意味着绘图仪绘制线不会那么小,而且它们会相对较短.
请提出可用于解决此图像数据转换问题的算法?
一些初步结果: