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 回表示 (過去 30 日間)
古いコメントを表示
5 件のコメント
Greg Heath
2017 年 11 月 19 日
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
採用された回答
Image Analyst
2017 年 11 月 19 日
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 件のコメント
Image Analyst
2017 年 11 月 19 日
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.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Image Segmentation and Analysis についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!