Using the Samsung Gear 360 (SM-C200, 2016 model) with Mapillary


#1

Let’s talk about the Samsung Gear 360 (not the 2017 model SM-R210NZW with the reduced photo resolution). It’s available for 100€ or less in Germany (as of Spring 2017).
The SM-C200 takes fully spherical pictures. It has a nice high photo resolution of 30 megapixels. It has (partial) support for the Google Open Spherical Camera API (in “Streetview” mode).

What are the issues that prevent it from being supported by the Mapillary app?

Also, when not using the app, what’s the best way to

  • take lots of pictures at a configurable interval?
  • stitch them?
  • fix the horizon if the camera is held at an angle?
  • get GPS information into the pics (the OSC API provides this function)?
  • do bulk uploads taken by this camera to Mapillary?

Stitching a large amount of pictures using their PC software (Cyberlink Action Director) is not very pleasant or efficient.


Samsung Gear360 VR camera experiences
#2

I haven’t looked into the new camera but the old was no good because

  • no stitching on camera: we would have to implement that either in the app or in the backend
  • no open API: it’s semi OSC compliant but uses a lot of secret APIs and/or doesn’t follow the spec

#3

I think that Google got access to the special API need to make Street View working


#4

I’d love to get more details regarding this secret API. It should be possible to intercept the commands going back and forth between the app and the camera. Are they sent via Wifi or Bluetooth?

Regarding stitching, do you think the Google Streetview iOS app does the stitching?


#5

They use WiFi so it should be possible to reverse engineer, maybe someone already has done it.

I’m pretty confident they do the stitching in the app. It’s really slow, like 5 seconds or so last time I checked.


#6

OK, I found a github project that handles taking a picture on the Gear 360 (2016) and downloading it using what seems like standard the v1 OSC API. No secret API to be found.

Missing parts:

  • Transmitting the GPS coordinates to the phone at regular intervals or right before taking each picture using the API so the phone can store them in the EXIF data. This can be done using camera.setOptions
  • stitching. (Edit: Perhaps this is automatically done when accessing the camera in Streetview/OSC mode)

The Gear 360 is one of the most popular and most affordable 360° cameras out there right now so I think it may be worth the effort to implement stitching for it on the backend (if the stitching in the app is slower than the smallest interval the camera can handle).


#7

According to this comment the camera does the stitching itself when using the OSC API. It does take a few seconds. I just checked with the Google Streetview API on an iPhone 6S and the (non configurable) interval for taking a picture and transmitting it to the phone was 12 seconds. That’s too slow.


#8

There is another github project, “gear360reveng” focused on reverse engineering of the cameras firmware and its communication in “normal” mode. Using Android, it’s trivial to capture the bluetooth traffic that can then be viewed using Wireshark. Analysis seems to be in very early stages, however.
Samsung is using a Samsung Accessory Framework (custom GATT service) even for a plain thing as bt remote shutter. See http://developer.samsung.com/html/techdoc/ProgrammingGuide_Accessory.pdf


#9

I’m going to look into this in the States.
Do I understand correctly that this unit won’t work with the Mapillary app?


#10

Anyway, since i want to take pictures at a short interval i suppose i can use the camera.takePicture command and not transmit the picture to the phone.

Edit: According to the spec, camera.takePicture takes a equirectangular image so it appears the stitching is done at that point.


#11

@JBTheMilker correct, it does not work with the app.

@Sphereo problem is that they don’t seem to follow the spec. Maybe it’s better after a few firmware updates, I have’t tested in since we got it.


#12

If you could share the test results from the last time you had a look, that’d be great!

I noticed a typo in the API last year, I haven’t checked if it got fixed by now.


#13

I took already 50 000 photos with the gear360 cam, mounted on my bicycle helmet.
I don’t like the original gear360 app, because it is painfully slow and uncomfortable. Better idea for me, to take the photos with “Gear360 value kit” remote control, do not using the phone. I can taking photos every 1 second. Usint this metod there are no geotag and direction in the photos, so I must correlate them with the gpx track, recorded my phone.
I’m using the JOSM software to correlate geotag to the photos, and python script to interpolate directions, or the JOSM mapillary plugin


#14

I have the remote control from the value kit as well - are you saying you just press the button manually once every second?

I did that for a trip when I had the camera mounted to the car roof however I didn’t think it was something I’d be doing for a long time.


#15

I’m taking photos in the forest, there are not many sense taking photos in every 1 meters, only if there are something interesting, curve, tourist sign, table, beautifull place, etc… I take 500-1000 photos on a 30 km long trip, it is many work geotagging the photos, edit the maps, making poi-s, set the surface and smootness of the highway, etc… :smile:
And I upload the photos to the google street view too - it is also many work.


#16

For examble we have made a trip Lackenhof - Lunzer see - Waidhofen
I took 1000-2000 photos, edited the map, (new tracks, set the surface, smoothness, etc…), uploaded the photos to mapillary and google street view


#17

May be a bit late in joining the Gear 360 (2016) party: just bought one last week, at approx. half the price of the LG 360 which I had and returned October 2017.
Impressed with the output : more pixels, better contrast, much better low-light / nighttime pics on lit streets performance.

Both the LG and the Samsung save their output in the form of two adjoining spherical images - spheres you’d expect from a fisheye lens, joined on one side means they’ll need to be split before converting them into a 360 panorama.

Additional advantage that they capture what’s overhead and underfoot, from zenith to nadir for those who may be interested.

Advantage for me as a contributor and mapper at OpenStreetMap is that one can catch say irregular crossroads in one go, rather than take six or eight separate pictures in all directions, then find Microsoft’s Image Composite Editor won’t stich them into a 360 panorama. Plus that some crossroads are quite busy, don’t allow to stand still and take those eight pics, while setting the Gear 360 to 5secs timer and sticking it up in the air allows me to merely stop one second. Plus that not having to stitch in Ms ICE saves in the order of two minutes per panorama : for me, that’s a huge time saving.

How to process these in batch? Pixelcount of jpg boils down to 2:1 for width:height, crop to square from left edge, save as left pic, then crop from right edge and save as right pic, feed both halves to perhaps Hugin rather than Ms ICE.

Can this be implemented? Undoubtedly. Will it be? Intend to start uploading, perhaps as a separate user for only gear 360 pics, and see whether it makes sense for Mapillary to implement.

Looking forward,


#18

@koninklijke I found this script to make that on hugin, but I don’t know if it works:
https://github.com/ultramango/gear360pano/tree/6eddbccb85e39f3a995df1c8fa1db2a9ba6f9981


#19

OK, this thread is old, but I want to ask if someone have news or found a way to take interval-photos with 30M (8K). It’s unbelievable. The camera is more than two years old, but there is no other camera (less than 500€) to take videos or photos with 30M (8K)

I (for me) decompiled the streetview apk, to check if I can change something, that the pictures be stored on sdcard, but it is too complicated for me to understand the code.

The StreetView-App have all we need:

  • Connect to camera
  • Take a photo every few secounds (

So there MUST be a way to trigger a photo without pushing the record-button.

It’s hard to learn, that there is nothing we can do or there is nobody who can help us, to create a simple function "take a photo every few secounds).

Is there no way to “extract” the function of the StreetView-App and create an own App or to extract the pictures out of the StreetView-App?


#20

I am still interested as well.

Someone found a way to get a shell on a Gear 360 (2017) - see https://github.com/ottokiksmaler/gear360_modding/tree/master

Perhaps this is a starting point for the 2016 version of the camera as well?
With shell access there should be a way to take pictures at regular intervals.

I believe the Streetview App uses the (somewhat buggy) Spherical Camera API where the camera does the stitching which means it’s too slow. The camera can take pictures a lot faster.