יישור פרוקרוסטס

שבוע 5 — מרחב הצורות

שי גורדין | אוניברסיטת אריאל

הבעיה: איך משווים צורות?

שני מטבעות — אחד גדול פי שניים ומסובב ב-45°.

פתרון: יישור פרוקרוסטס (GPA — Generalized Procrustes Analysis)

הסרת גודל + מיקום + סיבוב — ונשארת רק הצורה.

שלושה שלבי יישור

  1. הזזה (Translation) — מרכז הכובד של כל פרט ל-(0,0)
  2. קנה מידה (Scaling) — גודל-צנטרואיד = 1 לכולם
  3. סיבוב (Rotation) — מינימום סטייה מהממוצע

הערה

התהליך איטרטיבי: מחשבים ממוצע → מיישרים → מחשבים שוב, עד להתכנסות.

גודל-צנטרואיד (Centroid Size)

\[CS = \sqrt{\sum_{i=1}^{k} \left[(x_i - \bar{x})^2 + (y_i - \bar{y})^2\right]}\]

גודל-צנטרואיד — אותה צורה, גדלים שונים

GPA ב-Python (Colab)

import numpy as np
from morphops import gpa

# landmarks.shape = (35, 16, 2) — 35 מטבעות, 16 ציוני דרך
landmarks = np.load("coins_landmarks.npy")

# יישור GPA — מחזיר מילון
result = gpa(landmarks)
aligned    = result['aligned']   # ציוני דרך מיושרים
mean_shape = result['mean']      # צורה ממוצעת

print(f"מספר מטבעות: {len(aligned)}")
print(f"ציוני דרך: {aligned.shape[1]}")
print(f"טווח x לאחר GPA: {aligned[:,:,0].min():.3f} עד {aligned[:,:,0].max():.3f}")

תוצאה — לפני ואחרי GPA

יישור פרוקרוסטס — 35 מטבעות רומיים

שמאל: כל מטבע במיקום ובגודל שלו. ימין: כולם מיושרים — רק הצורה נשארת.

ציוני הדרך המיושרים

ציוני דרך מיושרים — 35 מטבעות

כל נקודה = ציון דרך אחד על מטבע אחד. הצבע = קיסר. הנקודה הלבנה = ממוצע.

מה שומרים לאחר GPA?

נשמר: - הצורה היחסית - יחסים בין ציוני דרך - שונות הצורה בין פרטים

מוסר: - גודל מוחלט - מיקום בחלל - סיבוב

עצה

גודל-צנטרואיד נשמר בצד לניתוח אלומטריה (קשר צורה-גודל) בנפרד.

לשיעור הבא — PCA

לאחר GPA: נתוני צורה מיושרים ב-32 ממדים (16 נקודות × x,y).
השלב הבא: הפחתת ממדים → 2 צירים עיקריים.