Tag: 图像

在图像中查找类似颜色的区域

一段时间以来,我一直在研究这个问题,结果很有希望。 我正在尝试将图像分成类似颜色的连接区域。 (基本上将所有像素的列表分成多个组(每组包含属于它的像素的坐标并共享相似的颜色)。 例如: http : //unsplash.com/photos/SoC1ex6sI4w/ 在这个图像中,顶部的乌云可能会分成一组。 一些在另一个山上的灰色岩石,另一个在一些橙色的草地上。 雪将是另一个 – 背包的红色 – 等等 我试图devise一个既准确又高效的algorithm(它需要在中等规模的笔记本电脑级硬件上以ms为单位运行) 以下是我所尝试过的: 使用基于连接组件的algorithm,从左上方扫描每个像素,从左到右扫描每一行像素(并将当前像素与顶部像素和左侧像素进行比较)。 使用CIEDE2000色差公式,如果顶部或左侧的像素在一定的范围内,那么它将被认为是“相似的”并且是组的一部分。 这种工作 – 但问题是它依赖于具有锐利边缘的颜色区域 – 如果任何颜色组通过软梯度连接,则它将沿着该梯度行进并继续“连接”像素,因为各个像素之间的差异是比较小到可以被认为是“相似”的。 为了解决这个问题,我select将每个访问像素的颜色设置为最“相似”相邻像素的颜色(顶部或左侧)。 如果没有相似的像素,则保留其原始颜色。 这在一定程度上解决了更模糊的边界或软边缘的问题,因为随着algorithm的进展,新组的第一个颜色将被“携带”,并且最终该颜色和当前比较的颜色之间的差异将超过“相似性”不再是该组的一部分。 希望这是有道理的。 问题是这些选项都没有真正的工作。 在上面的图片返回的不是干净的组,但嘈杂的碎片组是不是我所期待的。 我并没有专门寻找代码 – 但是更多的想法是如何构build一个algorithm来成功地解决这个问题。 有没有人有这个想法? 谢谢!

Node.js Base64图像解码和写入文件

我将这个Flex表单的内容(不要问为什么)发送到节点。 有一个名为“照片”,这是一个base64编码图像后参数。 照片的内容得到发送好。 问题是当我试图解码内容并将其写入文件。 var fs = require("fs"); fs.writeFile("arghhhh.jpg", new Buffer(request.body.photo, "base64").toString(), function(err) {}); 我试过toString(“二进制”)。 但似乎节点不解码所有的内容。 它似乎只解码JPG头信息,剩下的。 任何人都可以帮我这个吗? 谢谢

如何与gm node.js组合?

如何用GM Node.js做'gm composite -gravity center change_image_url base_image_url'? 如何调用gm().command() & gm().in()或gm().out()来实现上面的?