grundlegende theorie des keying (video-processing)



  • eigentlich schon. wenn der wert der farbe exakt dem definierten entspricht, kein problem. jetzt weiss ich aber nicht genau, wie ich erkenne, ob der farbwert ähnlich dem definierten ist....

    was würde sich da am besten eignen, RGB oder was auch immer, usw...

    ich denke bei RGB wäre es eigentlich am simpelsten, right?



  • Meist wird hier auch mit der Ausleuchtung so gearbeitet, dass der Fehlerwert minimiert wird.

    Aber mal so als Tipp: Mach die Toleranz einfach variabel



  • DocJunioR schrieb:

    Aber mal so als Tipp: Mach die Toleranz einfach variabel

    meinst du damit frei definierbar? das ist klar....
    oder meinst du irgendwie selbsterrechnend???



  • loki1985 schrieb:

    meinst du damit frei definierbar? das ist klar....
    oder meinst du irgendwie selbsterrechnend???

    Naja, wäre ja mal einen Versuch wert.
    Sozusagen einen Schwellwert berechnen á la:
    Wenn der Farbwert sich zwischen 2 Pixeln mehr als x verändert, dann ist es ein Keycolour.

    Aber eigentlich ist es doch eher gebräuchlich, nur eine Keyfarbe mit einstellbarem Toleranzbereich (im ganzen Bild konstant) zu nehmen.



  • SeppSchrot schrieb:

    Aber eigentlich ist es doch eher gebräuchlich, nur eine Keyfarbe mit einstellbarem Toleranzbereich (im ganzen Bild konstant) zu nehmen.

    exakt. so hatte ich das ursprünglich auch vor....

    ich denke am einfachsten wäre es, wenn man einen farbwert angibt, welcher entfernt werden soll. dann überprüft man jedes pixel ob

    currentPixel.green <= pruefwert.green + toleranz && currentPixel.green >= pruefwert.green - toleranz
    

    ,
    und wenn wird es transparent gemacht....

    /EDIT: muss natürlich nicht nur mit .green sondern auch .red und .blue überprüft werden, nur ob mit gleicher tolleranz oder anderer?

    ähm, wie ist denn das, bedeutet 24 Bit BMP, dass jedes pixel 24 Bit hat, oder das jeweils R, G und B 24 Bit hat?

    weil mit solchem zeug bin ich noch etwas unsicher...



  • Das heißt, 3 Byte pro Pixel. (24 BPP - BitProPixel).

    Obwohl die meisten Karten nur noch 32BPP kennen, also mit Alphawert.
    (Diese DWORD Ausrichtung ist einfach schneller.)



  • ahjo. heisst dann wohl dass jede farbe ein byte bekommt, mit 0 = dunkel und 255 = hell, right?

    das mit dem alpha kann man hier ja aussen vor lassen....

    /EDIT: jup, laut wikipedia isses so...

    dann werd ich die tage mal schauen ob sich sowas implementieren lässt....



  • soooo....

    habe das mal ausprobiert, funktioniert auch recht gut. momentan noch ohne toleranz, aber auch schon mit toleranz getestet, die aber noch probleme macht.

    speziell für die toleranz brauche ich noch theorie.

    momentan überprüfe ich einfach, wieviel ganzzahlen der gesamte farbwert abweicht.

    neue möglichkeit für einen grün-keyer, die mir eingefallen ist:

    bei toleranz = 0 entspricht die key-farbe grün=255, rot=0, blau=0;
    bei höherer toleranz darf grün geringer und rot&blau höher sein...

    ist das sinvoll?

    eventuell sollte natürlich definierbar sein, welcher hauptfamilie der key angehört, als R oder G oder B...



  • also, ich muss dass hier nochmal auffrischen:

    ich habe mehrfach versucht, eine formel aufzustellen, anhand der sich durch einsetzen von R & G & B feststellen lässt, ob diese farbe vom menschen als grün erkannt werden würde.

    ich finde aber nichts.....

    hat irgendjemand eine ahnung wie sich sowas machen ließe?



  • so, habs recht gut gelöst.... monate später.

    nur so, wen es interresiert: der HSV-farbraum ist die lösung 🙂


Anmelden zum Antworten