Marsovci
Razvijamo prototip aplikacije za iskanje vesoljcev na podlagi slik spletnih kamer. Za zdaj zna iz slike izluščiti samo kroge in nobenih drugih likov. Ti krogi se ne sekajo. Primer je na spodnji sliki.
Naša prva naloga je prepoznati ptiče, torej okroglaste živali z dvema očesoma. Ptič je krog, ki
- ni vsebovan v nobenem drugem krogu
- in vsebuje natančno dva kroga,
- ki ne vsebujeta drugih krogov.
Na gornji sliki sta dva ptiča - označena sta z rdečo.
Zaznani krogi so podani s seznamom trojk, ki predstavljajo koordinati središča in polmer. Za gornjo sliko je seznam takšen:
krogi = [
(164.4, 136.8, 50.8),
(59.2, 182.8, 50.8),
(282.8, 71.5, 45.6),
(391, 229.4, 58.4),
(259.9, 186, 47.6),
(428, 89, 63.2),
(88.6, 44.3, 37.5),
(371.6, 233.6, 10.6),
(408.7, 210.5, 8.9),
(398.1, 95.5, 13),
(449.5, 99.6, 13.6),
(455.4, 66.5, 12.4),
(139.6, 138, 10.6),
(185, 138, 10.6),
(69.8, 46.5, 10.6),
(267.4, 51.7, 17.2),
(225.8, 187.3, 7.5),
(242.8, 187.3, 7.5),
(259.8, 187.3, 7.5),
(276.7, 187.3, 7.5),
(293.7, 187.3, 7.5),
(267.4, 51.7, 10.6),
(99.6, 43.1, 17.2),
(99.6, 43.1, 10.6),
(150.3, 245.5, 50.8),
(144.3, 243.6, 38.8),
(127.3, 245.5, 7.5),
(161.3, 245.5, 7.5)]
Obvezna naloga
Napiši funkcijo ptici(krogi)
, ki prejme seznam krogov in vrne množico koordinat središč vseh ptičev.
Za gornji primer vrne {(164.4, 136.8), (391, 229.4)}
Dodatna naloga
Napiši funkcijo sumljivi(krogi)
, ki prejme prav takšen seznam in vrne središča potencialnih marsovskih ladij - to, je, vseh krogov, ki niso vsebovani v nobenem drugem krogu in niso ptiči.
Matematična pomoč
Če za dva kroga vemo, da se ne sekata in je prvi večji od drugega, je drugi vsebovan v prvem, kadar je razdalja med središčema manjša od polmera prvega kroga.
$$\sqrt{(x_0 - x_1)^2 + (y_0 - y_1)^2} < r_0$$
- 18 November 2021, 11:32