【问题标题】:transforming an image into an array of lines to draw将图像转换为要绘制的线数组
【发布时间】:2011-04-22 04:31:00
【问题描述】:

如果我有图像的像素数据,如何生成要绘制的线条列表,这样我就不必绘制每个像素?任何语言都可以,尽管我列出了我所掌握的工作知识。 C也可以。我可以选择的标签数量是有限的。另外,你可以给我指点算法。

【问题讨论】:

    标签: c# c++ python image lua


    【解决方案1】:

    您正在寻找“光栅到矢量”算法。该术语来自早期的图形显示系统,该系统使用 CRT(阴极射线管)作为显示器本身。有两种显示图形的方法:“光栅”是从左到右、从上到下扫描一系列线,每条线由开/关像素组成。 CRT 电子枪的控制器只是一遍又一遍地扫描相同的图案,只是改变电子束的强度。在“矢量”显示器上,电子枪可以在任意两点之间画一条直线——没有混叠,没有像素化,只是一条纯直线。矢量显示器能够提供更高的分辨率,但受限于它们可以绘制的线条数量 - 如果绘图有太多线条,那么显示器将开始闪烁,因为它需要重新绘制图片(刷新荧光粉)的 CRT) 将比 CRT 的荧光粉表面的持久性更长。光栅显示器更易于控制,闪烁更少,但分辨率更低。

    【讨论】:

      【解决方案2】:

      一般来说,位图存储在顺序内存中,非常适合显示'blitting';您选择的 GUI 框架将具有绘制位图的功能,并且该功能将经过精心优化。

      另一方面,将图像分解为线条 - 将图像矢量化 - 是专业项目和正在进行的研究的领域。在所有情况下,它会 到计算机和更慢 绘制而不是位图。

      【讨论】:

        【解决方案3】:

        如果您想从图像中提取线条,请尝试使用Hough transform。 , 还可以查看Reversible Straight Line Edge Reconstruction,它出现在 Graphics Gems V 中。代码在线http://tog.acm.org/resources/GraphicsGems/gemsv/ch6-5/

        【讨论】:

        • 不仅我认为这不是 OP 正在寻找的东西,而且原始 Hough 变换不能识别端点:即它得到的是线,而不是线段......跨度>
        【解决方案4】:

        如何用线条实现与像素相关的效果?你需要单独绘制每个像素。

        【讨论】:

          【解决方案5】:

          Opencv 具有名为“cvHoughLines2”的函数来检测线条。

          【讨论】:

            猜你喜欢
            • 2010-12-27
            • 2012-02-01
            • 1970-01-01
            • 2012-12-03
            • 2013-02-10
            • 1970-01-01
            • 2019-10-05
            • 1970-01-01
            相关资源
            最近更新 更多