Feature extraction for butterfly images
image-processing, image-segmentation, opencv, python
Solution
Are you willing to write your own image processing logic?
Your best option will likely be to optimize the segmentation/feature extraction for your problem, instead of using previous implementations like opencv meant for more general use-cases.
An option that I've found to work well in noisy/low-contrast environments is to use a sliding window (i.e. 10x10 pixels) and build a gradient orientation histogram. From this histogram you can recognize the presence of more dominant edges (they accumulate in the histogram) and their orientations (allowing for detection for things like corners) and see the local maximum/minimums. (I can give more details if needed)
If your interested in segmentation as a whole AND user interaction is possible, I would recommend graph cut or grab cut. In graph cut users would be able to fine tune the segmentation. Grab cut is already in opencv, but may result in the same problems as it takes a single input from the user, then automatically segments the image.
Problem
I have a set of butterfly images for training my system to segment a butterfly from a given input image. For this purpose, I want to extract the features such as edges, corners, region boundaries, local maximum/minimum intensity etc. I found many feature extraction methods like Harris corner detection, SIFT but they didn't work well when the image background had the same color as that of the butterfly's body/boundary color. Could anyone please tell whether there is any good feature extraction method which works well for butterfly segmentation? I'm using the Python implementation of OpenCV.