OpenStreetMap logo OpenStreetMap

Photomapping with cheapo action cam

Posted by smootheFiets on 13 January 2020 in English.

I got myself a cheap “action cam” straight from China, for little more than 20 EUR. GoPros run easily ten times more than that. So, what can you expect from a budget cam? Turns out, it’s surprisingly useful for photo mapping, with a few gotchas.

Can do / can’t do

  • Photo quality, of course, is mediocre at best. You get what you pay for, no more, no less. Videos look useless (I’ll have to try on a bright, sunny day), sound clearly is useless. There’s a lot of good stuff you can do with daylight pics, however.

  • The cam can be mounted on the bike’s handlebar or carried on a neck strap. Both work. Pictures can be taken with gloves on. That’s surprisingly important in January :)

  • Motion blur is an issue. Shooting sideways on the bike, as good as it sounds for shop mapping and such, won’t work. Shooting forward is OK. Night-time shots are for better cameras; this one won’t cut it.

  • Text won’t be readable unless you’re really close-by. Gotta get a feeling for that.

  • Road geometry, lane number, presence/absence of sidewalks, traffic_calming are very easy to recognize. Extremely useful.

  • Cycleway signs (NL:G11, G12a, G13): easy

(this list to be continued)

Geo-tagging

Of course, the camera itself isn’t GPS aware like its more expensive brethren. It does have a clock, though. Not the most accurate one, but still. JOSM can correlate time to GPX tracks. This works.

EXIF

JOSM relies on time information from the EXIF header. Unfortunately, my particular camera model doesn’t create EXIF headers. Time information is recorded in file time stamps, only.

  • It’s crucial to preserve file time stamps when copying pictures from the cam to the computer (“cp -a” if you speak POSIX).

  • jhead (try “sudo apt-get install jhead” or “brew install jhead” if it isn’t present, already) generates an EXIF header from ctime: “jhead -mkexif -dsft *.jpg”

  • Now pix can be read into JOSM and correlated with the .gpx. For time cross-correlation between cam and GPS, it’s useful to take a pic (or many!) of GPS time. Can be adjusted manually, too. Base this, e.g., on a picture of a landmark taken while riding fast.

Time offset list

This section really won’t matter for anyone but me :) * 2020/01/13: best offset -14 s

Email icon Bluesky Icon Facebook Icon LinkedIn Icon Mastodon Icon Telegram Icon X Icon

Discussion

Comment from GOwin on 16 January 2020 at 04:48

Nice! What’s the camera brand?

You can also contribute your geotagged images to Mapillary or OpenStreetCam, and those imagery can be made available to other OpenStreetMap contributors (especially where imagery is sparse), and could also be used to train AI/ML for road feature detections.

Comment from smootheFiets on 28 January 2020 at 12:51

Thanks for asking! It’s really a no-brand camera. Something like this: https://www.aliexpress.com/item/4000166920293.html (there are many similar models)

I agree that Mapillary is super useful, and coverage is indeed sparse where I am. I’ve started looking into it. So far, I’m taking single shots at locations that I find interesting for surveying, and I’ve uploaded the odd pic or two.
That’s not really what Mapillary is about, though. I’d rather take videos and convert those to ‘tracks’ on Mapillary. I have yet to figure out how to convert videos from my cam to single pics at appropriate time steps, with proper timestamps given to images. After that, correlating with GPX and upload to Mapillary should be straightforward.

But first of all, I need to wait for a day when I have time to go on a bike ride at daylight hours, with decent weather ;) Looks like this could take a while.

Log in to leave a comment