Hacker News new | past | comments | ask | show | jobs | submit login
Adventures in Drone Photogrammetry Using Rust and Machine Learning (cmoran.xyz)
73 points by lukastyrychtr 55 days ago | hide | past | favorite | 6 comments

Just in case - tarps aren't always the advertised size. A 20x40 tarp, for instance, is probably 19x39.

Hi, author here (so cool to see this on HN!).

That's a good call, and one I made sure to take into account. Instead of being a perfect 8 ft. x 6 ft. as advertised, the actual dimensions were a bit smaller at 92" x 67", which works out to about 3.96 m^2.

> We could instead do a simple ratio for this correction factor; a ratio of 9/16 is technically 0.5625. However, when I was testing this, no matter how I measured the size of the tarp (in GIMP, using various DBSCAN hyperparams, etc.), I was consistently getting too high an area (closer to 8-10% error over actual rather than 2-4%)

I'm not an expert in this domain but the ratio 16/9 concerns the image size (so the ratio of screen pixels). However, would it be possible for the camera pixels not to be square? which would account for the discrepancies.

Yes, it definitely is! Part of this comes from the fact that the images that I'm pulling from the drone are raw, meaning that there's a certain amount of distortion [1] that is induced. As a result, the pixels themselves are not only necessarily square, but may not even have uniform geometry at all point in the image. While it's technically possible to minimize these effects using calibration[2], doing so was kind of out-of-scope for this experiment since it's both non-trivial and frankly not really accessible in Rust.

At some point, I'm expecting to try to extend some of this work using stitched images, which will probably require digging around the OpenCV toolkit anyway. If that happens, I'll probably spend some time experimenting with adding in that camera calibration to see if there might be a good way to account for it without requiring a ton of work before each flight.

[1] https://en.wikipedia.org/wiki/Distortion_%28optics%29

[2] https://docs.opencv.org/3.4/dc/dbb/tutorial_py_calibration.h...

This looks pretty cool!

I’ve been using OpenDroneMap for this sort of thing to date and have been happy with the results. That said - if you’d like some higher resolution images to play with, let me know. I fly an Autel EVO 2 Pro and would be happy to take some test shots for you. I even have a silver tarp handy.

I really appreciate the offer! As I mentioned in a separate comment in this thread, I think my next steps are probably going to involve moving experimenting with stitching together larger mosaics and camera calibration work. I also recently found out the `AppxDbscan` implementation I used is actually slower than the standard `Dbscan`, so I'm planning on switching that over (although it shouldn't change much).

Now that I'm thinking about it, though, it might be neat to see how some of this translates to a different drone/camera combo. If you feel so inclined, I'd be happy to re-run this analysis on a similar photo (off-color tarp on a solid background), where I'd need the drone height, photo resolution, and camera specs. My email's in my profile. If so inclined, you should also be pretty easily able to recreate this on your own using the code hosted on Github[1].

[1] https://github.com/quietlychris/tarp_photogrammetry

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact