LSST Applications g02d81e74bb+86cf3d8bc9,g180d380827+7a4e862ed4,g2079a07aa2+86d27d4dc4,g2305ad1205+e1ca1c66fa,g29320951ab+012e1474a1,g295015adf3+341ea1ce94,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g33d1c0ed96+0e5473021a,g3a166c0a6a+0e5473021a,g3ddfee87b4+c429d67c83,g48712c4677+f88676dd22,g487adcacf7+27e1e21933,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+b41db86c35,g5a732f18d5+53520f316c,g64a986408d+86cf3d8bc9,g858d7b2824+86cf3d8bc9,g8a8a8dda67+585e252eca,g99cad8db69+84912a7fdc,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,ga8c6da7877+a2b54eae19,gb0e22166c9+60f28cb32d,gba4ed39666+c2a2e4ac27,gbb8dafda3b+6681f309db,gc120e1dc64+f0fcc2f6d8,gc28159a63d+0e5473021a,gcf0d15dbbd+c429d67c83,gdaeeff99f8+f9a426f77a,ge6526c86ff+0433e6603d,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gff1a9f87cc+86cf3d8bc9,w.2024.17
LSST Data Management Base Package
Loading...
Searching...
No Matches
Functions
lsst.afw.image.utils Namespace Reference

Functions

 clipImage (im, minClip, maxClip)
 
 getProjectionIndices (imageBBox, targetBBox)
 
 projectImage (image, bbox, fill=0)
 

Function Documentation

◆ clipImage()

lsst.afw.image.utils.clipImage ( im,
minClip,
maxClip )
Clip an image to lie between minClip and maxclip (None to ignore)

Definition at line 29 of file utils.py.

29def clipImage(im, minClip, maxClip):
30 """Clip an image to lie between minClip and maxclip (None to ignore)"""
31 if isinstance(im, MaskedImage):
32 mi = im
33 else:
34 mi = makeMaskedImage(im, Mask(im.getDimensions()))
35
36 if minClip is not None:
37 ds = afwDetect.FootprintSet(
38 mi, afwDetect.Threshold(-minClip, afwDetect.Threshold.VALUE, False))
39 afwDetect.setImageFromFootprintList(
40 mi.getImage(), ds.getFootprints(), minClip)
41
42 if maxClip is not None:
43 ds = afwDetect.FootprintSet(mi, afwDetect.Threshold(maxClip))
44 afwDetect.setImageFromFootprintList(
45 mi.getImage(), ds.getFootprints(), maxClip)
46
47

◆ getProjectionIndices()

lsst.afw.image.utils.getProjectionIndices ( imageBBox,
targetBBox )
Get the indices to project an image

Given an image and target bounding box,
calculate the indices needed to appropriately
slice the input image and target image to
project the image to the target.

Parameters
----------
imageBBox: Box2I
    Bounding box of the input image
targetBBox: Box2I
    Bounding box of the target image

Returns
-------
targetSlices: tuple
    Slices of the target image in the form (by, bx), (iy, ix).
imageIndices: tuple
    Slices of the input image in the form (by, bx), (iy, ix).

Definition at line 48 of file utils.py.

48def getProjectionIndices(imageBBox, targetBBox):
49 """Get the indices to project an image
50
51 Given an image and target bounding box,
52 calculate the indices needed to appropriately
53 slice the input image and target image to
54 project the image to the target.
55
56 Parameters
57 ----------
58 imageBBox: Box2I
59 Bounding box of the input image
60 targetBBox: Box2I
61 Bounding box of the target image
62
63 Returns
64 -------
65 targetSlices: tuple
66 Slices of the target image in the form (by, bx), (iy, ix).
67 imageIndices: tuple
68 Slices of the input image in the form (by, bx), (iy, ix).
69 """
70 def getMin(dXmin):
71 """Get minimum indices"""
72 if dXmin < 0:
73 bxStart = -dXmin
74 ixStart = 0
75 else:
76 bxStart = 0
77 ixStart = dXmin
78 return bxStart, ixStart
79
80 def getMax(dXmax):
81 """Get maximum indices"""
82 if dXmax < 0:
83 bxEnd = None
84 ixEnd = dXmax
85 elif dXmax != 0:
86 bxEnd = -dXmax
87 ixEnd = None
88 else:
89 bxEnd = ixEnd = None
90 return bxEnd, ixEnd
91
92 dXmin = targetBBox.getMinX() - imageBBox.getMinX()
93 dXmax = targetBBox.getMaxX() - imageBBox.getMaxX()
94 dYmin = targetBBox.getMinY() - imageBBox.getMinY()
95 dYmax = targetBBox.getMaxY() - imageBBox.getMaxY()
96
97 bxStart, ixStart = getMin(dXmin)
98 byStart, iyStart = getMin(dYmin)
99 bxEnd, ixEnd = getMax(dXmax)
100 byEnd, iyEnd = getMax(dYmax)
101
102 bx = slice(bxStart, bxEnd)
103 by = slice(byStart, byEnd)
104 ix = slice(ixStart, ixEnd)
105 iy = slice(iyStart, iyEnd)
106 return (by, bx), (iy, ix)
107
108

◆ projectImage()

lsst.afw.image.utils.projectImage ( image,
bbox,
fill = 0 )
Project an image into a bounding box

Return a new image whose pixels are equal to those of
`image` within `bbox`, and equal to `fill` outside.

Parameters
----------
image: `afw.Image` or `afw.MaskedImage`
    The image to project
bbox: `Box2I`
    The bounding box to project onto.
fill: number
    The value to fill the region of the new
    image outside the bounding box of the original.

Returns
-------
newImage: `afw.Image` or `afw.MaskedImage`
    The new image with the input image projected
    into its bounding box.

Definition at line 109 of file utils.py.

109def projectImage(image, bbox, fill=0):
110 """Project an image into a bounding box
111
112 Return a new image whose pixels are equal to those of
113 `image` within `bbox`, and equal to `fill` outside.
114
115 Parameters
116 ----------
117 image: `afw.Image` or `afw.MaskedImage`
118 The image to project
119 bbox: `Box2I`
120 The bounding box to project onto.
121 fill: number
122 The value to fill the region of the new
123 image outside the bounding box of the original.
124
125 Returns
126 -------
127 newImage: `afw.Image` or `afw.MaskedImage`
128 The new image with the input image projected
129 into its bounding box.
130 """
131 if image.getBBox() == bbox:
132 return image
133 (by, bx), (iy, ix) = getProjectionIndices(image.getBBox(), bbox)
134
135 if isinstance(image, MaskedImage):
136 newImage = type(image.image)(bbox)
137 newImage.array[by, bx] = image.image.array[iy, ix]
138 newMask = type(image.mask)(bbox)
139 newMask.array[by, bx] = image.mask.array[iy, ix]
140 newVariance = type(image.image)(bbox)
141 newVariance.array[by, bx] = image.variance.array[iy, ix]
142 newImage = MaskedImage(image=newImage, mask=newMask, variance=newVariance, dtype=newImage.array.dtype)
143 else:
144 newImage = type(image)(bbox)
145 if fill != 0:
146 newImage.set(fill)
147 newImage.array[by, bx] = image.array[iy, ix]
148 return newImage