Я делаю некоторый код обработки изображений в C#, но я не могу пользоваться никакими библиотеками или GNU как код.
Функция UnsharpMask зависит от Гауссовой размытости, которая в свою очередь зависит от преобразований Фурье. Я написал код для всего этого, и вещи работают, но короче говоря, я должен удалить функции FFT. Там какой-либо путь состоит в том, чтобы выполнить нерезкую маску в другом отношении, для которой, возможно, не нужен FFT?
Я нашел решение, соответствующее моим потребностям.
Я попробовал несколько быстрых и грязных алгоритмов размытия и обнаружил, что достаточно как Размытие по рамке , так и Размытие по стеку . Stack Blur имеет более чистое размытие, чем Box Blur, и в несколько раз быстрее, чем Gaussian. Так что я могу использовать любой вместо гауссовского.
Теперь я могу избавиться от всего беспорядка в коде БПФ и заменить его чем-то более управляемым. Это решение может быть не для всех, но поскольку UnsharpMask основан на размытии, я не считал его слишком точным с точки зрения науки.
Кстати, размытие по Гауссу в GIMP, похоже, также избегает БПФ.
Фурье-преобразование части гауссова размытия - это всего лишь эффективный способ свертки с гауссовым ядром. Это можно сделать, используя прямую свертку с Гауссовым ядром соответствующего стандартного отклонения и размера (ядро нечетного размера примерно в 5-6 раз больше стандартного отклонения).
См. Свертка в Википедии .
Я считаю, что даже если вы не можете использовать какие-либо библиотеки или GNU, вы можете посмотреть на их реализацию и Попробуйте воспроизвести аналогичный код для ваших требований?
Список функций OpenCV. Проверьте детали функции здесь, а затем детали реализации в заголовочных файлах. http://opencv.willowgarage.com/documentation/genindex.html
также, если вы заинтересованы в реализации C #, я бы предложил следующее http://aforgenet.com/framework/