I'm trying to process a project that has both RGB and multispectral imagery. The cameras were flown simultaneously, so there is complete overlap in their coverage. The RGB camera is a DJI Zenmuse X3 and the multispectral camera is a Micasense RedEdge3, both of which are in the Pix4D database. There's lots of front and side overlap (90% / 90% measured 100m below the X3 lens, and I flew at 120m so slightly higher than 90% ground overlap for the X3), and so I'm interested in dialing in the processing parameters. I've successfully processed many RGB projects, and am now looking to integrate the multispectral data that I have by setting up the right Pix4D workflow.
I'm having trouble with the proper order of events in the workflow to ensure the finished product has a single block. The short version is that I can get a single block from each camera rig separately (one block for the RGB camera and one block for the multispectral camera) by customizing the keypoints image scale during Step 1, and I can get a single block when merging the projects by using manual tie points, but I get two blocks returned in the finished product after uploading the project to the cloud for processing of Steps 2 and 3. It seems that Step 1 is redone in the cloud using one keypoints image scale for the whole project, and the different values of this parameter that I found for the different camera rigs to ensure a single block output are ignored.
What step am I missing to ensure that the correct keypoints image scale parameter for each camera rig is used when proceeding to Steps 2 and 3 of a merged project?
Thanks for your help!
I've been following the excellent tutorial on processing imagery with different spectral signatures. I've also been following the other excellent tutorial on merging projects. I'm using a hybrid Desktop/Cloud workflow which I'll describe in case it's helpful to other folks:
1) Give all images a unique name (the X3 and RedEdge keep images with the same name distinct by putting them in different folders, so I turn the folder structure into part of the file name. E.g., 0000SET/000/IMG_0001_1.tif becomes 0000SET_000_IMG_0001_1.tif)
2) Subset the images to just the ones taken over the survey area (remove images taken while the drone is taking off or travelling to the survey area but not yet over the survey area. I do this by extracting the latitude/longitude and altitude from the EXIF metadata in each photo and removing photos that are outside the bounds of the survey area or photos that are taken while the aircraft is not at survey altitude-- I use a bit of a buffer and include all photos where the aircraft is >100m above ground level. I do this step programmatically in R).
3) Start a new Pix4D project for just the RGB images. Only perform Step 1, and find parameters such that a single image block is returned.
4) Start a second new Pix4D project for just the multispectral images. *Make sure to add the calibration panel images to the project*. Only perform Step 1, and find parameters such that a single image block is returned.
Note: If you don't add the calibration panel images to the project, you are still able to incorporate the radiometric correction by pointing the Step 3 processing option for calibration to wherever those photos live on your computer. BUT, if those photos aren't *added as part of the project*, then they won't be uploaded to Pix4D Cloud should you decide to use cloud processing. All the rest of your photos will upload, and then the project will break as soon as it starts on Pix4D Cloud. Since you can't add photos to a project after it has been created, this breakage means you have to start all over creating a new mulitspectral project, merging it, reoptimizing it, and uploading it.
5) Start a third new Pix4D project and check the box indicating that this new project will be a merge of other projects. Select the RGB and multispectral projects as the ones to merge.
Note: there's a dialog box that pops up saying that some objects have identical names in the projects and should Pix4D treat them as the same object. There aren't any identically named objects (like tie points or ground control points) in my projects, so I'm not sure what this is referring to. I've just been clicking "yes, treat them as identical"
Note 2: There's also 3 dialog boxes that come up (one for each processing Step) saying that the processing parameters for each Step are different between the two projects. I know this is true (and part of the benefit of the merging workflow), so I've just been clicking "Okay".
6) Once the merge is complete, I follow the tutorial to mark several (3 to 4) manual tie points using the rayCloud. I ensure that I mark photos for each manual tie point that are in the RGB group and that are in the multispectral group. I've been marking between 20 and 40 photos per manual tie point.
Note: For me, unlike what is described in the tutorial, the green cross never matches up to the same point across all the images. Instead, the green cross matches nicely to *either* the RGB set of photos OR the multispectral set of photos. The green cross is in the vicinity, but doesn't overlap with, the points I've marked as manual tie points on the *other* set of photos. This seems to be fine, and perhaps expected, given that the whole point is to tie together image blocks that are offset from each other.
7) After marking manual tie points, I export them to a file in case I need them again and click Process > Reoptimize
8) A quality report isn't automatically generated after reoptimizing, so I click Process > Generate Quality Report so that I have a report that reflects the effort to tie the image blocks together.
9) I look at the quality report to ensure a single block results from the reoptimization step.
10) If one block is generated, I open up the Processing Options, keep the Step 1 parameters the same, and change the Steps 2 and 3 parameters to my liking. I want to generate a point cloud and a reflectance map and use the calibration photos for the index, so I fill in those parameters. I uncheck the Step 1 box, and check the boxes for Steps 2 and 3.
Note: I always leave the Step 1 parameters unchanged. I've found that if I change these parameters, even if the box is unchecked indicating that I don't want to perform the Step 1 processing, then the project thinks I haven't done Step 1 at all, the "Initial Processing" text at the bottom of the Pix4D application window turns red instead of green, and the option to jump right to Steps 2 and 3 become grayed out.
11) I click Project > Upload Project Files and check the box indicating that I want to start cloud processing as soon as the photos are uploaded.
12) When I download the results from the cloud processing, I look at the quality report and find that there are 2 blocks and way fewer "matches per calibrated image" compared to the quality report that I generated after merging the projects, adding manual tie points, and reoptimizing. It appears that Step 1 was redone with a single value for the keypoints image scale (ignoring that I had a different value for this parameter in each of the projects that I merged).
If I manage to get a single image block after the Step 1 procedure and merging subprojects with different spectral signatures, how can I ensure that I get a single block after sending my customized Step 2 and 3 parameters to Pix4D Cloud?