I can sure answer the first question, in fact the real question here. I worked a while ago on the stitching, and I can tell you that all the answers can be found directly in the code -- I won't blame you, it takes some time to find all the info.
Let's start by the fundamentals about the 3 first ones, dealing about resolution. Stithcing in OpenCV is quite slow, as you may have read across the net. To speed up the computation, OpenCV enables you to choose a different scaling from the original resolution of the input images. Detecting all features in a 1MPixel image is 4 times faster than detecting all features in a 4MPixel image, easy to understand.
So, for the first 3 parameters, you can change the resolution of the image only for one computation phase: setRegistrationResol
changes the computation resolution of the registration phase, and so on. One key fact about the value itself is that it's in megapixels. Why is it so? Because OpenCV is deeply oriented towards "real-time" applications, so the developers try to use parameters to bound the maximal computation time. That's why the parameter itself is not in percentage of the input size, else it would depend on the input size.
Concerning the last one, I'm less confident about my answer. I think that parameter is related to the matching itself. During the matching phase, you need to find what are the matching relations between all images, or what image is matching with what images. During this computation, you can discard images which do not match with sufficient confidence with any other image, and I think this is the purpose of setPanoConfidenceThresh
: set the confidence of accepting the image as part of the panorama.
For more information, start reading the code from the fantastic example in the source code of OpenCV, at [...]\samples\cpp\stitching_detailed.cpp
. I remember that the complete workflow is exposed there.