1

I am working on a program to detect split fields for remote sensing (ie. more than one colour/field type within each image, where the image corresponds to the land owned by one farmer) and have been trying to find a solution by reading in images and posterizing them with a clustering algorithm, then analysing the colours and shapes present to try and 'score' each image and decide if more than one type of field is present. My program works reasonably well although there are still quite a few obvious splits that it fails to detect.

Up until now I have been doing this using only standard libraries in c++, but I think now that I should be using openCV or something and I was wondering which techniques to start with. I see there are some image segmentation and blob detection algorithms, but I'm not sure they are applicable because the boundary between fields tends to be blurred or low in contrast. The following are some sample images that I would expect my program to detect as 'split':

(True colour Landsat)

https://i.sstatic.net/3xBeN.jpg

enter image description here

https://i.sstatic.net/qZEid.jpg

enter image description here

Are there any thoughts on how I could go about solving this problem in a different way? Thanks!

2
  • somehow i fail to understand what you mean by: 'split' Commented Aug 18, 2014 at 8:44
  • sorry, edited, and here are some examples of non-split images: imgur.com/hPlxBoj imgur.com/1hcAtaO Commented Aug 18, 2014 at 8:53

2 Answers 2

2

1) Convert to HSV and take H or take gray-scaled form. Apply median filter to smooth the fields :P if images are high-resolution.

2) Extract histogram and find all the peaks. These peaks indicate the different colored fields.

3) (A) Now you can use simple thresholding around these peaks-value and then find canny edges for trapezium or similar shapes.

--OR--

(B) Find canny-edges around the peak value ie for peak with maxima value x, find edge for range of (x - dx) to (x + dx) where dx is a small value to be find experimentally.

4) Now you can extract count of contours at different levels/peaks.

I haven't added code because language is not specified and all these constructs are readily available in OpenCV. Its fun to learn. Feel free to ask further. Happy Coding.

Sign up to request clarification or add additional context in comments.

Comments

0

Try the implementations of the MSER algorithm in MserFeatureDetector.

The original algorithm was thought for grayscale pictures, and I don't have good experiences with the color version of it, so try to do some preprocesing of the original frames to generate grayscales according to our needs.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.