Skip to content
Snippets Groups Projects
Commit 3178da67 authored by Tamino Huxohl's avatar Tamino Huxohl
Browse files

add a script to review if slices should be excluded from the mu_map

parent 0869a2fa
No related branches found
No related tags found
No related merge requests found
import argparse
import cv2 as cv
import numpy as np
from mu_map.data.datasets import MuMapDataset, HEADER_DISC_FIRST, HEADER_DISC_LAST
from mu_map.util import to_grayscale, COLOR_WHITE, COLOR_BLACK
if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="review all μ-maps in a dataset for broken slices at the start or end",
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
)
parser.add_argument(
"dataset_dir", type=str, help="directory containing the dataset"
)
parser.add_argument(
"--view", action="store_true", help="only visualize the current state"
)
parser.add_argument(
"--force",
action="store_true",
help="do not ask for permission to replace discard flags in the table",
)
args = parser.parse_args()
dataset = MuMapDataset(dataset_dir=args.dataset_dir, discard_μ_map_slices=args.view)
if (
not args.view
and not args.force
and (
(
HEADER_DISC_FIRST in dataset.table
and not (dataset.table[HEADER_DISC_FIRST] == False).all()
)
or (
HEADER_DISC_LAST in dataset.table
and not (dataset.table[HEADER_DISC_LAST] == False).all()
)
)
):
print(
f"This operation is going to set all discard_first and discard_last flags in {dataset.csv_file}. If you only want to see the current state use the --view flag."
)
_input = input("Are you okay with setting these flags to false? (y/n): ")
if _input.lower() != "y":
exit(0)
if not args.view:
dataset.table[HEADER_DISC_FIRST] = False
dataset.table[HEADER_DISC_LAST] = False
wname = "μ-map"
cv.namedWindow(wname, cv.WINDOW_NORMAL)
cv.resizeWindow(wname, 1600, 900)
controls = "l = discard last, f = discard first, b = discard both, n = discard none"
for i, (_, μ_map) in enumerate(dataset):
slice_first = to_grayscale(μ_map[0])
slice_last = to_grayscale(μ_map[-1])
slice_first = cv.resize(slice_first, (512, 512), interpolation=cv.INTER_AREA)
slice_last = cv.resize(slice_last, (512, 512), interpolation=cv.INTER_AREA)
cv.putText(slice_first, "First", (0, 30), cv.FONT_HERSHEY_SIMPLEX, 1, COLOR_BLACK, 3)
cv.putText(slice_first, "First", (0, 30), cv.FONT_HERSHEY_SIMPLEX, 1, COLOR_WHITE, 1)
cv.putText(slice_last, "Last", (0, 30), cv.FONT_HERSHEY_SIMPLEX, 1, COLOR_BLACK, 3)
cv.putText(slice_last, "Last", (0, 30), cv.FONT_HERSHEY_SIMPLEX, 1, COLOR_WHITE, 1)
space = np.full((slice_first.shape[0], 10), 239, np.uint8)
to_show = np.hstack((slice_first, space, slice_last))
textposition = (0, to_show.shape[0] - 12)
cv.putText(
to_show, controls, textposition, cv.FONT_HERSHEY_SIMPLEX, 0.75, COLOR_BLACK, 3
)
cv.putText(
to_show, controls, textposition, cv.FONT_HERSHEY_SIMPLEX, 0.75, COLOR_WHITE, 1
)
cv.imshow(wname, to_show)
key = cv.waitKey(0)
if key == ord("q"):
exit(0)
elif key == ord("l"):
dataset.table.loc[i, (HEADER_DISC_LAST)] = True
elif key == ord("f"):
dataset.table.loc[i, (HEADER_DISC_FIRST)] = True
elif key == ord("b"):
dataset.table.loc[i, (HEADER_DISC_LAST)] = True
dataset.table.loc[i, (HEADER_DISC_FIRST)] = True
if not args.view:
dataset.table.to_csv(dataset.csv_file, index=False)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment