venerdì 28 agosto 2009

Un aiuto alla libertà di espressione in Italia


La Rai ha deciso di non mandare in onda il trailer di Videocracy, documentario sull'ascesa di Berlusconi. La decisione e' dell'Ufficio legale, per cui si tratterebbe di un trailer non conforme al principio del contraddittorio e che non rispetterebbe le convinzioni morali dei cittadini. Come se film, documentari o altre opere della libera espressione degli uomini dovessero sottostare tutte al principio del contradditorio! Me li vedo gli avvocati di Don Rodrigo, che nel tentativo di alleggerire la posizione del nobilastro, mettere in dubbio le virtù della povera Lucia.

giovedì 27 agosto 2009

Assalto a Google

Questa storia della Fieg (Federazione italiana editori di giornali) che ha presentato una segnalazione all’Autorità Antitrust italiana è francamente deprimente. E lo dico, drammaticamente, senza ironia. La federerazione degli editori, cioè i soggetti che per primi dovrebbero se non assecondare quantomeno comprendere meglio i nuovi fenomeni comunicativi della rete, brancola nel buio. Non sanno proprio di cosa parlano dato che basterebbe farsi un account su Big G per verificare l'inconsistenza delle accuse.Tale abuso sembrerebbe da individuarsi nella cirostanza che Google - sfruttando i contenuti degli editori - avrebbe costituito un “portale” attraverso il quale sottrarrebbe introiti derivanti dalla raccolta di pubblicità. A parte il fatto che su Google Reader e Google News io non vedo traccia di pubblicità ma poi gli editori sanno che cos'è un feed?? Sanno che se vuoi completare la notizia devi per forza leggerene il contenuto sul sito del giornale?? E tutto ciò non aumenta il numero dei contatti e conseguentemente il valore della pubblicità.In sostanza è vero che Google guadagna aggregando le news di altri, ma li fa anche guadagnare perchè porta traffico ai loro siti. Ma vaglielo un po' a spiegare a quelli del quaternario! Purtroppo però oltre all'ignoranza c'è di più; come ha ben detto sul suo blog G. SCorza "gli editori di giornali sono perfettamente consapevoli che i servizi di ricerca ed aggregazione di news possono costituire loro straordinari alleati ma non essendo ancora riusciti ad adeguare i propri modelli di business al mutato contesto tecnologico, hanno scelto la strada - in tutta onestà poco elegante - di una contestazione antitrust destinata a risolversi in una bolla di sapone per “batter cassa” e cercare aiuto". Ed io aggiungo, ma non bastano già le sovvenzioni che tutti i giornali prendono annualmente dallo stato??

mercoledì 19 agosto 2009

Motion Detection in Flash CS3

Cerando un po' in rete si trovano articoli sparsi sul rilevamento del movimento attraverso una webcam istallata sul nostro pc. In Flash con AS3 ci sono delle comode classi che semplificano un po' il lavoro.
Ho fatto qualche esperimento provando a individuare e seguire un oggetto in movimento davanti alla webcam.
Vediamo la classe:

package {
import flash.display.*;
import flash.utils.*;
import flash.media.*;
import flash.geom.*;
import flash.filters.BlurFilter;
import flash.events.Event;
import flash.events.StatusEvent;

public class cam extends MovieClip {
private var bitData:BitmapData = new BitmapData(160,120,false);
private var bitMap:Bitmap;
private var sbitData:BitmapData = new BitmapData(160,120,false);
private var sbitMap:Bitmap;
private var video:Video = new Video(160,120);
var mRect:Rectangle = new Rectangle(0,0,0,0);
var mShape:Shape = new Shape();
var mMirror:Matrix = new Matrix();

finora niente di speciale se non le dichiarazioni delle variabili; in particolare gli oggetti BitmapData che ci aiuteranno a manipolare l'immagine della nostra web cam
public function cam() {
mMirror.translate(-160,0);
mMirror.scale(1,-1)
mMirror.rotate(180 * Math.PI / 180);

var cam:Camera = Camera.getCamera();
cam.addEventListener(StatusEvent.STATUS, oncomplete);
video.attachCamera(cam);
mShape.x = 180;

addChild(video);
}
nel costruttore imposto una matrice che mi servira a riflettere a specchio le immagini della webcam e tutte le funzioni delle classi Cam e Video per catturare il flusso video.
private function oncomplete(e:StatusEvent) {
trace(e.code);
if (e.code == "Camera.Unmuted") {
addEventListener(Event.ENTER_FRAME, onFrame);

bitData.draw(video, mMirror);
bitMap = new Bitmap(bitData);
bitMap.x = 180;

addChild(bitMap);
}
}
l'evento oncomplete mi indica che la webcam è stata catturata e trasmette regolarmente in tal caso scatta l'evento onFrame.
private function onFrame(e:Event) {
bitData.draw(video,mMirror);
bitData.draw(sbitData,mMirror,null,"difference");
sbitData.draw(video);
bitData.applyFilter(bitData,new Rectangle(0,0,160,120),new Point(0,0),new BlurFilter(8,8));
bitData.threshold(bitData,new Rectangle(0,0,sbitData.width,sbitData.height), new Point(0,0), ">", 0xFF111111, 0xFFFF0000);
//
mRect = bitData.getColorBoundsRect(0x00FF0000, 0xFFFF0000, true);
mShape.graphics.clear();
if (mRect.right > 0) {
mShape.graphics.lineStyle(1,0x0000FF,1);
mShape.graphics.drawRect(mRect.left,mRect.top,mRect.right-mRect.left,mRect.bottom-mRect.top);
addChild(mShape);
}
}
}// class
}//Package
Ok. questa è la parte del codice più importante:
disegno su bitData il flusso video, sovrappongo sempre su bitData il flusso video disegnato in sbitData ma con un opzione di blending: difference. Questa serve a colorare di nero tutti pixel simili delle due immagini, in sostanza se non cambia nulla davanti alla camera i pixel saranno simili e quindi vederemo uno schermo nero. Da notare che utilizzo anche la matrice mMirror per capovolgere a specchio l'immagine così se muoviamo la mano verso destra non la vedremo muoversi nel video verso sinistra!
Applico poi un filtro di sfocatua, per eliminare i disturbi.
La funzione threshold colora di rosso tutti i pixel che superano una certa soglia di colore, cioè quelli che non sono neri. serve a circoscrivere gli oggetti in movimento.
Infine ricavo le misure di un rettangolo (bitData.getColorBoundsRect) che circoscrive le aree in rosso dell'immagine e lo disegno in una shape sul video.
Vedremo come questo rettangolo blu segua e circoscriva qualsiasi cosa si muova davanti alla nostra webcam.
Ciao

sabato 1 agosto 2009

Mappa concettuale in flash

Ho realizzato in Flash CS3 un simpatico software per disegnare mappe mentali. Lo trovate on-line a questo indirizzo ( che è poi un'altra delle mie presenze sparse in rete qua e là). Le istruzioni sono a fondo pagina ma l'utilizzo è veramente elementare! Buon lavoro e fatemi sapere cosa ne pensate.