Skip to content

Commit

Permalink
refactor: Move image label extraction to separate helpers file
Browse files Browse the repository at this point in the history
  • Loading branch information
janezlapajne committed Aug 27, 2024
1 parent 4b2960e commit b6a92af
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 48 deletions.
2 changes: 2 additions & 0 deletions source/helpers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from .helpers import (
extract_labels_from_spectral_image,
extract_labels_from_spectral_images,
get_images_by_label,
read_spectral_images,
)

Expand All @@ -11,4 +12,5 @@
"extract_labels_from_spectral_images",
"save_transformation_matrix",
"load_transformation_matrix",
"get_images_by_label",
]
34 changes: 33 additions & 1 deletion source/helpers/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from siapy.entities.imagesets import SpectralImage, SpectralImageSet

from source.core import settings
from source.core import logger, settings


def read_spectral_images() -> tuple[list[SpectralImage], list[SpectralImage]]:
Expand Down Expand Up @@ -51,3 +51,35 @@ def extract_labels_from_spectral_images(
]

return labels_cam1, labels_cam2


def get_images_by_label(
label: str,
image_set_cam1: list[SpectralImage],
image_set_cam2: list[SpectralImage],
labels_cam1: list[list[str]],
labels_cam2: list[list[str]],
) -> tuple[SpectralImage, SpectralImage]:
index_cam1 = -1
index_cam2 = -1
for idx, labels_list in enumerate(labels_cam1):
if label in labels_list:
index_cam1 = idx
break
for idx, labels_list in enumerate(labels_cam2):
if label in labels_list:
index_cam2 = idx
break

if index_cam1 == -1:
raise ValueError(f"Label for '{settings.camera1_id}' was not found.")
if index_cam2 == -1:
raise ValueError(f"Label for '{settings.camera2_id}' was not found.")

image_cam1 = image_set_cam1[index_cam1]
image_cam2 = image_set_cam2[index_cam2]

logger.info(f"Extracted images for label: '{label}'")
logger.info(f"Camera1 image path: '{image_cam1.filepath}'")
logger.info(f"Camera2 image path: '{image_cam2.filepath}'")
return image_cam1, image_cam2
31 changes: 8 additions & 23 deletions source/misc/display_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
from matplotlib import pyplot as plt

from source.core import logger, settings
from source.helpers import extract_labels_from_spectral_images, read_spectral_images
from source.helpers import (
extract_labels_from_spectral_images,
get_images_by_label,
read_spectral_images,
)


def display_spectral_image(label: Optional[str] = None):
Expand All @@ -20,28 +24,9 @@ def display_spectral_image(label: Optional[str] = None):
labels_cam1, labels_cam2 = extract_labels_from_spectral_images(
image_set_cam1, image_set_cam2
)
index_cam1 = -1
index_cam2 = -1
for idx, labels_list in enumerate(labels_cam1):
if label in labels_list:
index_cam1 = idx
break
for idx, labels_list in enumerate(labels_cam2):
if label in labels_list:
index_cam2 = idx
break

if index_cam1 == -1:
raise ValueError(f"Label for '{settings.camera1_id}' was not found.")
if index_cam2 == -1:
raise ValueError(f"Label for '{settings.camera2_id}' was not found.")

image_cam1 = image_set_cam1[index_cam1]
image_cam2 = image_set_cam2[index_cam2]

logger.info(f"Displaying images for label: '{label}'")
logger.info(f"Camera1 image path: '{image_cam1.filepath}'")
logger.info(f"Camera2 image path: '{image_cam2.filepath}'")
image_cam1, image_cam2 = get_images_by_label(
label, image_set_cam1, image_set_cam2, labels_cam1, labels_cam2
)

fig, ax = plt.subplots(1, 2)
ax[0].imshow(image_cam1.to_display()) # noqa
Expand Down
35 changes: 11 additions & 24 deletions source/transformator/transformator.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
import numpy as np
from siapy.entities.imagesets import SpectralImage
from siapy.transformations import corregistrator
from siapy.utils.plots import pixels_select_click

from source.core import logger, settings
from source.helpers import extract_labels_from_spectral_images, read_spectral_images
from source.core import logger
from source.helpers import (
extract_labels_from_spectral_images,
get_images_by_label,
read_spectral_images,
)


def find_transformation_between_images(label: str) -> np.ndarray:
Expand All @@ -16,32 +21,14 @@ def find_transformation_between_images(label: str) -> np.ndarray:
labels_cam1, labels_cam2 = extract_labels_from_spectral_images(
image_set_cam1, image_set_cam2
)
index_cam1 = -1
index_cam2 = -1
for idx, labels_list in enumerate(labels_cam1):
if label in labels_list:
index_cam1 = idx
break
for idx, labels_list in enumerate(labels_cam2):
if label in labels_list:
index_cam2 = idx
break

if index_cam1 == -1:
raise ValueError(f"Label for '{settings.camera1_id}' was not found.")
if index_cam2 == -1:
raise ValueError(f"Label for '{settings.camera2_id}' was not found.")

image_cam1 = image_set_cam1[index_cam1]
image_cam2 = image_set_cam2[index_cam2]

logger.info(f"Displaying images for label: '{label}'")
logger.info(f"Camera1 image path: '{image_cam1.filepath}'")
logger.info(f"Camera2 image path: '{image_cam2.filepath}'")
image_cam1, image_cam2 = get_images_by_label(
label, image_set_cam1, image_set_cam2, labels_cam1, labels_cam2
)

pixels_cam1 = pixels_select_click(image_cam1)
pixels_cam2 = pixels_select_click(image_cam2)

matx, _ = corregistrator.align(pixels_cam2, pixels_cam1, plot_progress=True)
logger.info("Transformation matrix calculated")
# pixels_transformed = corregistrator.transform(pixels_cam1, matx)
return matx

0 comments on commit b6a92af

Please sign in to comment.