Questions tagged «image-processing»

这些挑战涉及通过以某种方式更改它们,收集统计信息或其他图像处理任务来处理预先存在的图像文件。

5
这是一个自我参考的问题
百乐的自指配方(从维基百科复制) Tupper的自指代公式是Jeff Tupper定义的公式,当在平面中非常特定的位置以二维方式绘制图形时,可以对其进行“编程”以直观地再现公式本身。它在各种数学和计算机科学课程中用作绘图公式的练习。 楼层功能在哪里 。 我们k是以下543位数字: 960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719 如果一个图的点的集合(x, y)中0 <= x < 106,并k <= y < k + 17满足上面给出的不平等,结果图如下所示(请注意,在该地块的轴已经发生了逆转,否则画面出来倒): 所以呢? 关于此公式的有趣之处在于,它可以用于绘制任何可能的黑白106x17图像。现在,从头到尾的搜索实际上非常繁琐,因此有一种方法可以计算出图像出现的k值。这个过程非常简单: 从图像第一列的底部像素开始。 如果像素为白色,则k值将附加一个0。如果是黑色,请附加1。 向上移动列,重复步骤2。 一旦到达该列的末尾,请按照相同的过程移至下一列并从底部开始。 分析完每个像素后,将此二进制字符串转换为十进制,然后乘以17得到k值。 我的工作是什么? 您的工作是创建一个可以拍摄任何106x17图像并输出其相应k值的程序。您可以进行以下假设: 所有图片均为106x17 所有图像将仅包含黑色(#000000)或白色(#FFFFFF)像素,中间没有任何像素。 也有一些规则: 输出只是k值。它必须具有适当的基数,但可以是任何格式。 必须从PNG或PPM读取图像。 没有标准漏洞。 测试影像 [ ]应该产生〜1.4946x10 542 [ ]应该产生〜7.2355x10 159 [ ]应产生2 1801 * 17 [ ]应该产生(2 1802 -1)* …

3
计算机生成的纹理墙面涂料
我房间墙壁上的油漆具有随机的,几乎像分形的3维纹理: 在这个挑战中,您将编写一个程序,该程序生成看起来像是我墙壁的一部分的随机图像。 下面,我收集了墙壁上10个不同点的图像。全部具有大致相同的照明,并且全部是在相机距离墙壁一英尺的地方拍摄的。均匀地裁剪边界以使其为2048 x 2048像素,然后将它们缩放为512 x512。上面的图像是图像A。 这些只是缩略图,单击图像可查看完整尺寸! A: B:C:D:E: F: G:H:I:J: 您的任务是编写一个程序,该程序以1到2 16的正整数作为随机种子,并且为每个值生成一个独特的图像,看起来像是我墙的“第十一张图像”。如果有人看着我的10张图片,而您的几张却不知道是计算机生成的,那您做得很好! 请展示一些您生成的图像,以便观众无需运行代码即可查看它们。 我意识到图像中的光照强度或颜色并不完全均匀。对此我感到抱歉,但是如果没有更好的照明设备,这是我能做的最好的事情。您的图像不需要具有可变的光照(尽管可以)。纹理是更重要的重点。 细节 您可以使用图像处理工具和库。 以所需的任何常用方式(命令行,stdin,明显变量等)进行输入。 输出图像可以是任何常见的无损图像文件格式,也可以仅在窗口/浏览器中显示。 您可以以编程方式分析我的10张图像,但不要假定运行您的代码的每个人都可以访问它们。 您必须以编程方式生成图像。您可能没有对我的一张图片或其他一些图片的略微变体进行硬编码。(无论如何,人们会为此拒绝您。) 您可以使用内置的伪随机数生成器,并假定周期为2 16或更大。 计分 这是一次人气竞赛,因此赢得最高投票的答案会赢得胜利。

4
有时我需要一个无损的截屏大小调整器
有时我需要编写更多的文档,而不仅仅是代码中的注释。有时,这些解释需要屏幕截图。有时,获得这样的屏幕截图的条件太奇怪了,以至于我要求开发人员为我拍摄屏幕截图。有时屏幕截图不符合我的规格,因此我必须调整其大小以使其看起来不错。 如您所见,需要魔术“ Lossless Screenshot Resizer”的可能性很小。无论如何,对我来说似乎每天都需要它。但是它还不存在。 我以前在PCG上见过您解决过很棒的图形难题,所以我想这对您来说很无聊... 规格 该程序将单个窗口的屏幕截图作为输入 屏幕截图不使用玻璃效果或类似效果(因此您不需要处理任何会发光的背景材料) 输入文件格式为PNG(或其他任何无损格式,因此您不必处理压缩工件) 输出文件格式与输入文件格式相同 该程序将创建不同大小的屏幕截图作为输出。最低要求正在缩小。 用户应指定预期的输出大小。如果您可以提供有关程序可以根据给定输入产生的最小大小的提示,那将很有帮助。 如果人为解释,则输出屏幕截图的信息一定不能少。您不应删除文本或图像内容,而应仅删除具有背景的区域。请参阅下面的示例。 如果无法获得预期的大小,程序应指出这一点,而不仅仅是崩溃或删除信息,而无需另行通知。 如果程序指示出于验证原因将删除的区域,则应该增加其受欢迎程度。 该程序可能需要一些其他用户输入,例如,标识优化的起点。 规则 这是一次人气竞赛。在2015-03-08票数最多的答案被接受。 例子 Windows XP屏幕截图。原始大小:1003x685像素。 可以删除示例区域(红色:垂直,黄色:水平),而不会丢失任何信息(文本或图像)。请注意,红色条形不是连续的。此示例并未指出所有可能被删除的像素。 无损调整大小:783x424像素。 Windows 10屏幕截图。原始尺寸:999x593像素。 可以删除的示例区域。 无损调整大小的屏幕截图:689x320像素。 请注意,标题文本(“下载”)和“此文件夹为空”也可以不再居中。当然,如果居中,那会更好,而且,如果您的解决方案能够做到这一点,它应该会越来越受欢迎。

4
计算机生成的破裂土壤
编写一个程序,该程序使用0到65535之间的整数(2 16 -1),并生成一个独特的 500×500像素的图像,该图像看起来与以下6个破裂土壤的真实生活图像尽可能相似: 这些是缩略图,单击它们可查看完整的500×500图像。 目的是使您的计算机生成的图像尽可能逼真。因此,理想情况下,如果程序输出的任何图像都与上面的6张图像混合在一起,那么第一次看到这些图像的人将无法分辨出计算机生成的图像与真实图像。 完美的写实主义是棘手的,因此请尽力而为。这是一场人气竞赛,因此,具有更切合实际的输出结果的答案将被更多地投票,并且更有可能获胜。 规则 您可以使用图像处理功能或库。 您可以基于从6个样本图像中收集的信息来建立算法,但是65535(2 16)可能的输出图像在视觉上应与样本图像彼此不同,尤其是在裂缝排列方面。您必须真正生成图像,而不仅仅是旋转并转换现有照片中的选择。 您不应该以其他方式对输出进行硬编码。应该使用通用算法,并且大于65535的数字理论上应该产生有效的输出。(我已将其限制为仅容纳最小最大整数类型。) 输入整数可以认为是产生随机裂化的土壤输出图像的种子。但是,它应该是确定性的,因此相同的输入应始终导致相同的输出。 输出图像必须恰好是500×500像素。 输出图像可以以任何常见的图像文件格式保存或简单显示。 确保在答案中包含一些示例输出图像及其相应的输入数字。 得票最多的答案将获胜。投票者当然应该对试图产生类似于6个样本的图像的答案进行投票,并对破坏规则或给出不一致结果的答案进行投票。 这6个样本图像取自texturelib.com。从两个较大的破裂土壤图像中选取了1000×1000像素区域,然后将其调整为500×500。您可以在程序中使用这些较大图像的分析结果,但输出应专门模仿6个选定的样本图像。

30
构造身份矩阵
挑战非常简单。给定整数输入n,输出n x n单位矩阵。单位矩阵是1从左上角到右下角的s 矩阵。您将编写一个程序或函数来返回或输出您构造的身份矩阵。您的输出可能是2D数组,或者是由空格/制表符和换行符分隔的数字。 输入和输出示例 1: [[1]] 2: [[1, 0], [0, 1]] 3: [[1, 0, 0], [0, 1, 0], [0, 0, 1]] 4: [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] 5: [[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], …

4
数字绘画
您会得到一个真实的彩色图像。您的任务是生成此图像的一个版本,该版本看起来像是使用数字绘画(孩子们的活动,而不是非图表)绘制的。除了图像外,还提供了两个参数:P(调色板的最大大小(即,要使用的最大不同颜色的数量))和N(要使用的最大单元数)。您的算法并没有必须使用所有P的颜色和ñ细胞,但它不能使用不止于此。输出图像应具有与输入相同的尺寸。 甲细胞被定义为全部具有相同的颜色的像素的连续区域。仅在某个角触摸的像素不被视为连续的。细胞可能有孔。 简而言之,您只能使用N个阴影/纯色区域和P个不同的颜色来近似输入图像。 只是为了可视化参数,这是一个非常简单的示例(没有特定的输入图像;展示了我疯狂的Paint技能)。下图具有P = 6和N = 11: 这是一些测试您的算法的图像(大多数是我们通常的怀疑者)。单击图片查看大图。 请提供一些不同参数的结果。如果要显示大量结果,可以在imgur.com上创建一个图库,以使答案的大小合理。另外,也可以像上面一样,将缩略图放在您的帖子中,并使其链接到较大的图像。另外,如果发现不错的东西,请随时使用其他测试图像。 我假设参数N≥500,P〜30与真实的按数字绘制模板相似。 这是一次人气竞赛,因此以最多净票数赢得答案。鼓励选民通过以下方式判断答案 原始图像的近似程度。 该算法在不同类型的图像上的效果如何(绘画通常比照片容易)。 该算法在非常严格的参数下的效果如何。 单元格形状的有机/平滑外观。 我将使用以下Mathematica脚本来验证结果: image = <pastedimagehere> // ImageData; palette = Union[Join @@ image]; Print["P = ", Length@palette]; grid = GridGraph[Reverse@Most@Dimensions@image]; image = Flatten[image /. Thread[palette -> Range@Length@palette]]; Print["N = ", Length@ConnectedComponents[ Graph[Cases[EdgeList[grid], m_ <-> n_ /; …

3
绘制静物(或移动的静物)-在“生命游戏”中绘制图像
输入的是灰度图像。您的任务是在Conway的《生命游戏》中找到与输入图像尽可能相似的静态或循环模式。 您的输出可以是任一个静止图像或在一些格式可以被转换成GIF一个循环动画。输出图像的尺寸应与输入的尺寸相同,并且必须仅包含黑白像素。 如果输出是动画,则必须根据“生命游戏”规则从上一帧生成每个帧,每个像素一个单元。动画必须循环播放,第一帧是根据相同规则从最后一帧生成的。 如果输出是静态图像,则对其应用生命周期规则必须产生相同的图像。这意味着没有一个“活动”单元可能具有三个以上或少于两个“活动”邻居,并且没有“死”单元可能恰好具有三个“活动”邻居。(请注意,这基本上与上述动画相同,但只有一帧。) 额外的规则和说明: 您(或您的程序)可以选择将“活动”单元格表示为白色,将“无效”单元格表示为黑色,反之亦然。也就是说,您可以对此进行硬编码,或者您的程序可以根据输入图像进行选择。(但是动画的每一帧都必须相同。) 边界条件应该是周期性的,这意味着最右边一列的单元格在最左边一列具有邻居,依此类推。 对于动画,帧频取决于您(或您的程序);我认为快速帧速率可以很好地近似于灰色像素。 请在您的答案中至少嵌入两个结果。如果您可以从下面所有输入的图像中发布结果,那是可取的。 如果需要这样做,可以按比例缩小测试图像,以便以足够小的文件大小获得GIF。如果您也想链接到更大的文件,那很好。如果要炫耀,请随时查找一些更高分辨率的源文件。 请尝试避免代码中包含太多可控制的参数-最好是程序的唯一输入是图像。唯一的例外是,如果您想使用一个参数来控制动画帧的数量,因为这会影响文件的大小。 您可以使用外部程序来更改输入和输出文件的格式,和/或根据需要将输出帧编译为动画。(这不是文件格式处理方面的挑战。) 这是一场人气竞赛,因此得票最多的答案将获胜。 这是一系列测试图像,主要来自本网站的其他问题。(以后我可能会添加其他“奖励”输入图像。) 刚开始时,这是Python 2中非常笨拙的参考尝试,它利用了一个事实,即四个正方形的块在生命游戏中是稳定的结构。它只是将输入图像缩放4倍,如果对应的像素比0.5暗,则会绘制一个块。 from skimage import io from skimage import transform import sys img = io.imread(sys.argv[1],as_grey=True) source = transform.resize(img, [i/4 for i in img.shape]) img[:]=1 for x in xrange(source.shape[0]): for y in xrange(source.shape[1]): if source[x,y]<0.5: img[x*4, y*4] …

9
Quixels-量子像素
介绍 quixel是一个量子像素。与经典像素类似,它用3个整数值(红色,绿色,蓝色)表示。但是,Quixel处于这三个状态的超级位置,而不是组合状态。该超高位置仅持续到观察到该quixel为止,在该点上它折叠为三个经典像素之一;RGB(255,0,0),RGB(0,255,0)和RGB(0,0,255)。 规格 表示 每个QUIXEL被表示为3点的整数0和255之间的阵列r,g并b分别。 超级职位 每个QUIXEL是在红色,蓝色和绿色状态之间的超级位置由下式表示R,G并B分别。 观察 观察到每个轴对偶时,它会崩溃为三种状态之一。每个古典状态的概率R = (r + 1) / (r + g + b +3), G = (g + 1) / (r + g + b + 3)和B = (b + 1) / (r + g + b + 3)。这样,每个古典状态总是以非零的出现概率出现。 输入值 该函数或程序应拍摄一个Quixel图像。如何做到这一点很灵活。文件名,使用多维数组等都可以接受。 输出量 函数或程序应生成经典像素的图像。此生成图像的数据结构也很灵活。请注意,所有的像素应该是这三个中的一个:RGB(255,0,0),RGB(0,255,0)和RGB(0,0,255) 输出不应确定 …

13
对像素排序
您的任务是创建一个给定输入图像的程序,该程序将创建相同大小的输出图像,其中所有像素均按十六进制值排序。 您的程序可能: 按从左到右的顺序对像素进行排序,然后再进行降序排列,或者先按列进行排序,然后再按右顺序进行排序。无论如何,左上方的像素是最小的,而右下方的像素是最大的。 使用透明度,但这不是必需的。 按RGB排序,但是您可以使用CMY或任何其他具有至少3个值的格式。您可以选择要排序的值。(HSV可能会提供一些不错的图像) 使用大多数计算机可以打开的任何已知图像格式。 规则: 输出必须写入磁盘或可通过管道传输到文件。 输入是作为命令行参数提供的,形式是图像的相对路径,或者从命令行通过管道输入。 这是代码高尔夫,所以最短的代码以字节为单位!

6
Photomosaics或:更换灯泡需要几个程序员?
我从Stack Overflow顶级用户的头像中整理了2025张头像的拼接图。 (单击图像可查看完整尺寸。) 您的任务是编写一种算法,该算法将使用来自45×45像素网格中的48×48像素化身来创建另一幅图像的精确马赛克。 测试影像 这是测试图像。首先,当然是灯泡! (它们在这里不是完整尺寸。单击图像以完整尺寸查看。一半尺寸的版本可用于The Kiss,Sunday Afternoon ...,Steve Jobs和spheres。) 感谢Wikipedia除了光线追踪领域以外的所有领域。 在全尺寸下,所有这些图片的尺寸都可以被48整除。较大的图片必须是JPEG,以便可以对其进行足够的压缩以进行上传。 计分 这是一次人气竞赛。带有马赛克的提交可以最准确地描绘原始图像,应予以表决。我将在一两周内接受投票最高的答案。 规则 您的光马赛克必须完全由从上面的马赛克中选取并排列成网格的48×48像素不变的化身组成。 您可以在镶嵌图中重复使用头像。(实际上是您必须拥有的较大测试图像。) 显示输出,但请记住测试图像非常大,并且StackExchange仅允许发布最大2MB的图像。因此,压缩图像或将其托管在其他位置,然后在此处放置较小的版本。 要确认获奖者,您必须提供灯泡或球形马赛克的PNG版本。这样一来,我就可以验证它们(请参阅下文),以确保您不会在头像上添加额外的颜色以使马赛克看起来更好。 验证器 该Python脚本可用于检查完成的镶嵌图是否确实使用了未更改的化身。只需设置toValidate和allTiles。对于JPEG或其他有损格式,它不太可能工作,因为它可以逐像素精确地进行比较。 from PIL import Image, ImageChops toValidate = 'test.png' #test.png is the mosaic to validate allTiles = 'avatars.png' #avatars.png is the grid of 2025 48x48 avatars def equal(img1, img2): …

4
图像之战
恭喜@kuroineko获得最佳参赛资格,并从@TheBestOne获得200赏金(出色的体育精神!)。 在对立程序之前,编写一个程序以使图像尽可能多地着色。 简要规则 您的程序将得到一个图像,您的颜色和整数N。 每回合,其他程序都会向您发送像素更新,并要求您进行N次更新。 您可以更新颜色像素旁边的任何白色像素。 添加最多像素的程序将获胜。 详细规则 您的程序将获得一个PNG图像文件名,原色和数字N。数字N是您的程序每转可着色的最大像素数。 例: MyProg arena.png (255,0,0) 30 输入图像将是一个矩形,其边长在20到1000像素之间。它由黑色,白色和彩色像素组成。您的程序可以选择一系列白色像素作为自己的颜色,条件是每个新像素必须至少具有自己颜色的四个相邻像素之一。图像最初将至少具有您的颜色的一个像素。它还可能具有未分配任何程序的颜色像素。不使用Alpha通道。 您的目标是阻止对手并将您的颜色写入尽可能多的像素。 程序每转一圈,将在STDIN上接受1条或更多条消息行,并在STDOUT上写一条由像素坐标组成的行。请记住,将STDOUT分配为无缓冲,或者每转一次刷新STDOUT缓冲区。 每个回合中被叫的玩家顺序将被随机分配。这意味着对手(或您的程序)可能连续2回合。 将向您的程序发送colour (N,N,N) chose X,Y X,Y ... X,Y描述播放器程序所填充像素的信息消息。如果玩家不采取任何行动或没有采取有效行动,则不会向您发送有关该玩家采取行动的消息。您的程序还将收到一条有关您自己接受的动作的消息(如果您已指定至少一个有效的动作)。像素0,0位于图像的左上角。 收到时pick pixels,您的程序将X,Y X,Y ... X,Y最多输出N个像素(允许只包含'\ n'的空字符串)。像素必须按绘制顺序。如果一个像素无效,它将被忽略并且不会出现在玩家报告中。您的程序在启动后有2秒钟的初始化时间,但是每回合只有0.1秒的时间来回答并回答,否则它将错过该回合。0.1秒后发送的像素更新将记录故障。5次故障后,您的程序将被暂停,并且不会发送更新或pick pixels请求。 当评委程序从每个非暂停的播放器程序中收到一个空的或无效的像素选择时,图像将被视为完整图像,并且程序将收到“退出”消息。程序必须在收到“退出”之后终止。 计分 图像完成后,法官将给分数打分。您的得分将是您更新的像素数除以该回合的平均像素捕获数(以百分比表示)。 播放器添加到图像的像素数为A。所有 P播放器添加的像素总数为T。 avg = T/P score = 100*A/avg 发布分数 给出了一个参考对手“ The Blob”。对于每个答案,请为机器人标记名称,语言和相对于参考对手的得分(竞技场1至4的平均值)。您的其中一场战斗的图片或动画也会很好。获胜者是与参考机器人相比得分最高的程序。 如果Blob证明太容易被击败,我可以加一个更强的参考对手进行第二轮比赛。 您可能还想尝试4个或更多播放器程序。您还可以针对其他机器人作为答案发布的机器人进行测试。 法官 …

6
评分Tarzan的奥林匹克葡萄摇摆常规
奥运会的葡萄树摆动者在标准的树上执行常规活动。特别是,“标准树” n具有0向上穿过的顶点n-1以及将每个非零顶点连接a到其n % a下面的顶点的边。因此,例如,标准树5如下所示: 3 | 2 4 \ / 1 | 0 因为5除以3时的余数为2,所以5除以2或4时的余数为1,而5除以1时的余数为0。 今年,泰山将捍卫他的金新套路,每个始于顶点n - 1,秋千到顶点n - 2,继续顶点n - 3,等等,直到最后他卸除到顶点0。 例行程序的分数是每个挥杆(包括拆卸)的分数之和,挥杆的分数是树内起点和终点之间的距离。因此,Tarzan在标准树5上的例程得分为6: 从摇摆4到3得分3分(向下,向上,向上), 从摇摆3到2得分(下降)一分, 从摆动2到1得分1分(向下),并且 从下来1,0得分为1分(下降)。 编写一个程序或函数,给定一个正整数n,该程序或函数将计算Tarzan例程在Standard Tree上的得分n。样本输入和输出: 1 -> 0 2 -> 1 3 -> 2 4 -> 6 5 -> 6 6 -> 12 7 -> 12 8 …
32 code-golf  math  number  number-theory  code-golf  code-golf  restricted-source  programming-puzzle  css  code-golf  parsing  code-golf  random  encryption  code-golf  ascii-art  fractal  code-golf  math  code-golf  sorting  graph-theory  path-finding  permutations  code-golf  tetris  code-golf  card-games  code-golf  math  sequence  rational-numbers  code-golf  chess  code-golf  string  geometry  grid  code-golf  ascii-art  grid  code-golf  sequence  integer  code-golf  math  number-theory  packing  polyomino  code-golf  math  code-golf  string  quine  permutations  code-golf  math  code-golf  image-processing  optical-char-recognition  code-golf  string  kolmogorov-complexity  sequence  integer  code-golf  number  permutations  palindrome  code-golf  kolmogorov-complexity  code-golf  number  sequence  string  fewest-operations  code-golf  string  kolmogorov-complexity  sequence  primes  code-golf  string  ascii-art  code-golf  string  number  alphabet  code-golf  counting  code-golf  number  sequence  number-theory  primes  code-golf  subsequence  word-search 

20
法鲁洗牌数组
阿法鲁洗牌是经常使用的魔术到“洗牌”甲板的技术。要执行Faro随机播放,您首先将卡座切成相等的两半,然后将这两个半插入。例如 [1 2 3 4 5 6 7 8] 法鲁洗牌是 [1 5 2 6 3 7 4 8] 可以重复多次。有趣的是,如果重复此次数足够多,您将总是回到原始数组。例如: [1 2 3 4 5 6 7 8] [1 5 2 6 3 7 4 8] [1 3 5 7 2 4 6 8] [1 2 3 4 5 6 7 …
31 code-golf  permutations  card-games  code-golf  graphical-output  random  code-golf  image-processing  color  code-golf  primes  code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

4
使用线条重现图像
编写一个程序,以获取真彩色RGB图像I,要绘制的最大行数L以及每行的最小m和最大M长度。输出看起来像I的图像O,它使用L或更少的直线绘制,所有直线的欧几里德长度在m和M之间。 每条线必须是一种纯色,并且两个端点都在O的边界内,并使用Bresenham的线算法(大多数图形库已经为您完成)绘制。个别线只能是1像素粗。 所有行,即使长度为0的行也应至少占用一个像素。线可以画在彼此的顶部。 在绘制任何线条之前,您可以将O的背景初始化为任何纯色(可能取决于I)。 细节 O应具有与I相同的尺寸。 L将始终是一个非负整数。它可能大于I的面积。 m和M是M > = m的非负浮点数。两个像素之间的距离是其中心之间的欧式距离。如果此距离小于m或大于M,则不允许这些像素之间的线。 线路不应该抗锯齿。 不应使用不透明度和Alpha。 您的程序在像样的现代计算机上以不到100万像素和L不到10,000的图像运行,不应该花一个多小时。 测试影像 当然,您应该向我们展示最准确或最有趣的输出图像(我希望当L占I像素数的5%至25%之间,而m和M约为对角线大小的十分之一时,会出现这种图像。) 这是一些测试图像(单击获取原始图像)。您也可以自己张贴。 简单的图片: 这是一次人气竞赛。投票最高的提交者获胜。 笔记 让L从I中总像素的百分比以及绝对值中导出可能会有所帮助。例如>>> imageliner I=img.png L=50% m=10 M=20,>>> imageliner I=img.png L=32 m=10 M=20就像img.png是8×8像素的图像一样。对于m和M可以做类似的事情。这不是必需的。 由于线不能超出范围,所以最长的线可能是I的对角线长度。有中号比这更高不应破坏任何东西,虽然。 自然地,如果m为0且L大于或等于I中的像素数,则O在每个像素位置的长度为0“线”,则可以等于I。不需要此行为。 可以说,复制I的形状比复制颜色更重要。您可能需要研究边缘检测。

4
生活可以丰富多彩!
栩栩如生的细胞自动机中的每个细胞仅需要一位来表示,因为它只能是生的或死的。这意味着只有两种颜色。很无聊。 普通图像的每个像素为24位(RGB中的每个像素为8位)。这意味着在以像素为单元格的正常图像中,您可以一次模拟24个逼真的游戏! 挑战 您的任务是编写一个程序,该程序将逼真的蜂窝自动机的一代规则应用于24位深度图像(以您喜欢的任何已知格式),然后输出结果图像。 24层中的每一层都将使用相同的栩栩如生的规则集,严格在其自己的层之内。这24层不会互相影响。 也 零是死细胞,一个是活细胞。 边界条件是周期性的(形成圆环)。 任何图像尺寸都可以。 输入输出 您的程序需要通过stdin或命令行(或您的语言最接近的等效语言)接受3个参数: 输入图像文件的名称。 由0到8的数字组成的字符串,以递增的顺序表示新单元格的诞生时间: 如果数字d在字符串中,则死细胞在有d个存活邻居时会恢复活力。 示例:3正常的生命 -刚好有3个存活邻居的死细胞复活。 从0到8的数字字符串,以递增的顺序表示现有的单元格何时存活: 如果数字d在字符串中,则具有d个存活邻居的存活细胞将存活到下一代,否则它们将死亡。 示例:23正常生命-只有具有2或3个邻居的细胞才能存活到下一轮。 请注意,始终使用摩尔街区。阅读这个或这对精确什么定义了一个栩栩如生的自动机和许多有趣的规则集的更多信息。 1代以后的输出图像应显示或另存为out.png(bmp或其他任何形式)。 投稿 以字节为单位的最短代码获胜。 对于某些非平凡的规则集,您需要至少包含一个测试映像及其三个后继代。如果您想不出更好的方法,请使用您的头像和正常的生活规则。 如果您愿意,可以使用这种Gosper Glider Gun,其中唯一的活物在绿色的128层中(只能确保在正常的Life中工作): 强烈建议张贴有趣的序列甚至动画。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.