Codificação de processamento de imagem

12

Eu queria saber qual é o melhor idioma para o processamento de imagens? Eu sei que o MATLAB tem uma boa biblioteca e comunidade de usuários. Eu ainda não verifiquei, está lá para python também.

Qual é a linguagem mais eficiente para isso?

Fénix
fonte

Respostas:

12

Não se trata apenas da linguagem de programação, mas da biblioteca que você está usando. Eu posso pensar no seguinte:

MATLAB - os recursos de processamento de imagem são bastante bons, mas para um processamento mais avançado e em tempo real, você precisará de algumas coisas de baixo nível. Além disso, ele não oferece uma portabilidade muito boa.

Mathematica - bom para prototipagem e visualização rápida, mas isso é tudo na minha humilde opinião.

OpenCV - Eu acho que essa é a biblioteca mais popular da comunidade IP. Excelentes recursos ( computação em GPU, módulo Machine Learning, GUI - o que mais você precisa? ), Rápido e ainda em desenvolvimento (para que pequenos erros sejam removidos muito rapidamente). Em relação à comunidade - é grande! Principalmente para programação C / C ++, mas também Python (provavelmente combina com você).

JAI - Java Advanced Imaging - somente se você gosta de Java. Pessoalmente, eu não gosto disso.

ImageMagick - você pode usá-lo com muitas linguagens de programação, consulte a API .

CxImage - bom se você deseja criar algo melhor que o MS Paint e com algumas funcionalidades do Photoshop.

CImg - obviamente para ser usado com C ++, mas o OpenCV ainda é melhor.

PIL - biblioteca específica do Python com muitas funcionalidades. Se você gosta, pode dar uma olhada mais de perto.

SimpleCV - basicamente é a ligação de python OpenCV com alguns ajustes. Muito fácil de usar e bastante eficiente.

scikit-image - também biblioteca Python, mas na minha opinião pior que o SimpleCV (embora meu amigo não concorde com isso). Uma vantagem é que eles incluem o extrator de recursos DAISY - bastante útil se você precisar de recursos densos.

GIL - parte do Boost , mas menos funcional que o OpenCV. Embora se você gosta e usa o Boost, para algumas funcionalidades básicas, tudo deve estar bem.

ResIL - continuação doprojeto DevIL . Uma grande vantagem é operar em muitos formatos de arquivo, incluindo alguns arquivos de jogos.

PINK - originalmente escrito em C ++. Eu tentei recentemente e foi muito agradável trabalhar. Ótima integração com o Python e rápido no C. incorporado. Além disso, eles têm muitos algoritmos interessantes.

Obviamente, há muito mais bibliotecas de processamento de imagens, mas essas são as que eu tive contato. Portanto, se você quiser começar com algo, escolha OpenCV (de preferência com o framework C ++) - você não se arrependerá! Por outro lado, se suas habilidades de programação não forem fortes, convém pensar em usar bibliotecas baseadas em Python - muito fácil de aprender e configurar.

jojek
fonte
2

O MATLAB é a melhor linguagem para aprender o processamento de imagens. (É a minha opinião)

É simples de aprender, independente de hardware, mais flexível que qualquer linguagem compilada, possivelmente mais eficiente que as linguagens de script (devido às dlls inerentes otimizadas para processamento de sinais no nível da máquina), possui bom suporte acadêmico e de engenharia.

C / C ++ é a melhor linguagem para criar aplicativos independentes de processamento de imagens. Sob seu conjunto de IDEs, você pode gerar código nativo, o mais eficiente. E os IDEs para C ++ fornecem melhores recursos de depuração no nível da máquina.

Algumas linguagens de script também estão sendo usadas. Eles são realmente flexíveis, portáteis e até consideravelmente eficientes, no entanto, a depuração pode não ser fácil em níveis baixos.

Além disso, os novos recursos de processamento de GPU da CUDA, OpenCL etc. fazem aumentos drásticos nos rendimentos computacionais. (No entanto, eles são mais difíceis de aprender, pois você deve estar ciente da arquitetura de hardware de pipeline da GPU subjacente para usar quaisquer ganhos de eficiência)

Fat32
fonte
-1

Se você deseja criar seus próprios algoritmos ou código, inclua o OpenCL, pois muitos kernels de processamento de imagem são "embaraçosamente paralelos".

Ou, no Big Iron, o Fortran ainda supera a maioria dos outros idiomas com desempenho numérico vetorial.

hotpaw2
fonte