Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 将BMP图像转换为绘图仪的指令集?_Image Processing_Colors_Vectorization_Reduction - Fatal编程技术网

Image processing 将BMP图像转换为绘图仪的指令集?

Image processing 将BMP图像转换为绘图仪的指令集?,image-processing,colors,vectorization,reduction,Image Processing,Colors,Vectorization,Reduction,我有一台这样的绘图仪: 我必须执行的任务是将24位BMP转换为该绘图仪的指令集。在绘图仪中,我可以更改16种常用颜色。我面临的第一个复杂问题是颜色减少。我面临的第二个复杂性是如何将像素转换为一组绘图指令 作为绘图工具,将使用带油漆的刷子。这意味着绘图仪绘制的线条不会太小,而且会相对较短 请建议可用于解决此图像数据转换问题的算法 一些初步结果: 抖动 我今天有时间做这个,结果在这里。您没有提供绘图仪调色板,所以我从生成的图像中提取了它,但您可以使用任何颜色。抖动背后的想法很简单,我们的感知将颜

我有一台这样的绘图仪:

我必须执行的任务是将24位BMP转换为该绘图仪的指令集。在绘图仪中,我可以更改16种常用颜色。我面临的第一个复杂问题是颜色减少。我面临的第二个复杂性是如何将像素转换为一组绘图指令

作为绘图工具,将使用带油漆的刷子。这意味着绘图仪绘制的线条不会太小,而且会相对较短

请建议可用于解决此图像数据转换问题的算法

一些初步结果:


抖动

我今天有时间做这个,结果在这里。您没有提供绘图仪调色板,所以我从生成的图像中提取了它,但您可以使用任何颜色。抖动背后的想法很简单,我们的感知将颜色整合到区域而不是单个像素上,因此您必须使用渲染内容和应渲染内容的色差累加器,并将其添加到下一个像素

这样,该区域具有大致相同的颜色,但实际使用的颜色数量不连续。如何更新此信息的形式可以将结果分支抖动区分为许多方法。简单明了的是:

  • 将颜色累加器重置为零
  • 处理所有像素
  • 将每个像素的颜色添加到累加器中
  • 在调色板中查找与结果最接近的匹配项
  • 渲染选定调色板颜色
  • 从累加器中减去选定的调色板颜色
  • 这里是您的输入图像(我将它们放在一起):

    以下是源代码的结果图像:

    左上角的彩色方块就是我使用的调色板(从图像中提取)

    下面是我使用的代码(C++):

    图片pic0、pic1、pic2;
    //pic0源img
    //pic1-源pal
    //pic2-输出img
    int x,y,i,j,d,d0,e;
    int r,g,b,r0,g0,b0;
    颜色c;
    列表pal;
    //将输出调整为源图像大小清除为黑色
    pic2=pic0;pic2.clear(0);
    //从调色板图像创建不同颜色的pal[]列表
    
    对于(y=0;ygoogle肯定会对您有所帮助。对于到绘图仪的转换,这在很大程度上取决于您拥有的图像。您可以将字符矢量化为与花朵不同的颜色。您不需要松散的颜色使用抖动…矢量化取决于您想要什么…只是轮廓或完全归档…还很大程度上取决于图像内容如果你不局限于位图,那么你也可以直接使用2D矢量格式,如svg、wmf、emf、dwg……添加图像示例我将使用真实的照片图像。我想的是比标准算法更好的颜色还原方法。例如,GIMP已经很好地实现了颜色还原ction模块,但它是通用的颜色缩减。我需要进行图像矢量化,我想知道是否有方法可以实现与我任务的具体细节相关的更好的缩减颜色。作为初学者,您应该解释可用的绘图说明……我猜相对于m的时间更改颜色的时间/成本ove绘图仪头部也是如何绘图的一个决定性因素-因此您需要识别绘图仪及其用户手册。@MarkSetchell如果您喜欢,请看一看。刚刚在那里上传了新的动画GIF。Spektre,非常感谢,非常好的回答。我没有提供太多有目的的初始信息。I h为了收集新的想法,ad希望实现类似头脑风暴会议的功能。在这里,你可以看到更多关于我如何解决问题的细节:很好的算法。我喜欢它。它有一些缺陷(比如产生波浪),但它非常简单,允许非常快的执行。@Raffzahn yep…顺便说一句,只需稍微调整处理像素的顺序就可以避免像线一样的伪影…比如做8x8像素的正方形,然后清除累积的误差…这对BW也很好(无需任何调整)请看,我使用此算法进行RT GIF编码…我的答案中使用的任何动画GIF都是由它完成的…:)@Raffzahn:)。。。我记得Z80天在纸上编码和翻译,然后戳进RAM并随机化usr:)。。。还要花上几个小时来寻找其中的漏洞