I want to learn practical image processing from scratch/basics in easy way. Which software will be helpful in this regard? Matlab or python?
[EDIT-20200516: see at the bottom fro comparison with...cars] For learning from scratch, I would not suggest a programming language alone, but instead the couple "teaching materials" (book, lecture notes) + "exercices with a specific programming language". So if you find a book that you like on "Python for computer vision with exercices" or "Image processing theory and practice with Matlab, that could be interesting starting points. Also, your programming tastes and skills may evolve, and learning a first programming language helps you learning a second one in general. But laziness sometimes drives you to sticking to your first language, reusing old librairies. Last, the purpose is important. In my case, I mostly engineer algorithms as prototypes and proofs of concepts, that can stay as them, or are turned into "solid programs" by people that are better at, and like better, programming with the rules-of-art in lower levels languages, depending on the target.
To that respect, Matlab is great at designing and fine tuning algorithms, possesses a lot of documentation and help that you can follow step-by-step, and enjoys a long list of contributed toolboxes, esp. at MatlabCentral FileExchange. When the workflow is set, if you care of speed, efficiency, etc., it is time to pass the algorithmic prototyping over to real programmers (C++, or lower level, which I can't do).
Globally, as long as you grow solid image processing skills, I would think what mostly differ between Matlab and Python are the cost and the trendiness. On my side, I would switch to Python for machine learning and data science, but I will stick to Matlab for most of my signal processing and image analysis works for a while.
You can also use (free) open source software, with contributed toolboxes and plugins, that often benefit from external publications. I would suggest:
- ImageJ: Image Processing and Analysis in Java
- Icy: Open Source Image Processing Software
- OpenCV: Open Source Computer Vision Library
- SciLab: Image Processing & Computer Vision
- Julia: Image Processing
- From MathWorks (biased): MATLAB vs. Python: Top Reasons to Choose MATLAB
- For RealPython (biased): MATLAB vs Python: Why and How to Make the Switch Toby Driscoll (more balanced): Matlab vs. Julia vs. Python (compared to BMW sedan, Ford pickup and Testa)
MATLAB [...] It’s probably still the easiest to learn for basic numerical tasks. Meticulous documentation and decades of contributed learning tools definitely matter.
MATLAB is the BMW sedan of the scientific computing world. It’s expensive [...] rock-solid [...] attracts a disproportionate amount of hate.
Python is a Ford pickup. It’s ubiquitous and beloved by many (in the USA). It can do everything you want, and it’s built to do some things that other vehicles can’t. Chances are you’re going to want to borrow one now and then. But it doesn’t offer a great pure driving experience.
Julia is a Tesla. It’s built with an audacious goal of changing the future, and it might. It may also become just a footnote. But in the meantime you’ll get where you are going in style, and with power to spare.
most of the people who answer questions here tend to use python or matlab.
you are more likely to get help here using those tools rather than labview.
in of itself, this doesn’t say matlab is “better”. it all depends on what is better for you.
in the distant past, matlab was restricted to double floats for all numerical representations. this made matlab a huge memory hog with images. this is no longer true.
a lot of questions posted here, concern opencv. if i were you, i would factor opencv compatibly highly.
MATLAB is one of the most important software inventions of the twentieth century, from a DSP point of view its syntax is simply the best in the world. And image processing is one of its strongest parts. However it's mainly of academic focus and if you look for industrial output you should consider having a number of additional tools.
LabView is one such example and its natural integration with NI produced DSP chips and platforms is probably its strongest part. Yet for core algorithm development you would still benefit from a flexible tool such as MATLAB or its free semi-clone OCTAVE.
Python is a free, powerful and expanding language. Very versatil. I don't like its syntax which simply sucks. Neverthless it's free, growing and academically accepted with excellent Linux integration vs poor Windows support. Its packages are probably its strongest part and syntax is the weakest.
OpenCV is a specialised tool for unique task of image processing. It's quite popular in machine vision, or industrial automation world. I think however that, as Python packages are growing and improving day by day, they may eventually replace OpenCV as a package of Python in the future.