MiSphere Converter for Android

What is MiSphere Converter?

MiSphere Converter is an Android/iOS app to stitch images captured by Xiaomi Mijia Mi Sphere 360 or Madventure 360.

What's the difference from official app?

Supported format

    • Not only JPG straight out of camera, JPG edited with other apps is also supported.
    • 24/48bit Lossless format: PNG, TIF* *input only.
    • DNG straight out of camera is also supported (beta). See "DNG support" section.

*Image size must be 6912x3456.

Leveling with manual fine-tuning

corrects residual leveling error (wavy lines) caused by the limitation of sensor accuracy.

Left: auto-leveling only, Right: after fine-tuning

You can also shift horizontal center as well

The largest windows is set to center

Advanced image quality

  • adaptive (= distance-aware) stitching to avoid texture duplication
  • adaptive color blending for seamless texture
  • purple fringe noise reduction (JPG or 24bit PNG/TIF only)

Adaptive stitching

Adaptive color blending

Purple fringe reduction

How to use

1. Copy unstitched images to your phone

The unstitched image is stored in the camera, but you cannot download it via the official app (it automatically stitches when downloaded).

There are couple of solutions to download:

a) Copy to PC, then transfer to phone (most solid solution)

b) Use USB-OTG cable (make sure that your phone supports OTG)

c) using MiSphere Transfer (alpha ver. may not work on some phones)

2. Stitching

1. Open the unstitched image on your gallery app (Quickpic & Google Photos are recommended)

2. Send it to this app via share menu (normally the icon with connected 3 dots)

3. Image is automatically converted to equirectangular format and leveled based on exif data.

4. (optional) You can manually fine-tune until it's perfectly leveled. Horizontal center can be also changed.

5. Hit the save icon then stitched image is saved in /MiSphereConverter folder. It takes ~20 sec on decent phone.

3. Lens calibration (1st time only)

Probably you've got terrible stitching result. For best stitching, lens calibration is needed for each camera. Seeing is believing. Please refer to this great tutorial video. (Thanks Janis)

4. Batch processing

If you select multiple images on your gallery app and send to this app, all images are automatically stitched w/o interruption. There are three available options:

  • Normal Mode: Each image is processed individually. (normally use this mode)
  • Static Mode: No leveling applied. Keep the camera perfectly upright, or manually level later. (e.g. for multiple set of images for HDR)
  • Anchor Mode: You can level the first image only. Then exactly the same leveling parameter is applied to all remaining images. (e.g. for time-lapse, single set of images for HDR ).

DNG support (beta)

DNG file is supported from ver 1.9.0. If input is DNG file, stitched result is also saved as DNG.

DNG file handling

As many gallery apps cannot handle DNG file correctly, ES file explorer is highly recommended to share images to this app.

Preview image looks yellowish since it shows raw RGB value directly. Don't worry, the output file has correct color.

Quality Benchmark

Since there are few solutions for DNG stitching, I compared the quality with an official stitcher for MacOS (link). Here is my observations.

  • Better stitching: Same with the case of JPG stitching. No need to discuss here.
  • Better gradation: Although the original DNG file has 14bits per channel, official stitcher seems not handling it. You can easily find false contour especially in darker area. MiSphere Converter is designed to maintain all bits. The following 1st one is official stitcher, and 2nd one is MiSphere Converter.

false contour caused by Official stitcher

MiSphere Converter

  • Higher resolution: Output of official stitcher is mosaiced, which means it has only 1 channel per pixel. Output of MiSphere Converter is demosaiced and has all 3 channels per pixel.
  • Larger file size: This is the downside of MiShere Converter. Since output is demosaiced, file size is x3 larger than the official one.
  • Better color representation: MiSphere Converter fixes the flat color issue of input DNG file, by injecting proper color matrix. The original matrix is far from actual matrix (just using XYZ-to-sRGB matrix). The following images shows the example of original DNG vs DNG with proper color matrix. This allows you to minimize retouch work after stitching.

default color matrix causes flat color issue.

better color is given by proper color matrix.

FAQ

Q: Stitching result is always terrible. I'm ripped off.

Yes, this is the toughest part if you have never used any stitching tools (e.g. Ptgui, hugin). There are two suggestions.

  1. Please check your calibration image. Good / bad example is available in the app instruction.
  2. Find corresponding points carefully. You might be selecting different objects, but looks similar.

If you still couldn't get good results, please contact me (mail). That's the fastest.

Q: It says "This image is not supported"

Make sure the image has correct resolution (6912x3456), and format (JPG/PNG/TIF, or non edited DNG). Some of your apps may automatically convert to unsupported one (e.g. GooglePhotos backup).

Q: Can I use protector?

No. Since this app uses entire image circle, narrowing FOV will cause significant stitching error.

Q: Auto-leveling is not working on TIF/PNG input.

Unfortunately metadata is not supported on PNG/TIF input.

Q: Why PNG output doesn't have metadata

Sorry, metadata is not supported on PNG output as well.

Q: Bracketed images (e.g. for HDR stacking, time-lapse) are slightly off each other, why?

Due to sensor noise, each image has slightly different pose parameter. Please use" anchor" batch mode to apply same pose parameter to all images.

Q: Supports two or more cameras?

The app itself doesn't support it, but /MiSphereConverter/calib_param.txt is the lens calibration file for your camera. You can save/restore it anytime to switch between each camera.

Q: Android tablet or chromebook supported?

Tablet is supported. Chromebook is not officially, but just let me note that some users are using on it.

Tips

Stitching after editing to reduce seam

Overall, "stitching after editing" gives better result because "editing after stitching" tends to cause hard seam issue. However you may still see soft seam issue in "stitching after editing" if you modified image drastically (e.g. HDR-effect).

If you want to make it perfectly seamless, please consider using orthogonal mode in another app named "edit360".

Template stitching for extreme cases

Although adaptive geometry stitching gives you the best performance in many situations, it's not perfect in some extreme conditions. Of course it's not hard for you to avoid such condition, but if you prefer template stitching like official app, please use "stitching distance" in settings. Unlike official app, you can manually select from [1~2m] [2~3m] [5m~] ([auto] is adaptive geometry stitching).

Let me note that this mode is only for advanced users. For general purpose, strongly recommend keep using [auto] mode.

License

By downloading, copying, installing or using the software you agree to this license. If you do not agree to this license, do not download, install, copy or use the software.


License Agreement

For Open Source Computer Vision Library

(3-clause BSD License)

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:


Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Neither the names of the copyright holders nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission.

This software is provided by the copyright holders and contributors “as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall copyright holders or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.