2011-05-12 119 views
2

我在Silverlight中使用WriteableBitmap作为临时存储的工具,并最终绘制我的算法的结果,绘制看似平坦的二维均匀分布的宇宙,其中有限的物。Silverlight上的高斯模糊WriteableBitmap

要SEEE“宇宙”(图3)的定义:http://alienryderflex.com/homogeneity/

我使用位图尺寸调整到aproximate算法,并获得具有线性质量损失二次加速。

问题是我需要在图像上做一个高斯模糊,以减小缩小和放大后的像素化,如果不存在则会增加算法的错误率。

你可以看到我的测试实现Here

如果按下Generate然后Draw,然后等待20秒,您将看到即使在输出像素化时也可以看到。

但是我需要输出位图作为算法第二阶段的“物质密度图”。

那么如何在这些可写位图上进行高斯模糊? 我真的很想找到一个合适的实现,而不是写我自己的,这将是非常费时的一系列整数 - >圣洁的基督没有字节指针的图像数据??

谢谢!

编辑:

为了澄清:我需要的高斯模糊数据传回操作就可以了:不仅是视觉上的模糊图像。

回答

1

在silveright中做到这一点的最好方法是编写自定义图形效果。在Silverlight 3中,您可以将它们编写为DirectX .fx文件。这些将被硬件加速,并且将避免在不同图像表示之间来回缓慢拷贝。

Here是一个介绍。有可能会更好,但它会让你开始。关于像素着色器的很酷的事情是,它们速度如此之快,以至于您无需担心优化。

+0

我知道如何对HLSL高斯模糊进行编码,即使它必须在两遍中完成,并且在HLSL中做到这一点非常痛苦。我已经在这里做过了:http://marino.boletus.hr/3dpee.zip - 但!我唯一的问题是:在像素着色器应用了效果之后,我可以获取位图数据吗?我不仅需要视觉数据。 – 2011-05-12 21:38:34