Detecting extraterrestrial activity on earth using PythonPosted by Carlos De La Torre 12 months ago Comments
Have you ever seen through a plane’s window, or in Google Maps, some precisely defined circles on the Earth? Typically many of them, close to each other? Something like this:
Do you know what they are? If you are thinking of irrigation circles, you are wrong. Do not believe the lies of the conspirators. Those are, undoubtedly, proofs of extraterrestrial visitors on earth.
As I want to be ready for the first contact I need to know where these guys are working. It should be easy with so many satellite images at hand.
So I asked the machine learning experts around here to lend me a hand. Surprisingly, they refused. Mumbling I don’t know what about irrigation circles. Very suspicious. But something else they mentioned is that a better initial approach would be to use some computer-vision detection technique.
So, there you go. Those damn conspirators gave me the key.
So now, in the Python ecosystem computer vision means OpenCV. And as it happens, this library has got the HoughCircles module which finds circles in an image. Not surprising: OpenCV has a bazillion of useful modules like that.
Lets make it happen.
First of all, I’m going to use Landsat 8 data. I’ll choose scene 229/82 for two reasons:
- I know it includes circles, and
- it includes my house (I want to meet the extraterrestrials living close by, not those in Area 51)
The first issue I have to solve is that the
finds circles in a grayscale image using a modification of the Hough transform
Well, grayscale does not exactly match multi-band Landsat 8 data, but each one of the bands can be treated as a single grayscale image. Now, a circle can express itself differently in different bands, because each band has its own way to sense the earth. So, the detector can define slightly different center coordinates for the same circle. For that reason, if two centers are too close then I’m going to keep only one of them (and discard the other as repeated).
Next, I need to determine the maximum and minimum circle’s radius. Typically, those circles sizes vary, from 400 mts up to 800 mts. That is between 13 and 26 Landsat pixels (30 mts). That’s a starting point. For the rest of the parameters I’ll just play around and try different values (not very scientific, I’m sorry).
So I run my script (which you can see in this Jupyter notebook) and without too much effort I can see that the circles are detected:
By changing the parameters I get to detect more (getting more false-positives) or less circles (missing some real ones). As usual, there’s a trade-off there.
Filter-out false positives
These circles only make sense in farming areas. If I configure the program not to miss real circles, then I get a lot of false positives. There are too many detected circles in cities, clouds, mountains, around rivers, etc.
That’s a whole new problem that I will need to solve. I can use vegetation indices, texture computation, machine learning. There’s a whole battery of possibilities to explore. Intuition, experience, domain knowledge, good data-science practices and ufology will help me out here. Unlucky enough, all that is out of the scope of this post.
So, my search for aliens will continue.
Mental disorder disclaimer
I hope it’s clear that all the search for aliens story is fictional. Just an amusing way to present the subject.
Once clarified that, the technical aspects in the post are still valid.
To help our friends of Kilimo, we developed an irrigation circles’ detector prototype. As hinted before, instead of approaching the problem with machine learning we attacked it using computer vision techniques.