Versión TLDR : Lata ? SÍ Debería ? NO
Descripción
Debido a la simplicidad de MATLAB, uno podría verse tentado, pero personalmente recomendaría encarecidamente no usarlo para productos a gran escala, especialmente en visión por computadora. Y aquí está la razón por la cual:
- No estudié ciencias de la computación en los grados 11 y 12, pero ahora deseo estudiar ciencias de la computación en el Manipal Institute of Technology. ¿Es una buena decisión hacerlo?
- ¿Ha habido casos en Informática de no investigadores que contribuyen fundamentalmente a la investigación?
- Dados los recientes avances en la curación de la ceguera, ¿sigue siendo relevante la investigación en informática de accesibilidad para discapacidades visuales?
- ¿Qué área de investigación debo elegir? Tengo opciones entre "Semántica de lenguajes de programación" y "Algoritmos y criptografía" de investigación para mi tesis de maestría, y estoy extremadamente confundido en las circunstancias.
- ¿Cuál es el contexto de los algoritmos de transmisión en la ciencia de datos?
- Propietario : MATLAB es un software propietario y, dependiendo de las características que pueda usar, puede terminar pagando una gran cantidad de dinero o terminar en el otro extremo de una demanda (según el nivel de ignorancia). Las bibliotecas como OpenCV, por otro lado, son de uso gratuito.
- Personalización : MATLAB le impide modificar su código fuente, a diferencia de otras bibliotecas de código abierto. Este es un gran inconveniente de MATLAB. Aunque proporcionan una funcionalidad realmente sorprendente en su caja de herramientas de Adquisición de datos, Análisis de datos, Visión por computadora, Procesamiento de imágenes, sin embargo, dependiendo de cuál sea su caso de uso, puede no ser suficiente y puede requerir alguna otra variante o función completamente diferente a la los disponibles por MATLAB. Otros lenguajes y bibliotecas de código abierto como PCL, OpenCV cuando se usan junto con Python y C ++ le darán el mejor escenario aquí.
- Optimizaciones : Esto es algo que deberá considerar especialmente al trabajar en proyectos de visión por computadora a gran escala. Aunque MATLAB tiene su parte de las herramientas de aceleración CUDA y OpenCL, no son nada en comparación con lo que puede hacer con el código fuente sin procesar disponible para usted de las principales bibliotecas de código abierto cuando se usa junto con Python y C ++.
- La mejor parte es que puede distribuir los módulos de gran cantidad de recursos a C ++ mientras utiliza los marcos CUDA u OpenCL (según su preferencia), y luego automatiza todo el flujo de trabajo utilizando Python. Simplemente no puede alcanzar este nivel de sofisticación tan fácilmente con MATLAB . Período
- Cuando profundice en el repositorio de MATLAB en su sistema, encontrará que utiliza las mismas bibliotecas de C ++ como Boost, Eigen, Flann que requieren OpenCV y PCL (pueden requerir Qt, VTK, etc.) al compilarlas desde la fuente, por lo que no debería tener quejas al respecto.
- Compatibilidad : esta es una característica importante a tener en cuenta. Python y C ++ son compatibles con casi todas las bibliotecas, marcos, servicios de alojamiento, hardware, lenguaje y procesos de compilación más importantes. MATLAB viene con su propio ecosistema. Aunque puede generar archivos .mex y .c de su código MATLAB, ese es el final. Este es un problema importante junto con la personalización y las optimizaciones para considerar la escalabilidad.
Usted mencionó Java explícitamente y encontrará que todo este ecosistema de código abierto que acabo de describir es compatible con Java sin problemas. Pero la razón más importante de todas es:
- MATLAB se usa para la creación de prototipos, no para la producción . Su requisito establece explícitamente la arquitectura y el código de calidad de producción, y por contra intuitivo que parezca, pero el código prototipo y el código de calidad de producción son muy diferentes.
En cuanto al volumen de datos a procesar, realmente no importa qué arquitectura use, ya sea basada en MATLAB o Python / C ++ / Java utilizando OpenCV y PCL, todos ellos tienen herramientas de funcionalidad incorporadas para ayudar a codificar rutinas para automatice el flujo de trabajo para que pueda concentrarse en sus algoritmos principales.
Espero que esto ayude 🙂
¡Todo lo mejor para tu proyecto!