【发布时间】:2011-04-22 04:31:00
【问题描述】:
如果我有图像的像素数据,如何生成要绘制的线条列表,这样我就不必绘制每个像素?任何语言都可以,尽管我列出了我所掌握的工作知识。 C也可以。我可以选择的标签数量是有限的。另外,你可以给我指点算法。
【问题讨论】:
如果我有图像的像素数据,如何生成要绘制的线条列表,这样我就不必绘制每个像素?任何语言都可以,尽管我列出了我所掌握的工作知识。 C也可以。我可以选择的标签数量是有限的。另外,你可以给我指点算法。
【问题讨论】:
您正在寻找“光栅到矢量”算法。该术语来自早期的图形显示系统,该系统使用 CRT(阴极射线管)作为显示器本身。有两种显示图形的方法:“光栅”是从左到右、从上到下扫描一系列线,每条线由开/关像素组成。 CRT 电子枪的控制器只是一遍又一遍地扫描相同的图案,只是改变电子束的强度。在“矢量”显示器上,电子枪可以在任意两点之间画一条直线——没有混叠,没有像素化,只是一条纯直线。矢量显示器能够提供更高的分辨率,但受限于它们可以绘制的线条数量 - 如果绘图有太多线条,那么显示器将开始闪烁,因为它需要重新绘制图片(刷新荧光粉)的 CRT) 将比 CRT 的荧光粉表面的持久性更长。光栅显示器更易于控制,闪烁更少,但分辨率更低。
【讨论】:
一般来说,位图存储在顺序内存中,非常适合显示'blitting';您选择的 GUI 框架将具有绘制位图的功能,并且该功能将经过精心优化。
另一方面,将图像分解为线条 - 将图像矢量化 - 是专业项目和正在进行的研究的领域。在所有情况下,它会慢 到计算机和更慢 绘制而不是位图。
【讨论】:
如果您想从图像中提取线条,请尝试使用Hough transform。 , 还可以查看Reversible Straight Line Edge Reconstruction,它出现在 Graphics Gems V 中。代码在线http://tog.acm.org/resources/GraphicsGems/gemsv/ch6-5/
【讨论】:
如何用线条实现与像素相关的效果?你需要单独绘制每个像素。
【讨论】:
Opencv 具有名为“cvHoughLines2”的函数来检测线条。
【讨论】: