tgoop.com/eshu_coding/102
Last Update:
В фазовой микроскопии отдельно стоит задача развертки фазы. Изображение после вычисления распределено в диапазоне от 0 до 2пи, от всего, что имеет фазовую толщину больше 2пи, отнимается значение, кратное 2пи, после чего в изображение записывается остаток.
В идеальном мире модельных изображений задача решается очень просто, строчек в 15 кода. На практике же все несколько сложнее. Некоторое время назад я нашел замечательно работающую реализацию алгоритма для развертки фазы... в питоне в библиотеке scikit-image.
Изначально я планировал в качестве временного решения сделать воспроизведение питон кода из c#, но потом вспомнил, что библиотека эта - опенсорсная. В их репозитории на гитхабе я откопал исходник функции развертки фазы - 700 строчек на чистом С.
Вот и состоялось мое знакомство с этим замечательны языком. Как водится, оно было полно боли. C# имеет функционал для подключения .dll файлов, написанных на С и С++, потому я вытащил нужное мне, скомпилировал в .dll файл. Проверил работоспособность подключения - на простых примерах - работает. А попытка передать данные в подгруженную вызывает ошибку.
C# орет, что я разбалансировал стек и вообще скоро настанет конец света. Потратив некоторое время на поиск того, что я сделал не так при подключении библиотеки (по примерам с сайта microsoft, в адрес которых я уже прохаживался), я обнаружил, что оказывается все прекрасно работает, если игнорировать негодующие вопли.
P.S. Да, я даже начал писать на С: добавил к нужной мне функции идентификатор DLL_EXPORT и для оптимизации изменил порог срабатывания алгоритма, установив константу Пи = 1,570796326794896619.
#диссер #csharp
BY Эшу быдлокодит
Share with your friend now:
tgoop.com/eshu_coding/102