Home Work 6: errore di un'unità sul blu nell' elaborazione della compressione

fvitaterna (340 points)
5 9 12
asked Dec 1, 2020 in HW6 obbligatorio by fvitaterna (340 points)
recategorized Dec 8, 2020 by andrea.sterbini
Salve a tutti.

Come si vede dal log riportato, ho un errore di un'unità sul blu dei primi 4 pixel nella figura compressa. Di fatto la differenza tra l'immagine prodotta e quella da produrre è quasi impercettibile, ma ovviamente l'algoritmo non supera i test.

A qualcuno è capitato? Qualche consiglio?

========================================================================================================= short test summary info ==========================================================================================================
FAILED test_01.py::Test::test_data_01___circle____5__5__27__28__ - AssertionError: Tuples differ: (0, 0, 10) != (0, 0, 11)
FAILED test_01.py::Test::test_data_02___5_squares____5__5__44__44__ - AssertionError: Tuples differ: (0, 0, 20) != (0, 0, 21)
FAILED test_01.py::Test::test_data_03___6_rectangles____100__50__350__300__ - AssertionError: Tuples differ: (0, 0, 200) != (0, 0, 201)
FAILED test_01.py::Test::test_data_04___random_5____46__162__726__1062__ - AssertionError: Tuples differ: (0, 1, 15) != (0, 1, 16)
FAILED test_01.py::Test::test_data_05___random_10____175__89__780__2815__ - AssertionError: Tuples differ: (0, 0, 221) != (0, 0, 222)
197 views

3 Answers

twgever (15190 points)
7 27 105
answered Dec 1, 2020 by twgever (15,190 points)
perchè infatti sbagli altezze e larghezze. immagino tu le calcolerai facendo xmax-xmin del rettangolo. Ma devi fare xmax-xmin+1

Infatti se fai caso hai il primo pixel del lato superiore alla x 1 e l'ultimo alla x 10. se fai 10-1 ottieni 9. ma la larghezza non misura 9, bensì 10. Infatti abbiamo:

1  2  3  4  5  6  7  8  9  10

sono 10 pixel

Lo stesso discorso vale per l'altezza
f
fabio.chiarini (2280 points)
0 0 7
answered Dec 1, 2020 by fabio.chiarini (2,280 points)
Ciao, a me era successa una cosa simile, in base a come hai impostato il tuo codice secondo me quell'errore può dipendere da:

1) Il modo in cui calcoli i valori di h e w. Se lo fai per differenza tra 2 vertici ricordati che devi aggiungere un +1.

2) Per qualche motivo sbagli a prendere i valori x e y dei vertici, può succedere quando ad esempio un vertice ha un lato di un altro rettangolo adiacente.

Prova a controllare queste due casistiche, spero tu riesca a risolvere.
9
9Andrea9 (12340 points)
10 31 56
answered Dec 2, 2020 by 9Andrea9 (12,340 points)
devi semplicemente aggiungere 1 alla fine quando misuri altezza e larghezza, questo perché tu fai una semplice sottrazione, ad'esempio:

20-10=10

dove 20 è l'angolo in alto a destra e 10 l'angolo in alto a sinistra, così facendo non conti un pixel ovvero il numero 10 .