Panorama help feature

Started by scrax, August 07, 2012, 11:22:55 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

scrax

I'm using ML2.3 for photography with:
EOS 600DML | EOS 400Dplus | EOS 5D MLbeta5- EF 100mm f/2.8 USM Macro  - EF-S 17-85mm f4-5.6 IS USM - EF 70-200mm f/4 L USM - 580EXII - OsX, PS, LR, RawTherapee, LightZone -no video experience-

Greg

This code is for APS-C

int focal = 0;
---------------------------------------------------------------------------------
    {
        .select = menu_open_submenu,
        .name = "Panorama help",
.submenu_width = 700,
        .children =  (struct menu_entry[]) {
    {
                .name = "Focal Length",
.priv = &focal,
.max = 13,
.icon_type = IT_PERCENT,
                .choices = (const char *[]) {"8mm", "10mm","12mm", "14mm", "18mm", "24mm", "35mm", "50mm", "85mm", "100mm", "135mm", "150mm", "180mm", "200mm"},
.help = "Panorama help 8mm - 200mm.",
            },
            {
                .name = "Portrait",
.priv = &focal,
.max = 13,
.icon_type = IT_ACTION,
.choices = (const char *[]) {"Shots 5", "Shots 6", "Shots 7", "Shots 8", "Shots 10", "Shots 14", "Shots 20", "Shots 28", "Shots 48", "Shots 56", "Shots 76", "Shots 84", "Shots 101", "Shots 112"},
.help = "Shots for full 360 panorama.",
            },
    {
                .name = "",
.priv = &focal,
.max = 13,
.icon_type = IT_ACTION,
.choices = (const char *[]) {"Degree 72", "Degree 60","Degree 51.4", "Degree 45", "Degree 36", "Degree 26", "Degree 18", "Degree 12.8", "Degree 7.5", "Degree 6.4", "Degree 4.9", "Degree 4.3", "Degree 3.6", "Degree 3.2"},
.help = "Degree of rotation between shots.",
            },
    {
                .name = "Landscape",
.priv = &focal,
.max = 13,
.icon_type = IT_ACTION,
.choices = (const char *[]) {"Shots 4", "Shots 5", "Shots 5", "Shots 6 ", "Shots 7", "Shots 9", "Shots 13", "Shots 19", "Shots 32", "Shots 37", "Shots 50", "Shots 56", "Shots 67", "Shots 75"},
.help = "Shots for full 360 panorama.",
            },
    {
                .name = "",
.priv = &focal,
.max = 13,
.icon_type = IT_ACTION,
.choices = (const char *[]) {"Degree 90", "Degree 72", "Degree 72", "Degree 60", "Degree 51.4", "Degree 40", "Degree 28", "Degree 19", "Degree 11.2", "Degree 9.7", "Degree 7.2", "Degree 6.4", "Degree 5.4", "Degree 4.8"},
.help = "Degree of rotation between shots.",
            },
            MENU_EOL,
        }
    },


a1ex

Looks good, maybe it can be combined with some ghost image automation to help aligning the shots.

ilguercio

I don't understand your video, greg.
What does your bit of code do?
I mean, does it just compute the FOV for a certain number of shots at XX mm?
Canon EOS 6D, 60D, 50D.
Sigma 70-200 EX OS HSM, Sigma 70-200 Apo EX HSM, Samyang 14 2.8, Samyang 35 1.4, Samyang 85 1.4.
Proud supporter of Magic Lantern.

Greg

My data is from tables panoramas.
This can be counted as:
1000/focal length

example:
1000/14 = 71,43
360/71,43 = 5,04
rounding up(5,04) = 6
360/6 = 60

60 - degree
6 - shots

Data in the tables are optimized for panoramic equipment.
I do not know whether it makes sense to calculate them.

ryebrye

Having been on the receiving end of more than a few overzealous user-feature rants... I apologize in advance if this sounds like a kid on santa's lap... but having ML be able to help with Panos would be an awesome feature.

Combining this with the ghost image would be a killer feature (my old sony point-and-shoot had something sort of like this for panorama help)

Does the 8mm assume fisheye?

Here are a few pain points when doing panoramas that I've found, and if there were any way to automate them in camera that'd be awesome.

1. Picking a good dynamic range for the scene. (The way I do this now is I point at the brightest spot in the scene and meter it and make sure I'm not clipping highlights, then point at the darkest point in the scene and meter to make sure I'm not clipping shadows there - and then I make sure to pick exposure bracketing in a way that both extremes are covered with 3 shots)

2. Waiting for things to stabilize before shooting. (I use a panosaurus, and it has a bit of wobble in it after I rotate it - so I use a cable release now to make sure to trigger it at the right time)

3. Determining the point of least paralax for a lens and verifying it. (The way I do it now is to set my camera on the pano head and have something in the foreground with something else in the background. I'll shoot it in the middle of the frame and then turn the pano head until it's on the edge of the frame and then zoom in to 10x to see if they are the same. I have to jump back and forth between the two images until I get it just right...)

4. Remembering how many shots to take and at what angles for a given lens. (this part you seem to have nailed, although for some lenses there are times you want to switch it up. for the 8mm for instance you can do it in basically two rows - but you either angle up slightly or down slightly first depending upon where you want to have the least stitches. For the 10-22 at 10mm you will really need to shoot multiple rows but you can do it so you have more overlap on the equator in some situations...)

5. Focusing the lens on the hyperfocal distance based on the aperture.

6. Remembering the image that starts / stops a given pano (I sometimes shoot a shot of my hand before shooting one... if I'm doing a bunch of them in short sequence of each other.)

7. Making sure that I'm not in the wrong mode before shooting a pano.

I think many of these pain points can be helped out with software - now that the 7D port seems to be under way, I can try to help lend a hand with some of this coding. (C isn't my normal programming language, but with a bit of brushing up I can do ok in it)

I know some of them are limits on hardware (for instance, auto-focusing the lens on the hyperfocal distance can't really be done for lenses that don't report back the focus distance accurately)

Getting something that auto-lines up the previous image would not only help shoot the panos, it'd be very helpful in adjusting the lens to find the proper least parallax point.

Some of those pain points above could be really simple to adjust (for instance, making the panos have a unique naming sequence when shooting them... or putting them in their own directory)

One thing that would be REALLY interesting to see is if we could output a starting file for PtGui (or Hugin) that describes roughly where each image was taken and put it in the same directory as those images. I know starting with that in PtGui with the images would then make having it find control points and lining things up be very fast. It'd also help with dealing with things like the sky etc which are sometimes a pain to handle. (Not sure how much arbitrary file IO is doable or reasonable in ML)



ilguercio

A1ex, will this thing go in the new release?
I think it's worth having it.
Anyway, i want to post something about panos, this guide is a killer.
http://forum.mflenses.com/new-2012-advanced-guide-to-panorama-stiching-t49676.html
Credits go to user tobbsman, obviously.
Canon EOS 6D, 60D, 50D.
Sigma 70-200 EX OS HSM, Sigma 70-200 Apo EX HSM, Samyang 14 2.8, Samyang 35 1.4, Samyang 85 1.4.
Proud supporter of Magic Lantern.

Greg

I think it was too early to add it to the official version.

ilguercio

Quote from: Greg on October 02, 2012, 02:18:48 AM
I think it was too early to add it to the official version.
It was, now it's about time.
:)
Canon EOS 6D, 60D, 50D.
Sigma 70-200 EX OS HSM, Sigma 70-200 Apo EX HSM, Samyang 14 2.8, Samyang 35 1.4, Samyang 85 1.4.
Proud supporter of Magic Lantern.

nanomad

If you think so then make a pull request on bitbucket (this allow us to properly credit the author)
EOS 1100D | EOS 650 (No, I didn't forget the D) | Ye Olde Canon EF Lenses ('87): 50 f/1.8 - 28 f/2.8 - 70-210 f/4 | EF-S 18-55 f/3.5-5.6 | Metz 36 AF-5

ilguercio

Did you take a look at his implementation? It looks OK to me for a start, once included in ML users could suggest what's missing.
I don't see his code on bitbucket, by the way.
Canon EOS 6D, 60D, 50D.
Sigma 70-200 EX OS HSM, Sigma 70-200 Apo EX HSM, Samyang 14 2.8, Samyang 35 1.4, Samyang 85 1.4.
Proud supporter of Magic Lantern.

ilguercio

News about this?
If Greg feels like it's nice to have his implementation in the source code i guess he's got to say that.
I would appreciate if he posted something.
Canon EOS 6D, 60D, 50D.
Sigma 70-200 EX OS HSM, Sigma 70-200 Apo EX HSM, Samyang 14 2.8, Samyang 35 1.4, Samyang 85 1.4.
Proud supporter of Magic Lantern.

Greg

Recently, I had very little time to develop a panorama help.

The current version looks like this:

ilguercio

Nice, you can add it to the main tree, if you want, i guess it's a nice feature to have. Somedoby will fine tune it, eventually.
;)
Canon EOS 6D, 60D, 50D.
Sigma 70-200 EX OS HSM, Sigma 70-200 Apo EX HSM, Samyang 14 2.8, Samyang 35 1.4, Samyang 85 1.4.
Proud supporter of Magic Lantern.

scrax

I'm agree this with ghost image will be great, and adding just the helper could be a start for other development.
I've asked for something like that some time ago, but was when testing 2.3RC.
So Greg if you have time make a pull request, please.
thanks  :)
I'm using ML2.3 for photography with:
EOS 600DML | EOS 400Dplus | EOS 5D MLbeta5- EF 100mm f/2.8 USM Macro  - EF-S 17-85mm f4-5.6 IS USM - EF 70-200mm f/4 L USM - 580EXII - OsX, PS, LR, RawTherapee, LightZone -no video experience-