Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

HM6 Bounding Box

L
Lion (1050 points)
0 18 26
in HW6 obbligatorio by (1.1k points)
recategorized by
Buongiorno, io uso un sistema per trovare la bounding box ma i risultati sono sempre sbagliati, quindi vengo qui per chiedere il vostro aiuto.

Per ogni rettangolo io calcolo il perimetro e lo inserisco in un dizionario come chiave e per i valori gli associo le coordinate dell'angolo superiore sinistro e quello inferiore destro. Poi con la funzione MAX mi prendo il perimetro più grande e ritorno i valori associati alla chiave.

Cosa sbaglio? Forse trovare il perimetro non è il metodo corretto? Eppure dice di trovare il rettangolo che racchiude tutti gli altri rettangoli, quindi in teoria dovrebbe avere il perimetro più grande.

Grazie in anticipo
457 views
closed

2 Answers

Best answer
twgever (17470 points)
8 29 105
by (17.5k points)
selected by
sbagli perchè non è detto che il rettangolo con il perimetro più grande contenga tutti gli altri. La bounding box ha al vertice in alto a sinistra le seguenti coordinate: xmin, cioè la x minima fra tutte le x minime di tutti i rettangoli, y min, cioè la y minima fra tutte le y minime di tutti i rettangoli. La bounding box è un rettangolo che ti devi immaginare, non che è già presente.
L
Lion (1050 points)
0 18 26
by (1.1k points)
Ok grazie, ma allora per "xmin" intendi la x più vicina alla coordinata[0][0] e per "xmax" invece la x più vicina alla coordinata[len(altezza][0]? E per la y invece sono "ymax" quella più vicina a [len(altezza)][len(larghezza)] e "ymin" quella più vicina a [0][len(larghezza)]?
twgever (17470 points)
8 29 105
by (17.5k points)
xmin non è una coppia di coordinate, è una coordinata sola. Quindi le devi considerare a coppia (xmin,ymin) e (xmax,ymax). dove xmin è la x fra tutte le x dei rettangoli che sta più vicina al lato sinistro (visto che le x rappresentano la colonna), ymin la y fra tutte le y dei rettangoli che sta più vicina al lato superiore ecc. Però non è importanto quali chiami come, l'importante è che siano quelle.
twgever (17470 points)
8 29 105
by (17.5k points)
Inoltre, fai attenzione che non devi considerare l'angolo pù vicino a [0,0], bensì la coppia di x e y più vicina a 0,0, che possono anche provenire da due rettangoli diversi.
Francesco.Danese (2140 points)
0 1 10
by (2.1k points)

Ciao, non hai capito il concetto di bounding box. Non è un rettangolo tale da poterci disegnare tutti gli altri dentro, ma è il rettangolo minimo che puoi disegnare sull'immagine stessa che contenga tutti gli altri così come sono disposti nel'immagine.  Ecco un esempio:



(Sarebbero tre immagine diverse, con 3 bounding box diverse)

L
Lion (1050 points)
0 18 26
by (1.1k points)
Ok grazie, quindi l'angolo alto a sinistra corrisponde all'angolo più vicino a colonna = 0, riga= 0 tra i rettangoli giusto? Mentre l'angolo in basso a sinistra è l'angolo più vicino a colonna = len(altezza), riga = 0? Poi per y il discorso è simile
s
sara.d (280 points)
0 0 1
by (280 points)
Ciao! Scusate in anticipo per la domanda (pare stupida ma io non ho ancora capito) la bounding box deve essere calcolata sull'immagine iniziale o sulla nuova immagine creata?
twgever (17470 points)
8 29 105
by (17.5k points)
immagine iniziale naturalmente, la nuova immagine creata non ha figure, quindi sarebbe molto difficile calcolarla.
s
sara.d (280 points)
0 0 1
by (280 points)
Grazie Mille!