TRENDnet Outdoor CAM TV-IP320PI

TV-IP320PI siehe http://www.trendnet.com

Die Outdoor CAM TRENDnet Outdoor CAM TV-IP320PI habe ich nun seit mehreren Wochen im Einsatz und sie zeichnet sich durch sehr gute Bildqualität aus. Die Bewegungserkennung am Tag arbeitet zufriedenstellend, jedoch werden in der Nacht leider sehr viele nicht vorhandene Bewegungen erkannt. Unter anderem auch durch Insekten ausgelöst.

Auch werden leider mit jeder Bewegungserkennung 6 Schnappschüsse archiviert. Um die Dateimenge auf dem FTP-Server zu verrignern, habe ich das folgende PHP Script erstellt. Dieses rufe ich im Zyklus von 10 Minuten auf, um aufzuräumen. Der zyklische Aufruf erfolgt über einen Dienst meines Webservers, auf dem die Bilder angezeigt werden.

Das nachfolgende Script löscht Snapshots und behält die letzten 3 Aufnahmen. Es prüft ob es sich um Nachtbilder mit hohem Grauanteil handelt und löscht dann auf einander folgende Bilder mit hoher Ähnlichkeit. Die unten gekennzeichneten Schwellwerte ggf. anpassen.

<html>
<head>
<meta http-equiv="Content-Language" content="de">
<meta http-equiv="Content-Type" content="text/html; 
      charset=windows-1252">
<title>CAM</title>
</head>
<body>

<?php

function CmpN($a, $b)
{
 return ($a > $b) ? 1 : -1;
}

function CmpR($a, $b)
{
 return ($a > $b) ? -1 : 1;
}

// Aus Rot, Gelb, Blau Grauwert ermitteln
function getGreyValue ($r, $g, $b)
{
 return (0.299 * $r) + (0.587 * $g) + (0.114 * $b);
}

// prüfen auf Nachtbilder, d.h. Farblevel wird hier berechnet
function isnight($img) 
{
 $g=0;
 $w = imagesx($img);
 $h = imagesy($img);
 for ($ih=0;$ih<$h/2;$ih += 10) {
  $rgb = imagecolorat($img, $w/2, $ih);
  $r = ($rgb >> 16) & 0xFF;
  $g = ($rgb >> 8) & 0xFF;
  $b = $rgb & 0xFF;
  $g += ($b - $r)*($b - $r);
 }
 return $g;
}

// Grauwert-Delta berechnen
function compImg($img1,$img3)
{
 $g=0;
 $w = imagesx($img1);
 $h = imagesy($img1);
 for ($ih=0;$ih<$h;$ih += 25) {
  for ($iw=0;$iw<$w;$iw += 25) {
   $rgb = imagecolorat($img1, $iw, $ih);
   $r1 = ($rgb >> 16) & 0xFF;
   $g1 = ($rgb >> 8) & 0xFF;
   $b1 = $rgb & 0xFF;
   $g1 = getGreyValue($r1,$g1,$b1);
   $rgb = imagecolorat($img3, $iw, $ih);
   $r3 = ($rgb >> 16) & 0xFF;
   $g3 = ($rgb >> 8) & 0xFF;
   $b3 = $rgb & 0xFF;
   $g3 = getGreyValue($r3,$g3,$b3);
   $g += (int)(($g1-$g3)*($g1-$g3));
  }
 }
 return $g;
}

// löscht alte snapshots
function snapshot($p)
{
 print "del snapshot<br>\n";
 $fh = opendir($p); //Verzeichnis 
 $verzeichnisinhalt = array(); 
 while (true == ($file = readdir($fh))) 
 { 
  if (substr($file, -11)=="_TIMING.jpg") 
  //Abfrage nach gültigen Datenformat 
  { 
   $verzeichnisinhalt[] = $file; 
  } 
 }

 usort($verzeichnisinhalt, 'CmpR');
 $c = 0;
 for($i=0;$i<count($verzeichnisinhalt);$i++) 
 { 
   $f = $verzeichnisinhalt[$i];
   $c++;
   if ($c > 2)
   {
    unlink("$p/$f"); 
    print "del $f<br>\n";
   }
 }
}

function nightclean($p)
{
 print "nclean<br>\n";
 $fh = opendir($p); //Verzeichnis 
 $verzeichnisinhalt = array(); 
 while (true == ($file = readdir($fh))) 
 { 
  if (substr(strtolower($file), -3)=="jpg") 
  //Abfrage nach gültigen Datenformat 
  { 
   $verzeichnisinhalt[] = $file; 
  } 
 }
 usort($verzeichnisinhalt, 'CmpR');
 $img3=0;
 for($i=0;$i<count($verzeichnisinhalt);$i++) 
 { 
  $vi = $verzeichnisinhalt[$i];
  $img1 = @imagecreatefromjpeg("$p/$vi"); 
  if ($img1) {
   $g = isnight($img1);
   // level für Nachtbild auf 200 eingestellt, ggf. anpassen
   if ($g < 200)
   {
    if ($img3)
    {
     // vergleich zweier auf einander folgender Bilder
     $g = compImg($img1,$img3);
     print "$vi $g";
     // 100000 ist die Empflindlichkeit für Löschung gleicher Bilder
     // ggf. anpassen
     if ($g < 100000)
     {
      unlink("$p/$vi");
      print " del";
     }
     print "<br>\n";
    }
    $img3 = $img1;
   }
  }
 } 
}

snapshot(".");
nightclean(".");
?>

<br>ready
</body>
</html>
Veröffentlicht unter Allgemein | Verschlagwortet mit , , | Hinterlasse einen Kommentar

HTML5 Tag Cloud

HTML5Die bereits mehrfach verwendete 3D Tag Cloud soll nun mit HTML Hilfsmitteln realisiert werden.

Während wp-cumulus und SVG Tag cloud  Flash-Objekt und SVG zur Animation nutzen, verwendet HTML5 Tag Cloud das canvas Objekt. Leider unterstützen auch hier nicht alle Browser den HTML5-Standard. Der IE9 hat wieder ein grundsätzliches Problem mit der Anzeige.  Firefox 7 und Google Chrome V15 zeigen sehr gute Ergebnisse.

Die aktuelle Version der HTML Tag Cloud wird unter  http://code.google.com/p/html5tagcloud/ zum Download bereit gestellt.

Auch hier noch das Beispiel in Aktion (wenn der Browser die Anzeige erlaubt):

HTML5 Tag Cloud

Veröffentlicht unter Allgemein, Tag Cloud, Webdesign | Verschlagwortet mit , , , | Kommentare deaktiviert für HTML5 Tag Cloud

SVG Tag Cloud

Die 3D Tag Cloud ausschließlich mit SVG Hilfsmitteln zu realisieren, d.h. ohne Flashprogrammierung,  ist Inhalt dieses Beitrags.

Während bei wp-cumulus ein Flash-Objekt zur Animation benötigt wird, kann bei der SVG Tag Cloud dieses mit SVG Hilfsmitteln und SVG-Web realisiert werden. Leider unterstützen noch nicht alle Browser den SVG-Standard. Der IE9 hat ein grundsätzliches Problem mit der SVG Tag Cloud und bringt keine Anzeige.  Firefox 7 liefert eine dynamische Anzeige, stürzt nur leider zeitweise ab. Die besten und stabilsten Ergebnisse zeigt der Google Chrome V15. Vermutlich ist hier die SVG-Web Bibliothek optimal umgesetzt.

SVG Tag Cloud wurde auf Basis folgender Quellen realisiert:

Die aktuelle Version der SVG Tag Cloud wird unter  http://code.google.com/p/svgtagcloud/ zum Download bereit gestellt. Hier werden auch Aufbau und Variablenversorgung beschrieben.

Aber nun noch das Beispiel in Aktion (wenn der Browser die Anzeige erlaubt):

SVG Tag Cloud

Veröffentlicht unter Tag Cloud, Webdesign | Verschlagwortet mit , , , | 3 Kommentare