A school of blackbirds

One of my favorite  sights is the crazy blackbird flight school offered each Spring as hundreds or thousands of birds launch into flight together, wheeling and turning in unison.  We have a very healthy stand of bamboo grown from a few starts given to us 20 odd years ago by our friend Joe.  That little patch has grown into a dense grove that now provides shelter for hundreds of birds all winter.

frosty bambooHopefully the bamboo has survived this particularly brutal winter.  As Spring approaches, the bamboo residents are becoming more and more noisy.  At night I think there’s a windstorm raging and realize it’s the birds rolling over in their sleep in unison. In the morning and evening they put on an airshow going about their business.  I believe these are mostly red wing blackbirds, since I hear their territory calls coming from the bamboo, but apparently flocks often contain starlings and other blackbirds as well.

There are two groups to begin with; they seem to coalesce into one, but then split again, with one group settling into roost.  It would be interesting to know, but I can’t tell from the video,  if the  group that peals off to roost first is made largely of members of one of the two original groups.

Flocking is mesmerizing to watch.. It was modeled in a classic artificial life routine called Boids by Craig Reynolds.  His flocking model defines only 3 steering behaviors:  “Separation –  steer to avoid crowding local flockmates; alignment – steer towards the average heading of local flockmates; and cohesion – steer to move toward the average position of local flockmates.. … Flocking is a particularly evocative example of emergence: where complex global behavior can arise from the interaction of simple local rules.”

Pixinsight workflow for annotation

Since I’ve been using the Takahashi FSQ106-ED with the STL11000, I’m getting wide field images, about 3.9 x 2.7 degrees.  So the fields contain numerous cataloged objects that would be nice to identify.

Pixinsight offers a workflow to “solve” the image which provides accurate WCS coordinates that are added to the FITS header; and an annotation script that overlays  grid, constellation boundaries, and objects from several catalogs.

Sagitarius region

A wide field shot made with Canon 60Da and 28mm lens, about 45 x 30 degrees. Annotated in Pixinsight. 15 minute total exposure at Rancho Hidalgo, New Mexico.

For narrow field images, the ImageSolver script should work, but it fails pretty regularly on my STL11K pix and really fails on wide field shots made with the Canon 60Da with wide lenses like the one above.  Located in the Scripts | Image Analysis menu, the script panel asks for the center coordinates of the image, with a search function so you can choose a known object in the active image.  If the script fails, as is likely with wide field images, it is still useful to improve the accuracy of the ManualImageSolver script.  To use the ManualImageSolver script is not straight-forward, but it does work pretty well.  It’s not straight forward, because, before running it, you need to use the CatalogStarGenerator script to build a synthetic star field image; then use the DynamicAlignment process to manually match stars in the reference image (the synthetic catalog star image) to the target image (your astrophoto).  After saving the instance of DynamicAlignment to the workspace, you can run the ManualImageSolver script to provide WCS coordinates to the target image’s FITS header.  Honestly, you have to really want it.

Here are more details.  Open the target image, the image to be solved.  It must be FITS format, because the FITS header is where the WCS coordinates will live.  Locate a named object near the center of the image, you will use it the generate a CatalogStar image. I used M8 (Lagoon nebula) in the example. CatalogStarGenerator PanelRun the CatalogStarGenerator  located in the Script | Render menu).  Search for your chosen reference object, which will populate the coordinates fields.  Fill in the Dimensions field (from your target image) and provide the Image Scale info.  In the Stars panel, choose a catalog, probably the Bright Star catalog. The PPMC catalog is more comprehensive, but is too big for to be practical for wide field images Click OK to run the script, and it will build a reference image of the field. I use the STF panel (‘screen Transfer Function) to adjust the screen stretch so the stars are more easily seen.
Once you have a reference image you’re happy with, you align your target image with it using the

Synthetic star field

Synthetic star field made with CatalogStarGenerator.

DynamicAlignment process (located in Process | Image Registration menu).  When the process panel opens,  click the reference image (the synthetic star field); this defines the reference image for the process.  Then click the target image (your astrophoto).  Now click a star in the reference image that is obvious in the target.  This will place an X in the target that you will drag to the corresponding star.  The first few alignment points can be surprisingly painful, but once 2 or 3 points are correct, the rest are (usually) placed pretty accurately.  However, you MUST check each point since there is generally some distortion  in the field.


Screen shot of DynamicAlignment showing first alignment point.

The other pain point is that for best results, you really need 40 or so points spread over the target. (A shortcut is to use 4 or 5 alignment points and then run ManualImageSolver  followed by ImageSolver, which should run happily and produce a pretty good result.)  Ok, so you when you have enough alignment points, drag an instance of the DynamicAlignment to the workspace.  The instance is represented by the little triangle at the lower left of the process window; when you drag it to the workspace it creates a savable icon with all the details of the alignment session.  You need that when you begin ManualImageSolver. located in Script | Image Analysis menu.

ManualImageSolver script panel.

Manual Image Solver script panel.

Select your DynamicAlignment instance with the Control Points icon, and the catalog star reference image as the Reference Image.  You can improve accuracy by raising the Polynomial degree to higher numbers.  The residuals image provides an accuracy check; the distortion map shows optical distortion, and the distortion model provides a way of modeling the system to simplify solving other images with the same optical setup.  Anyway, now that you have manually solved the image, a set of WCS coordinates have been inserted into the FITS header.  And you can run the AnnotateImage script in the Script | Render menu.

Annotate Image script panel.

Annotate Image script panel.

The script panel provides an essential preview tool which lets you play with settings without rendering the whole image.  You will want to try different settings on labels and markers, but a tip is to use the Graphics Scale slider at the bottom to change everything at once.  You can render to a new annotated image, or a transparent overlay.  There are issues with label crowding, and it is easier to edit an overlay than the rendered image.  It’s still not easy.  You could render the grid and the labels into separate overlays which would make the text labels easier to work with.  I guess I prefer the transparent overlays, and accept that labels will be crammed together.  When you have your overlay, you can apply it with PixelMath.

PixelMath setup to add overlay to background image. I guess I normally would check  "generate new image" instead of "replace image".

PixelMath setup to add overlay to background image. I guess I normally would check “generate new image” instead of “replace image”.

All you need to do is add the overlay image to the background image.  Use the Expression Editor to select images from the workspace.  Here’s a detail of the result. detail_sag_annoteation

Accuracy is pretty good. I fear the label crowding is inevitable with this wide of a field.  Manual Image Solver is one of the tools in Pixinsight that is actually really well documented, as is Image Solver.  For the straight poop see http://pixinsight.com/doc/scripts/ManualImageSolver/ManualImageSolver.html