Hey everyone,
As you might or might not know, I've released a component called "PicSphere" in the new CyanogenMod camera app Focal. This component is based on PanoTools and Hugin libraries.
I've been mostly hacking around to make it work, and it does work, but there are still a few kinks I need to iron out.
- First, cpfind is just crashing and I cannot get it to work. I don't have the stacktrace anymore, as I ended up using autopano-sift-c for the alignment and cp detection, but I read here and there that cpfind works better (as in, faster) than autopano is most situations.
- Another big problem is that it's slow. Stitching a correct panorama with 640x480 shots takes about a minute, where it takes 3 seconds on my home PC. I know smartphones aren't as powerful as PCs, but going from 3 seconds to 1 minutes is quite a leap (for a quadcore 1.5GHz, 2GB RAM device). Is there any plans for NEON/ARM enhancements, or at least could you give me some pointers on where should I focus optimizing (adding NEON ASM code) to make the whole process faster.
- autopano --align --bottom-is-left --generate-horizon 2 --ransac on --maxmatches 30 --keep-unrefinable off --projection 2,HFOV
- ptclean --- I disabled it, as it seems to hang for panoramas above 180°. I tracked the bug down to some function pointer call that never returns, but didn't go any further.
- autooptimiser -v HFOV -p
- pano_modify -o project.pto --center --canvas=3000x1500
- nona -o project -m TIFF_m
- enblend *.tif
Note: On step 4, I use a fixed 3000x1500 canvas for the simple reason that Google PhotoSphere XMP metadata requires 2:1 ratio pictures. I plan to hack the sources further and enforce a 2:1 ratio after calculating the crop size, to keep the real image size.
autooptimiser alignment also seem to fail if there is any unconnected image.
What do you think of this flow? Could it be better?
My primary concern remains the speed of the rendering, so if anyone would like to help me or take the task, I'd be more than happy.
Thanks for your help!