Это в основном зависит от плотности ваших петель в Matlab. Если вы просто вызываете серию встроенных функций обработки изображений Matlab, вы, скорее всего, не сможете улучшить производительность (скорее всего, это повредит). Если вы зацикливаетесь на пикселях изображения или выполняете какую-то обработку блоков, вы можете увидеть значительные улучшения. Если вы выполняете некоторые циклы, но объем обработки в каждой итерации значительный, вы можете увидеть только небольшое улучшение или его отсутствие.
То, как я смотрю на Matlab, заключается в том, что каждая исполняемая строка имеет некоторое количество служебных данных. Если вы можете перевести свое решение в форму умножения матрицы или какой-либо другой операции с вектором / матрицей, вы будете страдать только один раз, и она будет незначительной. Тем не менее, с циклами, вы переносите накладные расходы каждый раз, когда цикл повторяется. Кроме того, большинство функций обработки изображений Matlab просто обращаются к оптимизированным библиотекам, поэтому не пытайтесь воссоздать их, если не знаете наверняка, где их можно улучшить.
Я обнаружил, что лучший подход - использовать комбинацию C и Matlab. Я использую Matlab, когда операция может быть легко векторизована (в терминах векторных / матричных операций). Это может означать приход к решению под другим углом, чем тот, который кажется наиболее простым. Кроме того, трудно превзойти построение графиков и визуализацию Matlab, поэтому я бы определенно не перешел на полностью C / C ++ решение, если у вас нет плана, как отображать с C / C ++ (если это является частью вашего проекта).
Если я не могу придумать относительно простой способ векторизации, я просто реализую часть обработки, которая требует жестких циклов, в функции C mex, которую можно вызывать из Matlab. Я склонен использовать C вместо C ++ в этом случае, поскольку процесс должен быть относительно небольшим и не требовать много сложной абстракции данных, но C ++ также будет работать нормально. Убедитесь, что вы получаете доступ к данным изображения в главном столбце, чтобы максимизировать попадания в кэш, поскольку Matlab организовывает свои матрицы таким образом.