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

时间:2010-09-29 12:00:27

标签: c# silverlight algorithm image image-processing

我们目前正在Silverlight中为图像处理创建一个简单的应用程序,我们遇到了一些障碍。我们希望用户能够选择图像的某个区域(通过在其所选区域周围绘制一条手绘线或在其周围创建一个多边形),然后能够将效果应用于该选区内的像素。

创建一系列图像很容易,但我们需要一种非常快速的算法来决定应该操纵哪些像素(即某些东西可以检测用户选择的像素)。

到目前为止,我们已经考虑过三种可能性,但我们确信必须有一种非常有效和快速的方法来做到这一点比这些更好。

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

2。使用Line Crossing Algorithim。 事物的类型seen here

第3。洪水填充。 选择沿选择路径的像素,然后在该选择内执行泛光填充。这可能很好。

这一定是一个通常会解决的问题,因此我们猜测还有更多的解决方案,我们甚至都没想过。

你会推荐什么?

2 个答案:

答案 0 :(得分:4)

洪水填充算法是一个不错的选择。

看看这个实现:

Queue-Linear Flood Fill: A Fast Flood Fill Algorithm

答案 1 :(得分:3)

您应该能够使用多边形来创建剪切路径。用于描述Silverlight多边形的迷你语言很安静。

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

希望这会有所帮助。只是抛出想法,看看是否有任何棍子:)