如何从图像文件生成马赛克图片?

3
我有一张像左边图片的源图像和一组像右边图片的元素: 原始图片和元素...
我需要生成一张瓷砖拼图,就像这样这个
但到目前为止,我没有处理过图像,也不知道应该从哪里开始。
我虽然使用C#工作了几年,但您可以用其他类似的语言给出例子。

1
首先,您需要一个能够生成该模式的算法。之后进行绘制相对简单。 - Sebastian Paaske Tørholm
在Google上搜索“图像拼接算法”会得到很多有趣的结果。 - Fredrik Pihl
谢谢,但对我来说算法并不是一个大问题,而是寻找实现它的工具。我之前写过,这是我第一次处理图像和图形。我可能需要帮助选择C#中可用的选择工具(?)来分析源图像,将其分割成集合元素并显示马赛克(如果用户可以在生成后手动编辑它就更好了,就像真正的马赛克)。有什么想法吗? - ForeverSmiling
你的起始图像是否总是具有相同颜色的最小单位,例如大约10x10像素的正方形块?如果是这样,你只需要找到一种算法来将一个颜色平面分成你的构建块。如果不总是这种情况,那么你就需要先将10x10个不同颜色像素的正方形区域合并为一个实心颜色,然后再让算法运行在修改后的起始图像上。 - takrl
1个回答

2
您提供的结果图显然是一个ministeck图案 - 2011年他们有一个可下载的软件,似乎可以做到您想要的。 (直接由ministeck不再提供,但似乎pfci.de仍提供下载。)
因此,如果您只是想从给定的图像生成ministeck的图案,请使用他们的软件。 如果您想要实现不同的算法,这将无济于事。
编辑
好的,如果您想要分析您的图像,则需要将其加载到类似于此的对象中:
using(Bitmap b = new Bitmap(yourFileName))
{
  MessageBox.Show(string.Format("image size {0} by {1} pixels", b.Width, b.Height));
  MessageBox.Show(string.Format("color of pixel (100,100) is {0}", b.GetPixel(100, 100).ToString()));
}

"

位图对象具有多个属性方法,可帮助您分析图像内容。 尝试使用此功能开始分析您的图像,并不要忘记在之后销毁位图或将其包装到使用语句中,如上所示...

"

不,我需要使用我定义的元素和颜色。此外,我认为大多数现有的程序界面都不友好。对我来说,自己编写程序并学习如何在C#中处理图像和图形将非常有趣。 - ForeverSmiling
一些替代软件是Perro Ministeck Creator,但它也相当糟糕。=( - ForeverSmiling
非常感谢。然而,我考虑了一下并决定尝试使用WPF来实现我的目的。此外,我找到了一个很好的关于WPF图形处理的例子。同时,我对XAML也有一些经验。 - ForeverSmiling

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接