I am working on crops images and want to detect some random pattern from binary image. As in following image want to detect only the area in yellow circle. So how it can be done any algorithm or direct technique? Thanks for you support.

1 view (last 30 days)
  5 Comments
Greg Heath
Greg Heath on 19 Nov 2017
I don't know how to do it. However, the obvious difference is the average color level of the surrounding pixels
Hope this helps.
Greg
Asif Ameer
Asif Ameer on 19 Nov 2017
well Greg Thanks for your response! But what if I can draw centerline in crop row and then perform some sliding window operation to scan image around this center line and color all these pixels those have been scanned by sliding widow and then perform color based threshold to remove that color area pertaining to crop rows?

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 19 Nov 2017
I'd use bwareaopen() or bwareafilt() to get blobs that are small. Large blobs will be the big crop rows. Of course when the plants are very young it would be hard to tell between a small wheat plant and a small weed. However John Deere has farm machines that drive over the crop rows and use deep learning to spray only the weeds, so it is a solved problem, and probably one that has patents on the concept.
  3 Comments
Asif Ameer
Asif Ameer on 19 Nov 2017
or simply creating mask of of crop rows and then segment that all the portion of original binary image by applying mask?
Image Analyst
Image Analyst on 19 Nov 2017
If the rows are not solid vertically, like the plants are still small and growing, then you can get a vertical projection and look for high mean. then threshold to find the rows. Little weeds in between the rows will not be above the threshold.
horizontalProfile = sum(binaryImage, 1);
wheatColumns = horizontalProfile > someValue;
Then you can use regionprops() to find the centroid of the wheatColumns, and again on the original binary image to find the center of all the blobs. Then filter the binary image to accept only those blobs within some x distance of the wheat column centroids. Blobs in between those would be weed blobs and will be not chosen. That's how I'd proceed for cases where the lanes are not solid from top to bottom, like is the case for small, young plants.
I don't see how edge detection would help at all.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!