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

Do you need help?

Notice Board

Dubbi terzo esercizio

R
RigelsHysaj (1550 points)
8 36 50
in Es3 by (1.6k points)
closed by
Buongiorno a tutti!

ho un dubbio su questa:

"- tutti i pixel del perimetro (che si trovano sul 'bordo') della zona che si e' appena colorata devono essere ricolorati col colore c2.
Il perimetro della zona colorata è l'insieme dei pixel che non hanno tutti e 4 i vicini che fanno parte della zona ricolorata
(ovvero almeno uno è di un colore diverso da quello che si sta ricolorando oppure almeno uno non esiste perchè sarebbe fuori dall'immagine)"

Se un pixel  non c'ha nessun vicino che appartiene alla zona appena colorata con colore c1 deve essere colorata con colore c2?

Questo vuol dire che dobbiamo colorare solo i quattri vicini delle coordinate (x,y) con colore c1 e poi tutto il resto dell'immagine con colore c2?

Oppure un pixel deve averne almeno un vicino ( e non tutti i quattri) che appartiene alla zona colorata c1 per essere colorata con c2?

Anche un altro dubbio:

Se i quattri vicini di un pixel con coordinate x,y devono essere colorate con color c1, il pixel stesso deve essere colorato con c1 o solo i suoi vicini?

Grazie in anticipo :)
537 views
closed with the note: answered

3 Answers

Best answer
francesco.dev (33560 points)
21 51 129
by (33.6k points)
selected by

Ciao!

Ti spiego il meccanismo di colorazione usando i colori (ovvero le tuple) c1 e c2:

  • Il colore c1 va adoperato per colorare tutti i pixel "vicini" al pixel di partenza (x,y) che hanno lo stesso colore di tale pixel.
    Come dice la traccia: "tutti i pixel connessi al pixel di coordinate (x,y) nell'immagine vanno ricolorati col colore c1".
    Ma cosa si intende per connessione?
    Avendo un pixel di partenza definiremo connessi i pixel con lo stesso colore e che sono raggiungibili dal pixel di partenza.
    Esempio:
    Avendo il pixel di partenza (10, 10)
    Esso ha come pixel connessi i pixel: (10, 11), (11, 10), (9, 10), (10, 9), ovvero precisamente i pixel vicini al pixel (10,10).
    Non è finita qui! Perché anche questi pixel connessi hanno altri pixel connessi, che per (10, 11) sono: (11, 11), (10, 12), (9, 11), (10, 10)
    E così via per tutti gli altri pixel connessi finché non arrivo al bordo della figura che sto colorando e, una volta arrivato al bordo, mi fermerò perché noterò che i pixel "vicini" hanno un colore diverso.
     
  • Il colore c2 deve essere utilizzato solo ed esclusivamente per colorare tutti quei pixel di colore c1 che però non hanno tutti e 4 i pixel "vicini" di colore c1!
    Esempio:
    Avendo un quadrato 5x5 colorato con c1 e che va dalle coordinate (0, 0) fino alle coordinate (4, 4)
    Quando io controllerò, ad esempio, il pixel (4, 3) noterò che calcolando i pixel vicini: (5, 3), (4, 4), (3, 3), (4, 2)
    C'è un pixel che va fuori la figura (il pixel (5, 3)) e per questo il pixel (4, 3) va colorato col colore c2!

Spero di essere stato chiaro,
Fammi sapere qualsiasi cosa!
- Francesco Pio Scognamiglio

R
RigelsHysaj (1550 points)
8 36 50
by (1.6k points)
Con colore c1 in questo caso dobbiamo calcolare solo i vicini di (10, 10) cioe' (10, 11), (11, 10), (9, 10), (10, 9) o anche i vicini di  vicini di (10,10) cioe' i vicini di (10, 11), (11, 10), (9, 10), (10, 9)?
Poi per verificare che due pixel hanno un colore diverso, per esempio questi (0,255,0), (0,250,0) sono considerati colori diversi?
Molto grazie!
francesco.dev (33560 points)
21 51 129
by (33.6k points)
La prima pseudo risposta è sbagliata, ovvero devi colorare tutti i pixel connessi con colore c1!
Quindi non solo quelli vicini al pixel di partenza (10, 10), ma anche quelli vicini ai pixel vicini a quelli di partenza e così via (è un effetto a catena o simile ad una macchia d'olio che si espande su un piano). Ti fermerai solo quando troverai un pixel che ha un colore diverso da quello del pixel di partenza o quando uscirai dai bordi dell'immagine.

Invece la risposta alla seconda domanda è sì, la tupla che rappresenta il pixel (0, 255, 0) è differente da quella che rappresenta il pixel (0, 250,  0), ti basterà fare un if per verificarlo.
G
GiorgioAgosta (2880 points)
6 24 42
by (2.9k points)
Ciao, devi colorare con c1 tutti i pixel collegati al pixel che ti viene fornito inizialmente (ovviamente anche questo dovrà essere colorato). Fatto ciò devi contornare con c2 l intera area colorata con c1 precedentemente.
Spero di averti aiutato, in caso chiedi pure!
giorgio.belli (10140 points)
23 74 98
by (10.1k points)
"Se un pixel  non c'ha nessun vicino che appartiene alla zona appena colorata con colore c1 deve essere colorata con colore c2?
" Esattamente questa é l'operazione da pare.

"Questo vuol dire che dobbiamo colorare solo i quattri vicini delle coordinate (x,y) con colore c1 e poi tutto il resto dell'immagine con colore c2" questo purtroppo non è corretto  in quanto così facendo l'immagine risultante sarebbe con 4 pixel colorati (gli adiacenti a quello iniziale) e gli altri tutti uguali. Mentre tu dovresti andare a colorare anche gli adiacenti ti degli adiacenti e cosi via.

Spero tu abbia capito (rofl)
R
RigelsHysaj (1550 points)
8 36 50
by (1.6k points)
Infatti non sto capendo che devo colorare con c2