Quality, quality, quality! Here’s a first public beta of Autopano Pro and Autopano Giga 3.5 panorama software, which mainly focuses on the quality of the stitching.
Our main goal is to make Autopano work better out of the box, on more cases than before.
If you are a version 3.x user, you can use your registration code in Autopano Pro/Giga 3.5 to unlock the demo mode. Following Kolor Update Policy, 3.5 update will be free for all version 3.x users.
If you’re using Livepano in Panotour Pro 2, you need to keep using version 3.0.x of Autopano Pro / Autopano Giga. You may however try version 3.5 as it will install besides version 3.0.x.
Video preview: Autopano Pro / Autopano Giga 3.5
[iframe width="615" height="376" src="http://www.youtube.com/embed/37dJyfUkYmo?rel=0" frameborder="0" allowfullscreen]
Comments and change log
We’re improving many parts of the application. Here’s a shortlist of what you can expect from version 3.5.
Today, we’re launching our new generation of stitching engine with this first beta of branch 3.5. This Autopano engine has several improvements behind the scene and you won’t see much changes visually in the editor or anywhere in the tool. But you should see the difference in the stitching quality in the produced panoramas.
Let me highlight all aspects of this new engine generation.
New Detection and validation engine
To be able to get a perfect stitch, we need to detect and validate controls points on all images you put in the software. This analysis has to be done cleverly and fast as you don’t want to wait too much. So we worked a lot on detection algorithms.
- Automatic detection settings. To raise the quality, we decided to make some decision automatic rather than manual as before. For example, on quality detection. In v3.0, the quality of detection was a user decision, but now, it is automatic ( or still manual if you decide it ). The automatic mode is better as according to the number of images, focal, exif or not, we can decide for you the right setting for the best result. You should not have to care about these settings anymore. If you still want to manipulate them, just go ahead, there are still there, but the default mode is now automatic.
- Ransac improvements. This algorithm validates control points on images. It has been improved with new models so that the control points produced are now more widely spread over the overlapping zone. The whole system has also been improved to get more and better control points.
- Multiple lens type stitching. We improved the way to detect and validate control points in several cases. And now, it even works when mixing several lens types ( fisheye with rectilinear ). This is a new an unique feature that has never been seen before.
New Optimizer Engine – Easy and important topics
This might be the most visible change in this autopano release. You’ll see several new tabs when entering the control point editor. At the same time, with the improvements made, you’ll probably need to go in the control points editor less than before.
What has been done in the optimizer in Autopano Engine v3.5?
- Lines should be aligned. The whole system has been rebuild to be faster while being more accurate. The main goal was to get you the perfect stitch automatically. It forced us to study several topics like optimizer convergence, lens distortion estimation, focal estimation, sensor and lens alignment, viewpoint correction, etc. The whole optimizer has been fine-tunned to get you that goal in most cases. You should see that with your own images if you render them at 100%. If
not perfectly aligned, then there is a reason behind. We found out that several cases we had that we believe were perfectly shoot were not. This new version highlights nicely any small parallax issue in the editor. But thanks to anti-ghost rendering engine, you cannot see them in the produced panorama.
- RMS values. This value is the standard way to measure if a panorama is well stitched or not. Or you’ll probably see that values of RMS in version 3.5 haven’t really changed whereas the quality has increased a lot ( if you compare visually both 100% rendering from 3.0 and 3.5 ). This is normal as we changed the way RMS is measured. So RMS=4.0 in version 3.5 is better than in version 3.0. Nevertheless, there are quite comparable, but if you found higher RMS panoramas now, don’t assume the panorama is worth. Most of the time it is better.
- Control point location. As this version also have a new detection engine, the optimizer has been improved so there are more control point at the end and on the whole overlapping zone. It is important to keep that aspect of full coverage of the overlapping zone. It is only this way that you get the best stitch. If you compare control point location between 3.0 and 3.5, you’ll see that in the overlapping zones, the area covered by all control points is far larger in 3.5.
- Viewpoint correction. This feature has always been a good feature in Autopano Giga. But we lacked the way to enable it only on some images and not on all of them. This has been done and it is easily accessible through a right click on an image, enable viewpoint correction on that image. This is nice to patch quickly the nadir using oblique shooting.
- 1000mm focal length tip. You have a flat scanner and a big document. Several scans that you need to stitch together. In the 3.0 version, the tip was to set focal length to a high value (1000mm). It is not needed anymore. This case works automatically now.
- Parallax error handling. As everything has evolved in the engine, the response of autopano v3.5 in presence of big parallax error cases is different. It tends now to behave more robustly according to common sense: align objects that are far nicely but because of that, it raises parallax errors in near objects. With previous version, it was more balanced, some parallax issues far away and some parallax issues on close objects. We don’t know if it is better or not yet. Feedback is welcomed on that aspect.
New Optimizer Engine – Advanced topics
For the clarity of explanation, we regrouped here the advanced topics. You can skip this paragraph if you don’t care about the technical parts.
- Unknown scope notion. When stitching several images together, one important aspect is to find out what are the unknowns of that problem. For example, a standard VR shooting composed of 6 fisheye images on the horizon, 1 for the zenith and 1 for the nadir, the unknowns will be the focal length, distortion, offsets and that’s it. Focal / Distortions / Offsets will be common to all images (you don’t change the lens or camera between shots). The unknowns will be
calculated once for the whole panorama, and cannot be different for each individual image. This new notion is essential. It helps to stitch several cases that were complicated before.
So now, with this new engine, each unknown has a scope. Is this a global unknown, a group unknown, or an image unknown ? The previous example of a standard VR shooting, the scope of all unknowns (the focal length, distortion, offset) is the panorama as you didn’t change the lens between shots.
Let’s now analyse the case of a GoPro rig ( 6 different GoPro in wide mode to cover the full sphere ). In this case, the scope of focal length and distortion is still panorama and it makes sense. All GoPro have exactly the same lens with the same distortion. There is probably a small difference due to manufacturing but too small to be noticeable. But the scope of the offsets should be image as this value represents the way the lens is centered on the sensor. But in real world, there is no way to get pixel accurate during manufacturing for centring a lens on the sensor. With GoPro rigs, all unknowns have panorama as a scope except offsets which should be optimized with image scope.
- Optimization Groups in Layer Editor UI. To be able to understand the above scope notion, if you open the control point editor, we change the layer editor to Optimization Group, which is a representation of that is happening on unknowns. In this 2D view, you can understand visually the scope of each unknown and their value. We outline in the same color the unknowns which are optimized together and in several colours the one’s that are per image. Warning: You should not misread this optimization group with the old layer editor.
- Automatic unknowns grouping. With the scope notion, we found out that making the groups for you is important, as it raises the quality of stitching if these groups are cleverly made. The regroupement will be done depending on focal length, lens type, presence of EXIF or not. Below some sample cases and grouping scheme:
- Multiple focal length stitching. You want to shoot a mountain in gigapixels (200mm for example), but don’t want to cover the full sky with a lot of blue image. Just shot the sky in 50mm and everything else with 200mm. For the optimizer, you’ll see appearing focal groups (2 here, one with focal 50mm and one with focal 200mm ) where the unknowns have been regrouped logically and you’ll see that visually in the Optimization Groups.
- LivePano stitching. Automatic grouping helps also a lot on this case, as when switching from still image to video in a camera does changes several aspects in stitching ( focal length, distortion, etc ). In this case also, you’ll see 2 groups appearing, one for each fisheye focal length.
- Offset and distortion. In previous engine, these notions were merged. Or in the real world, it is not (the previous example of GoPro rig clearly explains why). With this new engine, you have a scope for offset which is not merged with distortion. It happens than we found out why some panoramas were not stitchable. When you shoot nadir or zenith, the mercury sensor can decide to turn image left or right. Autopano is aware of that already and do the right job. But if you did HDR before autopano, that information can be lost during that process. Enabling image scope on offsets allows you to stitch these panoramas perfectly. You can see that offsets calculated are just the opposite of all others on images suffering of that rotation.
There are also some other new features in this release. Let me highlights some of them:
- ISO cutting mode. In autopano 3.0, you have the anti-ghost algorithm that finds for you the right zones where to cut between images. This algorithm works by analysing the content so that you don’t have any ghost in produced panorama. This mode is still here and it has been renamed "smart". With the new engine, you also have a second cutting mode called ISO. This mode doesn’t analyses content anymore. The cutting zone is fully determined by 2 aspects :
It tries to keep pixels which are close to centre of images. It tries to keep pixel around green pins and remove pixels around red pins. If you compare that mode with a real masking solution, it is really the same but automatic according to pins. If you have banding issue in the sky with the smart mode, try this one, it will be better while keeping a sharp output.
Note: this mode is really efficient when you need to stitch video and that was the main goal for developing it. Nevertheless, it appears to be really nice on image also and not only for video.
- GPano XMP support. Yes, we support these metadata’s now in the generated panorama as soon as you have an image format that supports XMP (jpeg or tiff currently). We support orientation and field of view for full or partial panoramas.
- Fisheye projection mode. A new projection is available in the projection modes. It is a pure fisheye projection on which you can adjust the field of view. It is nice to have to generate fisheye image that can be stitched again.
- .pano format in full XML. The project file has evolved a lot during the engine revamp and we now have a full XML file format which is more easy to manage over version release. So you won’t be able to reopen 3.5 .pano file with older version. If you need to do that, we added a ‘save as old .pano’ export so you can convert this .pano XML format to an old one. Of course, some aspects cannot be transfered like many parts in the optimizer settings which are totally new.
- Compatibility with Panotour v2.0. As the .pano file format has evolved, for the moment, 3.5 generated .pano cannot be used in the Livepano plugin of Panotour / Panotour Pro v2.0. We’ll add the support of the new .pano file format in Panotour v2.1. The current Livepano plugin should be used in conjunction with Autopano Pro / Giga v3.0 only.
We are actively working on both pieces of software: Autopano Pro/Giga as well as Autopano Video. And this release is the first release to be in sync for both software ranges. It may become the standard way to do so.
We think that we reached a stable enough stage to make that release public in beta. We hope that the global stability is satisfying which should lead to a short beta stage.
Fixes since 3.0.8:
- 0001847: [translation] Integrated translation es, it,de, pl, pt, tr, nb, ru from APG 126.96.36.1990_2013-02-28
– 0001246: [Neurone ( optimisation )] Optimizer fallback system to prevent wrong value in first optimization
– 0003142: [Crash Dump] Crash lors de la fermeture de Autopano sur Mac uniquement
– 0003143: [Qt] Lipo 32/64bits install Mac
– 0003084: [Kernel] crop area reading
– 0001805: [Crash Dump] KCacheDiskManager::getUniqueFilename crashing
– 0001827: [Import plugins] Rethink optimization preset (Do not set gigapixel preset for papywizard import when < 100 images)
– 0002385: [Neurone ( optimisation )] Gigapan and papywizard optimization issue
– 0002502: [Cortex ( rendu )] remove sky blending default in multiband
– 0002733: [Image I/O] Updated cameras.txt & lensid.txt
– 0002798: [Synapse ( detection )] Homography versus similarity on short rectilinear lenses
– 0002806: [Performance] .pano in true xml format
– 0002871: [UI behaviour] Wrong preview green area rectangle (triangle)
– 0000766: [Neurone ( optimisation )] Automatic grouping of unknown depending on EXIF / Image Size / Fisheye offset measurement
– 0000916: [Synapse ( detection )] Improvement in Ransac model selection
– 0001088: [Synapse ( detection )] Some fisheye test case are not directly perfect stitched
– 0001346: [Neurone ( optimisation )] Multiple viewpoint on a single image
– 0001632: [Synapse ( detection )] Control point are not enough spread in fisheye image corners
– 0001652: [Crash Dump] Crash during detection (Bad index when preparing linked list)
– 0001819: [Neurone ( optimisation )] Focal estimation which is too far from real value
– 0001838: [Crash Dump] link editor after cancelling saving
– 0001908: [Crash Dump] Crash when using vertical lines tool
– 0002185: [Crash Dump] Wrong index when removing too small lines in WHVerticalLine
– 0002223: [Synapse ( detection )] Stitching of some images fails in 32 bits and not in 64 bits with the new RANSAC
– 0002251: [Neurone ( optimisation )] Why optimization didn’t work when focal different
– 0002265: [Synapse ( detection )] Group by Camera, lensID
– 0002278: [Shell Integration] Fresh install, detect German on an English OS
– 0002300: [Cortex ( rendu )] fisheye projection support
– 0002312: [Cortex ( rendu )] Recomputed focal length when rendering the panorama
– 0002315: [Image I/O] Integration of latest cameras.Txt / lensid
– 0002329: [Editor] Little planet projection issue GPU and CPU
– 0002333: [Image I/O] Update cameras.txt & lensid
– 0002352: [Editor] Global or local optimization doesn’t set up the sticky bit (panorama has been modified)
– 0002384: [Neurone ( optimisation )] multiple focal length / lens type optimization
– 0002386: [Cortex ( rendu )] Patch solution
– 0002423: [UI behaviour] copy camera location does not copy 3D homography
– 0002443: [Synapse ( detection )] Auto ransac model
– 0002471: [Crash Dump] Unhandled exception when loading image in OpenLens plugin
– 0002479: [Crash Dump] Unhandled exception during neutralhazer
– 0002481: [Crash Dump] Invalid parameter to OpenLens SetImage
– 0002482: [Crash Dump] Invalid pointer during dark channel computation
– 0002487: [Crash Dump] Unhandled exception when picture not found in CircularCrop
– 0002495: [Synapse ( detection )] Rotation2 improvement
– 0002531: [Editor] KImage::ToQPixmap crashes under low memory situations
– 0002552: [Neurone ( optimisation )] optimize select / unselected
– 0002671: [Crash Dump] Null pointer not handled in KGLTexMgr
– 0002695: [Shell Integration] Reload pano when called from command line if pano already loaded
– 0002712: [Import plugins] Papyzard Step_P feedback
– 0002713: [Import plugins] Improve lens type import in VRdirve and Papywizard plugins
– 0002864: [Crash Dump] Stack overflow in SIFT
– 0002985: [Editor] Image switch with mouse wheel in links editor
– 0001633: [Image I/O] Google Panorama XMP Metadata support