Размытие по Гауссу на Silverlight WriteableBitmap - PullRequest
2 голосов
/ 13 мая 2011

Я использую WriteableBitmap в Silverlight в качестве инструмента для временного хранения и, в конце концов, рисую мой алгоритм для рисования плоской двумерной равномерно распределенной вселенной с конечным количеством вещества.

Чтобы увидеть определения "вселенных" (рисунок 3): http://alienryderflex.com/homogeneity/

Я использую изменение размера растрового изображения, чтобы приблизить алгоритм и получить квадратичное ускорение с линейной потерей качества.

Проблема в том, что мне нужно сделать размытие по Гауссу на изображении, чтобы уменьшить пикселизацию после уменьшения и увеличения, что в случае отсутствия добавляет частоту ошибок алгоритма.

Вы можете увидеть мою тестовую реализацию Здесь .

Если вы нажмете «Создать», а затем «Рисуете» и подождете 20 секунд, вы увидите, что даже на выходе видно пикселизацию.

Но мне нужен этот выходной битовый массив как «карта плотности вещества» на втором этапе алгоритма.

Так как мне сделать размытие по Гауссу для этих доступных для записи растровых изображений? Я действительно хотел бы найти подходящую реализацию вместо того, чтобы писать свою собственную, которая будет очень трудоемкой для массива целых чисел -> Святой Христос без байтовых указателей на данных изображения ??

Спасибо!

Edit:

Чтобы уточнить: мне нужны данные, размытые по Гауссу, чтобы работать с ними: не только визуальное размытие по изображению.

1 Ответ

1 голос
/ 13 мая 2011

Лучший способ сделать это в silveright - написать собственный графический эффект. В silverlight 3 вы можете записывать их как файлы DirectX .fx. Они будут аппаратно ускорены и позволят избежать медленного копирования назад и вперед между различными представлениями изображений.

Здесь представляет собой введение. Возможно, есть и лучшие, но это поможет вам начать. Отличительной особенностью пиксельных шейдеров является то, что они настолько быстрые, что вам не нужно беспокоиться об оптимизации.

...