Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash CS4 Professional

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-01-2011, 19:33   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2010
Beiträge: 20
Artefakte bei MotionDetection

Hi,

ich habe mir einen kleinen MotionDetection Algorithmus zusammengebastelt. Ein Problem habe ich aber noch, ich aber immer noch Restartefakte im Bild.

Sprich: angenommen im Bild bewegt sich etwas, dann wird der bewegte Inhalt weiß. So weit so gut. Dann habe ich aber das Problem das an diesen "weißen Stellen" noch mehrere Frames lang graue Artefakte sind. Daher das Bild ist nicht ganz schwarz wie es sein sollte, sondern es ist schwarz mit grau bis hellgrauen Flecken an manchen Stellen, obwohl das nicht sein sollte.

Ich habe hier unten meinen Quellcode(auszugsweise, nur die wichtigen Stellen meiner Meinung nach) und ich hoffe jemand kann mir den Fehler nennen:

PHP-Code:

bmd1
.draw(video);

function 
diffe:Event ):void 

{
    
i++;
    
       
bmd2.draw(video);
    
    if (
i<2)
    {
         
bmd1.applyFilter(bmd1,bmd1.rect,new Point(0,0),graustufen); 
         
bmd1.applyFilter(bmd1,bmd1.rect,new Point(0,0),bf); 
    }
    
        
         
          
bmd2.applyFilter(bmd2,bmd2.rect,new Point(0,0),graustufen);
          
bmd2.applyFilter(bmd2,bmd2.rect,new Point(0,0),bf);
          
ourData.draw(video);



  var 
ourEdgeData:BitmapData =new BitmapData (video.width,video.height,true,0xFFFFFFFF);
                
                             
    if (
i>1)
    {
    
ourEdgeData=old.compare(bmd2) as BitmapData;
    }
    else
    {
    
ourEdgeData=bmd1.compare(bmd2) as BitmapData;
    }
    
    if (
ourEdgeData != null)
    {
    
ourEdgeData.threshold(ourEdgeDataourEdgeData.rect, new Point(00), ">"0xEBAEBA0x000000FF0x00FF0000false);
    }
    
    if (
ourEdgeData != null)
    {
    
ourEdgeData.threshold(ourEdgeDataourEdgeData.rect, new Point(00), ">"0x1F7EFDFF0xFFFFFFFF0x00FF0000false);
    }
    
    

    
    var 
myBMP:Bitmap = new Bitmap(ourEdgeData);

    
myBMP.x=370;
    
myBMP.y=252;
    
addChild(myBMP);
    
ourEdgeData = new BitmapData(ourData.widthourData.heightfalse0xFFFFFFFF);
    
      


    
    
old=bmd2.clone();





Wie man sieht wird im allersten Frame die Differenz zwischen bmd1 und bmd2 gebildet. Ab dann nur noch die Diff. zwischen old und bmd2, quasi immer zwischen aktuellem und letztem Frame.

Der Filteer graustufen macht das jeweilige Bild zu Graustufen und "bf" ist ein Blur-Filter .

Ich hoffe ihr könnt mir helfen .

Grüße
newbie

Geändert von newbie2010 (17-01-2011 um 19:36 Uhr)
newbie2010 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
artefakte erzeugen option ActionScript 3 2 30-09-2010 11:50
[Flash CS4] artefakte (?) in qt export mpod Flash Einsteiger 1 03-04-2010 11:45
Darstellungsfehler/Artefakte DaisyW Flash 4 und Flash 5 2 09-11-2006 12:42
ARTefakte ZeeZee Flash 4 und Flash 5 1 22-07-2005 17:43
Artefakte bei JPG Tween misfit Flash MX 5 26-11-2004 14:24


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele