How do I do object detection (or identify the location of an object) if there is only one kind of object, and they are more of less similar size, but the picture does not look like standard scenes (it is detection of drops on a substrate in microscopic images)? Which software is good for it?
The hardest part is image annotation: here the difference between object recognition and object detection becomes important. If you just want to answer the question "does this image contain object X?", then you just need to provide as many images that contain object X as possible, together with as many images that don't contain object X (but are otherwise similar). However if you want to answer the question "Where exactly object X is located in this image?" then you will need to manually provide a bounding box for each instance of object X in each image. Obviously, the second scenario is a lot more labor intensive.
After you've done this part, train either a binary image classifier (typically this will be a convolutional neural network) on your annotated images (split them into train and test partitions), or an object detector (googling "custom object detection" produces lots of code examples how to train it (e.g. https://towardsdatascience.com/tutorial-build-an-object-detection-system-using-yolo-9a930513643a start with Step 2B).
Such applications are usually dealt with by using some image processing and computer vision techniques. As far as I remember, we used Correlation in Digital Signal Processing using MATLAB last semester. The method was simple:
METHOD 1 : Using Cross Convolution
- Import the image you want to use
- Select the object in the image that you want to detect (a drop in your case) using its coordinates
- After some processing, search the image for the drop, using the selected image as reference. (So, MATLAB actually calculates cross convolution of each coordinates of the actual image with that of the 'drop' image)
Read this for detailed method
This requires you to obtain MATLAB and a normal PC
If you can manage to get better hardware or more time (as slower processing demands more time), you can opt for method 2
METHOD 2 : Using Deep Learning
- Download loads of images of drops or the object you are looking for
- Train the model and create a Convolution Neural Network (Hardware and time intensive)
- Validate the network and test it
(this method is more widely used and is a offspring of Artificial Intelligence/ Machine Learning . It provides a far more accurate result at the cost of the images, hardware and time you spend on training the model. Nowadays, people use Python for the same purpose as it saves you from the new syntax that you might face using MATLAB. Both are more or the same equally efficient)
Read detailed methodology here and here