Olen värkkäämässä ohjelmaa jolla voidaan tallentaa still-kuvia kamerasta taustakuvan päälle. (Piirrosanimaationauhuri)
Pitäisi saada still-kuvasta tehtyä maski ohjelmallisesti, jotta sen voisi upottaa taustakuvaan. Tämän jälkeen tallenetaan pelkkä still-kuva.
Olisiko Mestareilla vinkkiä maskin tekoon, tai muuhun vastaavaan tekniikkaan?
Siis aiot erottaa ihmisen taustasta? No kuvaus ainakin täytyy suorittaa tasaväristä taustaa vasten, jotta onnistuu edes jotenkin. Etsit pikseli pikseliltä värit jotka ovat tarpeeksi lähellä taustaväriä. Tee vaikka liukusäädin josta saa tarkkuutta säädettyä. Voithan muodostaa rgb arvosta vaikka prosenttiluvun, joka kuvaa värin läheisyyttä taustaväriin. Jos tietty prosentti täyttyy, peitetään kuvan maskia siltä kohtaa. Itse ainakin toteuttaisin näin. Itse kuvaa kannattaa varmaan jotenkin reunanpehmentää vielä siistin lopputuloksen saamiseksi.
No itse en käyttäisi maskeja, koska saman voi hoitaa väriarvoja vertaillessa.
Tosin 1 bittisen maskikuvan käsittely on hitusen nopeampaa.
Edit: kuten Meitsi sanoikin jo.
Ei ole mikään ihan helppo juttu.
Pelkkä väriarvojen erottelu tuottaa aika huonoa jälkeä. Ilman kunnollista taustaa (ns. bluescreen) ja valaistusta värierokynnys täytyy säätää niin korkeaksi, että kuvasta voi leikkaantua paljon ylimääräistä pois. Mikään ei takaa, että ohjelma erottaisi esimerkiksi ihmisen silmät vaaleasta taustasta, eikä leikkaisi niitä pois.
Reunapehmennyksen (joka on vähimmäisvaatimus edes keskinkertaiseen lopputulokseen) lisäksi kannattaa asettaa esimerkiksi jokin alaraja poistettavan alueen pinta-alalle, jottei hahmoon tulisi sattumanvaraisia reikiä. Myös jonkinlaista reunantunnistusta kannattaisi hyödyntää.
Tuossa kysymyksessä jäi sanomatta, että kysessä on käsin piirretty animaatio, joka kuvataan repro-tekniikalla l. piirroshahmot(vaikkapa paperinuket) ovat valkoista taustaa vasten. Still-kamera on tasan 90 asteen kulmassa kuvapintaan n. 400mm päässä. Valaistus suoritetaan 45 asteen kulmassa kuvaan nähden kahdesta eri suunnasta, tällä saadaan tausta lievällä ylivalotuksella erittäin tasaiseksi. (RGB 255,255,255)
Minulla on tieto/taito aukko, millä komennolla/koodipätkällä saadaan imagesta eroteltua yhden pikselin tiedot?
Picture1.Point(x, y) palauttaa väriarvon kohdassa x,y. Kannattaa katsoa, että kuvan ScaleMode on Pixel, niin tulee oikea yksikkö.
Tuosta väriarvosta voi sitten edelleen erotella värikomponentit vaikkapa näin:
r = väri And 255 g = (väri \ 256) And 255 b = (väri \ 65536) And 255
mod. Nyt kenoviivat näkyvät oikein.
Jos kerran halutaan tarkistaa onko piste täysin valkoinen, niin eihän sitä komponentteihin erikseen tarvitse jakaa - valkoinen on pointin antamassa muodossa 0xFFFFFF eli 16777215.
hunajavohveli kirjoitti:
Picture1.Point(x, y) palauttaa väriarvon kohdassa x,y. Kannattaa katsoa, että kuvan ScaleMode on Pixel, niin tulee oikea yksikkö.
Tuosta väriarvosta voi sitten edelleen erotella värikomponentit vaikkapa näin:
r = väri And 255 g = (väri \ 256) And 255 b = (väri \ 65536) And 255
tuolla se onnistuu, koska tällä ohjelmalla on aikaa pirrellä ja hoitaa grafiikkaa.
Tuli itse ajateltua vähän liian monimutkaisesti.
Kiitos ja Kiitos kaikille
Aihe on jo aika vanha, joten et voi enää vastata siihen.