Stitching – A Python package for fast and robust Image Stitching (Panoramas)
github.com
github.com
I found out that the out of the box opencv Stitcher [1] class is perfect for that but nobody seems to have made a GUI out of it.
So, I've spent two days making an extremely simple proof of concept of a Qt Gui [2].
The majority of the time was spent trying to use GitHub Action to automatically build an executable...
If you go see in the release section, there is a tag with a prebuilt binary.
[1]: https://docs.opencv.org/4.x/d8/d19/tutorial_stitcher.html
Anyway in some language ecosystems there are cli tools that make repositories from templates, and a benefit is that it prevents people from forking the template (which is appropriate if you are modifying the template like upgrading dependencies etc, but not if you are just making a new project using it)
https://github.com/labsyspharm/ashlar
It may help to have the microscope stage positions available in the OME metadata.
His setup only has a simple microscope camera that can stream a video to an old windows xp pc with a hardware/software combination...
(four image zip) https://drive.google.com/file/d/1gTZWlKmS4ZtEZDK8OjjLeGN_V0F...
- I'm not even entirely sure how these images would stitch together
- between 1.jpeg and the rest, there is very little overlap. RANSAC likely won't find matchable points.
- you're asking for a pretty severe homography of the scene.
The 1st critical thing you need to know, is that the camera may not move. It may only rotate. If the camera moves a tiny bit, that's generally OK, but there will be stitching artifacts. To be really precise, the entrance pupil of the camera shouldn't move, but this is quite hard to get right.
The 2nd thing, is that the stitching algorithms need to match images to each other, and in order to do this, the images must have large overlapping portions. This usually means that if you want to create a 360 degree panorama where you spin your camera all the way around, you'll have at least about 12 images. The minimum number of images depends on how wide your lens is.
This is a great overview of panoramas: http://6.869.csail.mit.edu/fa17/lecture/lecture14sift_homogr...
One more thing: It really helps to apply lens correction to your camera images, if you're trying to create a high quality panorama.
Then, for every video frame, you could skip the photo angle computation, and just run the imagine stitching logic. The stitching_detail code is very readable, and quite easy to hack for experimentation.
If its meant for photographers to create panoramas, then I think a comparison to: Photoshop, Hugin (or PTGUI for gpu acceleration), and Microsoft ICE would be a good benchmark.
I was working on mobile panorama stitching last year, and one of my datasets had a kitchen wall that was almost purely white, so very little detail for the classic feature algorithms such as SIFT and ORB to cling to. The OpenCV stitching pipeline, which is built on these (and RANSAC), didn't do very well when matching these walls.
But PTGui was amazing on this data - it would find just a tiny number of very high quality feature points to match (eg 3 or 4), and produce a perfect panorama. In addition, it's really fast. I was very impressed.
And compared to the open source darling Hugin it has also a less fussy UI.
If your images are just a random bag of jpegs that came in from the cold, then it's harder for sure.