代码之家  ›  专栏  ›  技术社区  ›  Chuck Le Butt

检测像素是否在边界内的算法

  •  3
  • Chuck Le Butt  · 技术社区  · 14 年前

    我们目前正在为创建一个简单的应用程序 图像处理 在Silverlight,我们遇到了一个小麻烦。我们希望用户能够选择图像的一个区域(或者在所选区域周围画一条手绘线,或者在其周围创建一个多边形),然后能够对该选择中的像素应用效果。

    创建一个选择的图像是很容易的,但我们需要一个非常快速的算法来决定哪些像素应该被操纵(即。 用来检测哪些像素在用户选择范围内的东西 ).

    1逐像素。 我们只需检查图像中的每个像素,并检查它是否在用户选择范围内。显然这太慢了!

    2使用线交叉算法。 事情的类型 seen here .

    沿选择的路径选择像素,然后在该选择中执行整体填充。这也许行得通。

    这一定是一个普遍解决的问题,所以我们猜测还有更多的解决方案,我们甚至没有想到。

    你有什么建议?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Branimir    14 年前

    洪水填充算法是一个很好的选择。

    看看这个实现:

    Queue-Linear Flood Fill: A Fast Flood Fill Algorithm

        2
  •  3
  •   iCollect.it Ltd    14 年前

    您应该能够使用多边形创建剪切路径。Silverlight中用于描述多边形的迷你语言有很好的文档记录。

    改变图像副本上的像素( 所有像素 通常比 一些像素 ),然后使用剪裁路径仅将所需的更改区域渲染回原始图像(可能使用额外的缓冲区位图作为结果)。

    希望这有帮助。把想法扔出去,看看有没有什么线索:)