initial commit
This commit is contained in:
87
debug_pipeline.py
Normal file
87
debug_pipeline.py
Normal file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import random
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
|
||||
def run_command(cmd):
|
||||
print(f"Running: {' '.join(cmd)}")
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
def main():
|
||||
# Setup paths
|
||||
base_dir = Path(__file__).parent
|
||||
img_dir = base_dir / "ICCAD2019" / "img"
|
||||
out_dir = base_dir / "out" / "debug1"
|
||||
|
||||
if out_dir.exists():
|
||||
shutil.rmtree(out_dir)
|
||||
out_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# Get images
|
||||
all_images = list(img_dir.glob("*.png"))
|
||||
if not all_images:
|
||||
print("No images found in ICCAD2019/img")
|
||||
return
|
||||
|
||||
selected_images = random.sample(all_images, min(5, len(all_images)))
|
||||
|
||||
print(f"Selected {len(selected_images)} images for debugging.")
|
||||
|
||||
for img_path in selected_images:
|
||||
print(f"\nProcessing {img_path.name}...")
|
||||
case_dir = out_dir / img_path.stem
|
||||
case_dir.mkdir(exist_ok=True)
|
||||
|
||||
# 1. Skeleton Extraction
|
||||
# Note: The user mentioned "black background, white subject" or vice versa.
|
||||
# The script has --invert. I'll try without invert first, assuming standard layout (often drawn dark on light or light on dark).
|
||||
# Let's check one image first? No, I'll just run it.
|
||||
# Actually, usually layouts are drawn objects. If background is black, objects are white.
|
||||
# My script assumes objects are white (value 1) for skeletonization.
|
||||
# If the image is white background, I need to invert.
|
||||
# I'll try both or just assume one. Let's assume we might need --invert if it's white background.
|
||||
# I'll run with --invert if the mean pixel value is high (white background).
|
||||
|
||||
# But wait, I can't easily check mean here without loading.
|
||||
# I'll just run the extraction script.
|
||||
|
||||
extract_cmd = [
|
||||
"python3", "scripts/skeleton_extract.py",
|
||||
str(img_path),
|
||||
str(case_dir),
|
||||
"--denoise", "3"
|
||||
]
|
||||
# Heuristic: if filename contains 'nonhotspot', it might be a clip.
|
||||
# Let's just try running it.
|
||||
run_command(extract_cmd)
|
||||
|
||||
sk_png = case_dir / (img_path.stem + "_sk.png")
|
||||
if not sk_png.exists():
|
||||
print(f"Failed to generate skeleton for {img_path.name}")
|
||||
continue
|
||||
|
||||
# 2. Vectorization
|
||||
vec_json = case_dir / (img_path.stem + "_vec.json")
|
||||
vec_cmd = [
|
||||
"python3", "scripts/vectorize_skeleton.py",
|
||||
str(sk_png),
|
||||
str(vec_json)
|
||||
]
|
||||
run_command(vec_cmd)
|
||||
|
||||
# 3. Expansion (Reconstruction)
|
||||
recon_png = case_dir / (img_path.stem + "_recon.png")
|
||||
expand_cmd = [
|
||||
"python3", "scripts/expand_skeleton.py",
|
||||
str(vec_json),
|
||||
str(recon_png),
|
||||
"--line-width", "3" # Adjust as needed
|
||||
]
|
||||
run_command(expand_cmd)
|
||||
|
||||
print(f"\nDebug run complete. Check results in {out_dir}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user