Відповіді:
Йдеться не лише про мову програмування, але й бібліотеку, яку ви використовуєте. Я можу придумати таке:
MATLAB - можливості обробки зображень цілком нормальні, але для більш досконалої та реальної обробки часу вам знадобляться речі низького рівня. Крім того, він не пропонує дуже хорошої мобільності.
Mathematica - добре для прототипування та швидкої візуалізації, але це все, на мою скромну думку.
OpenCV - Я думаю, що це найпопулярніша бібліотека в IP-спільноті. Чудові можливості ( обчислення графічного процесора, модуль машинного навчання, графічний інтерфейс - що ще потрібно? ), Швидкий і все ще в стадії розробки (тому незначні помилки видаляються дуже швидко). Щодо громади - вона велика! В основному для програмування на C / C ++, але також і Python (напевно, вам підходить).
JAI - Java Advanced Imaging - лише якщо вам подобається Java. Особисто мені це не подобається.
ImageMagick - ви можете використовувати його з багатьма мовами програмування, перевірте API .
CxImage - добре, якщо ви хочете створити щось краще, ніж MS Paint і з деякою функціональністю Photoshop.
CImg - очевидно, що використовується з C ++, але OpenCV все ж краще.
PIL - спеціальна бібліотека Python з великою кількістю функціональних можливостей. Якщо вам це подобається, тоді ви можете уважніше подивитися.
SimpleCV - в основному це зв'язування пітона OpenCV з деякими налаштуваннями. Дуже простий у використанні і досить ефективний.
scikit-image - теж бібліотека Python, але на мій погляд гірше SimpleCV (хоча мій друг на це не погодився). Одна перевага полягає в тому, що вони включали екстрактор DAISY - досить корисний, якщо вам потрібні щільні функції.
GIL - частина Boost , але менш функціональна, ніж OpenCV. Хоча якщо ви любите і використовуєте Boost, то для деяких основних функцій це повинно бути нормально.
ResIL - продовження проекту DevIL . Основна перевага полягає в роботі багатьох форматів файлів, включаючи деякі файли гри.
PINK - спочатку написано на C ++. Я нещодавно спробував це, і було дуже приємно працювати. Відмінна інтеграція з Python та швидке вбудовування C. Крім того, у них є безліч приємних алгоритмів.
Очевидно, є набагато більше бібліотек обробки зображень, але це ті, з якими я мав контакт. Тож якщо ви хочете почати з чогось, то вибирайте OpenCV (бажано, з рамками C ++) - ви не пошкодуєте! З іншого боку, якщо ваші навички програмування не є сильними, то, можливо, ви захочете подумати про використання бібліотек на основі Python - дуже легко вивчити та налаштувати.
MATLAB - найкраща мова для вивчення обробки зображень. (це моя думка)
Він простий у навчанні, апаратно незалежний, гнучкіший за будь-яку компільовану мову, можливо більш ефективний, ніж мови скриптів (завдяки властивим йому dll, оптимізованим для обробки сигналів на машинному рівні), він має гарну академічну та інженерну підтримку.
C / C ++ - найкраща мова для створення автономних програм для обробки зображень. Під набором IDE ви можете генерувати власний код, який є найбільш ефективним. І IDE для C ++ забезпечують кращі можливості налагодження на рівні машини.
Також використовуються деякі мови скриптів. Вони дійсно гнучкі, портативні, навіть значно ефективніші, проте налагодження може бути непростим на низьких рівнях.
Також нові можливості обробки графічних процесорів для CUDA, OpenCL тощо істотно збільшують обчислювальну пропускну здатність. (Однак їх складніше вивчити, оскільки ви повинні знати про основні апаратні архітектури конвеєра GPU, щоб використовувати будь-які підвищення ефективності)
Якщо ви хочете згорнути власні алгоритми чи код, то додайте OpenCL, оскільки багато ядер для обробки зображень є "бентежно паралельними".
Або на Big Iron, Fortran як і раніше перемагає більшість інших мов при цифровій векторній продуктивності.