【问题标题】:Fast way to convert large vectorial images to binary matrix将大型矢量图像转换为二进制矩阵的快速方法
【发布时间】:2018-12-12 04:14:13
【问题描述】:

我有复杂的矢量图像,我需要将其转换为高精度的二进制矩阵(一种光栅化),必须使用 c#。目前我正在通过在位图中绘制矢量图像并读取内部位图数组来做到这一点。然后我将此数组转换为二进制矩阵,其中 1 表示相应像素具有特定颜色,而 0 表示不是。当我直接访问内部位图数组时,速度很快并且允许使用Parallel.For 问题是我需要获得非常高清的图像矩阵(50000x25000 或更多)。因此,我必须绘制每个矢量图像,将其分成几个部分,因为不支持这种大小的位图。 因为我有很多图像要转换,所以速度很慢。 我正在寻找一种快速的方法来做到这一点而不会失去精度(理想情况下甚至会增加它)。我需要将此功能集成到 c# 应用程序中。

【问题讨论】:

  • 我怀疑OpenCV 应该能够处理这个
  • 您能多说一下您所拥有的矢量信息的格式或类型吗?你用的是什么bpp格式的位图?我可以在 64 位 .Net 中毫无问题地创建 new Bitmap(50000,25000,PixelFormat.Format1bppIndexed)
  • 另一种可能性显然是使用带有System.Windows.Media.Imaging 的 WIC,这显然启动有点慢,但应该没问题。
  • 嗨,回答 NetMage:我需要使用不同颜色在位图中绘制矢量多边形数据,因为接下来我读取位图像素以找到某些特定颜色的像素。这个想法是将一些多边形转换为二进制矩阵,但这些多边形可能会被其他多边形部分隐藏。所以我使用不同的颜色并以特定的顺序绘制所有多边形,然后在生成的位图中找到特定颜色的像素。因此我需要使用至少 256 种颜色。
  • @modestprog,您可以 (1) 分割图像,然后 (2) 使用并行线程将每个片段转换为二进制,然后 (3) 将片段合并在一起。

标签: c# image-processing graphics rasterizing


【解决方案1】:

我终于使用了 Gdal 光栅化工具,将多边形作为 shapefile 传递,它运行得非常好而且很快。

【讨论】:

    猜你喜欢
    • 2017-12-22
    • 2019-05-02
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2012-06-12
    • 2022-01-23
    • 2019-05-22
    相关资源
    最近更新 更多