Я изучаю фигуру из задачи с затенением, и для этого я установил порт в этом примере с MATLAB до python. Это моя реализация . Пока что у меня возникли проблемы с вычислением градиента изображения и не получены те же результаты.
В примере с Matlab они упоминают использование «центрированных конечных разностей», в частности, функции «grad», которому они передают аргумент «options.order = 2». Поскольку я использую numpy, я прибег к «np.gradient». После прочтения документации обоих инструментов кажется, что реализация для моего случая одинакова (даже расстояние между сэмплами / пикселями). Мне кажется, что результаты должны быть одинаковыми, но, как вы можете видеть по ссылкам выше, они сильно различаются.
Вторая проблема связана с восстановлением изображения. Поскольку мой градиент неправильный, это может быть причиной root. Тем не менее, из приведенных выше ссылок мое обновленное изображение и эталонное изображение matlab снова полностью отличаются.
Я надеялся, что кто-то здесь сможет дать некоторые комментарии о том, что вообще может быть за проблема. У меня есть два специфических c вопроса:
1) Что означает "options.order = 2" в matlab?
2) Схожи ли градиенты matlab и numpy? Даже если реализации отличаются, я бы не ожидал, что они дадут разные результаты, поскольку градиент является четко определенной операцией.
К сожалению, у меня нет доступа к matlab для подробного сравнения, но у меня есть ощущение, что matlab делает что-то в фоновом режиме, что не отражается в коде.
Спасибо!