C# 检测像素是否在边界内的算法
我们目前正在Silverlight中为图像处理创建一个简单的应用程序,我们遇到了一些障碍。我们希望用户能够选择图像的某个区域(通过在所选区域周围绘制手绘线或在其周围创建多边形),然后能够将效果应用于该选择中的像素 创建一个图像选择是很容易的,但是我们需要一个非常快速的算法来决定哪些像素应该被操作(例如,检测哪些像素在用户的选择中) 到目前为止,我们已经考虑了三种可能性,但我们确信必须有一种真正有效且快速的方法来做这件事,这比这些更好 1。逐像素。 我们只需检查图像中的每个像素,并检查它是否在用户选择范围内。显然这太慢了 2。使用直线交叉算法。 事情的类型 3。洪水填充。 沿选择的路径选择像素,然后在该选择中执行整体填充。这可能行得通 这一定是一个普遍解决的问题,所以我们猜测还有很多我们甚至没有想到的解决方案C# 检测像素是否在边界内的算法,c#,silverlight,algorithm,image,image-processing,C#,Silverlight,Algorithm,Image,Image Processing,我们目前正在Silverlight中为图像处理创建一个简单的应用程序,我们遇到了一些障碍。我们希望用户能够选择图像的某个区域(通过在所选区域周围绘制手绘线或在其周围创建多边形),然后能够将效果应用于该选择中的像素 创建一个图像选择是很容易的,但是我们需要一个非常快速的算法来决定哪些像素应该被操作(例如,检测哪些像素在用户的选择中) 到目前为止,我们已经考虑了三种可能性,但我们确信必须有一种真正有效且快速的方法来做这件事,这比这些更好 1。逐像素。 我们只需检查图像中的每个像素,并检查它是否在用户
您有什么建议?您应该能够使用多边形创建剪切路径。Silverlight中用于描述多边形的迷你语言有很好的文档记录 更改图像副本上的像素(所有像素通常比某些像素更容易修改),然后使用剪切路径仅将更改的所需区域渲染回原始图像(可能会使用额外的缓冲位图来获得结果)
希望这有帮助。把这些想法抛出去,看看是否有什么坚持:)洪水填充算法是一个不错的选择 看看这个实现:
您想要比O(n)更快的速度吗?智能溢流填充真的那么慢吗?你确定这真的是性能问题吗?我的意思是,即使ms paint也能很快地完成这类工作(绘制一个闭合多边形填充,这正是您所需要的)。您应该看看@Django:您能分享一下代码吗??我的处境和你一样。。