Displaying images and overlaying regions

Displaying an image

Default display of an Exposure object

The image() method of your display is used to display Exposures, MaskedImages and Images from the stack. Assuming that your session includes an Exposure named calexp:

display1.image(calexp)

Mask display and manipulation

If the data object passed to image() contains masks, these will automatically be overlaid on the image. A layer control icon at the top of the browser window can be used to turn mask layers on and off.

The display1.setMaskPlaneColor() and display1.setMaskTransparency() methods can be used to programmatically change the mask display. display1.setMaskPlaneColor() must be used before the image is displayed, while the transparency may be changed at any time.

display1.setMaskPlaneColor('DETECTED', afwDisplay.GREEN)
display1.setMaskTransparency(30)
display1.image(calexp)

Rescale or restretch the image pixels display

You can rescale or restretch the display of the image pixels wit the scale method.

display1.scale('log', -1, 10, 'sigma')
display1.scale('asinh', 'zscale')

These settings are “sticky”, in the sense that they can be commanded before an image is displayed, and they will apply to subsequent image displays on that Display object.

Zooming and panning

Use the pan method with pixel coordinates to center the image at a new location. The zoom method can zoom and pan at the same time.

display1.pan(1064, 890)
display1.zoom(4)
display1.zoom(2, 500, 800)

These settings are also “sticky” – they can be issued before an image is displayed.

Overlay regions

Firefly support for overlaying regions enables symbols and lines to drawn over an image.

When drawing many items it is best to use display1.Buffering to send them to Firefly in one batch. A good example is drawing circles at the source positions.

with display1.Buffering():
    for record in src:
        display1.dot('o', record.getX(), record.getY(), size=20, ctype='orange')

You can draw lines, optionally with symbols. Here is how to draw a square.

display1.line([[100,100], [100,200], [200,200], [200,100], [100,100]], ctype='blue')

Erase the regions while leaving the image and masks displayed.

display1.erase()