Skip to content

Spectral Images

siapy.entities.images.spimage

T module-attribute

T = TypeVar('T', bound=ImageBase)

SpectralImage dataclass

SpectralImage(
    image: T, geometric_shapes: list[Shape] | None = None
)

Bases: Generic[T]

Source code in siapy/entities/images/spimage.py
26
27
28
29
30
31
32
def __init__(
    self,
    image: T,
    geometric_shapes: list["Shape"] | None = None,
):
    self._image = image
    self._geometric_shapes = GeometricShapes(self, geometric_shapes)

image property

image: T

geometric_shapes property

geometric_shapes: GeometricShapes

filepath property

filepath: Path

metadata property

metadata: dict[str, Any]

shape property

shape: tuple[int, int, int]

bands property

bands: int

default_bands property

default_bands: list[int]

wavelengths property

wavelengths: list[float]

camera_id property

camera_id: str

spy_open classmethod

spy_open(
    *,
    header_path: str | Path,
    image_path: str | Path | None = None,
) -> SpectralImage[SpectralLibImage]
Source code in siapy/entities/images/spimage.py
48
49
50
51
52
53
@classmethod
def spy_open(
    cls, *, header_path: str | Path, image_path: str | Path | None = None
) -> "SpectralImage[SpectralLibImage]":
    image = SpectralLibImage.open(header_path=header_path, image_path=image_path)
    return SpectralImage(image)

to_display

to_display(equalize: bool = True) -> Image
Source code in siapy/entities/images/spimage.py
96
97
def to_display(self, equalize: bool = True) -> Image.Image:
    return self.image.to_display(equalize)

to_numpy

to_numpy(nan_value: float | None = None) -> ndarray
Source code in siapy/entities/images/spimage.py
 99
100
def to_numpy(self, nan_value: float | None = None) -> np.ndarray:
    return self.image.to_numpy(nan_value)

to_signatures

to_signatures(pixels: Pixels) -> Signatures
Source code in siapy/entities/images/spimage.py
102
103
104
105
def to_signatures(self, pixels: "Pixels") -> Signatures:
    image_arr = self.to_numpy()
    signatures = Signatures.from_array_and_pixels(image_arr, pixels)
    return signatures

to_subarray

to_subarray(pixels: Pixels) -> ndarray
Source code in siapy/entities/images/spimage.py
107
108
109
110
111
112
113
114
115
116
117
118
119
120
def to_subarray(self, pixels: "Pixels") -> np.ndarray:
    image_arr = self.to_numpy()
    u_max = pixels.u().max()
    u_min = pixels.u().min()
    v_max = pixels.v().max()
    v_min = pixels.v().min()
    # create new image
    image_arr_area = np.nan * np.ones((v_max - v_min + 1, u_max - u_min + 1, self.bands))
    # convert original coordinates to coordinates for new image
    v_norm = pixels.v() - v_min
    u_norm = pixels.u() - u_min
    # write values from original image to new image
    image_arr_area[v_norm, u_norm, :] = image_arr[pixels.v(), pixels.u(), :]
    return image_arr_area

mean

mean(
    axis: int
    | tuple[int, ...]
    | Sequence[int]
    | None = None,
) -> float | ndarray
Source code in siapy/entities/images/spimage.py
122
123
124
def mean(self, axis: int | tuple[int, ...] | Sequence[int] | None = None) -> float | np.ndarray:
    image_arr = self.to_numpy()
    return np.nanmean(image_arr, axis=axis)