1 / 84

Acquisire ed elaborare immagini - Prima parte

Acquisire ed elaborare immagini - Prima parte. Luca Capisani. SOMMARIO. Acquisizione immagini con Network Camera Rete Ethernet e protocollo HTTP Sistema operativo Linux Rappresentazione delle immagini Richiedere/Ottenere immagini con HTTP ESEMPIO: Configurare la telecamera in diretta

Télécharger la présentation

Acquisire ed elaborare immagini - Prima parte

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Acquisire ed elaborare immagini -Prima parte Luca Capisani

  2. SOMMARIO • Acquisizione immagini con Network Camera • Rete Ethernet e protocollo HTTP • Sistema operativo Linux • Rappresentazione delle immagini • Richiedere/Ottenere immagini con HTTP • ESEMPIO: Configurare la telecamera in diretta • Esempio: GIMP e le immagini esadecimali

  3. SOMMARIO - 2 • La programmazione nel linguaggio C • Blocchi fondamentali di un programma C • ESEMPI: • Un semplice programma C • Le strutture di controllo del linguaggio C • Le librerie di rete di Linux per il linguaggio C • Come acquisire una immagine da telecamera • Come salvare l’immagine su un file

  4. Acquisizione immagini con Network Camera • Scambio di immagini • Mediante Ethernet/WI-FI Internet • Accesso da qualunque dispositivo che accede alla rete Internet!

  5. Network Camera: quali risorse utilizza? • La rete Ethernet • La rete Internet • I protocolli TCP/IP • Il protocollo Client/Server • Browser per Internet!!!

  6. Network Camera: vantaggi?Perché è una soluzione interessante? • Vecchie telecamere: connessioni particolari • Servivano schede apposite, difficili da trovare e programmare • Mancavano i drivers per applicazioni particolari • Tali interfacce erano spesso analogiche e costose • Un solo utilizzatore alla volta!!! • Nuove telecamere: Ethernet e WI-FI • Ethernet e Wi-FI supportate da buona parte dei sistemi • Bassissimo costo di realizzazione della connessione • Ottima veliocità di trasmissione dati • Molto semplice condividere la telecamera tra più utenti • Non serve software dedicato!

  7. Network Camera: Configurazione • Per poter funzionare in rete bisogna: • Impostare l’accesso di utenti • Configurare l’indirizzo IP • Configurare il tipo di video desiderato • Configurare la luminosità e i colori • L’utente usa un calcolatore da configurare: • Indirizzo IP del calcolatore • Software in grado di acquisire e visualizzare le immagini/ il video

  8. Network Camera: Configurazione utenti Serve per • Impostare chi può usare la telecamera • Evitare che venga usata da chi non è autorizzato (la rete è pubblica!) • Evitare che chiunque possa cambiare le impostazioni

  9. Network Camera: Configurazione Indirizzo IP • La telecamera è connessa su una rete condivisa da tanti dispositivi • Deve avere un indirizzo IP unico, non utilizzato da altri dispositivi, coerente con la rete a cui è connessa • Esempio: 192.168.121.12 • La netmask specifica quali altri indirizzi IP appartengono alla stessa rete: • Esempio 255.255.255.0 significa che appartengono alla rete tutti gli indirizzi che iniziano con 192.168.121 • Sbagliando l’indirizzo IP non è possibile usare la telecamera!

  10. Network Camera: Formato video/immagine Permette di: • Impostare la risoluzione dell’immagine • Es. 320x240 • Il tipo e la qualità dell’immagine • Es. Dimensione del file ecc. • Quante immagini al secondo vengono spedite • Es. 15 frame/secondo

  11. Network Camera: Configurazione colori e luminosità • Configurazione colori • Da bianco e nero al massimo risalto dei colori • Luminosità • Va impostata in base a quanta luce c’è nell’ambiente da filmare • Contrasto • Permette di “sbiadire” l’immagine oppure “renderla più viva”

  12. Network Camera: Collegamento e configurazione calcolatore Client • Schema di collegamento: Switch Ethernet Altri Utenti Utente IP: 192.168.0.34 MASK: 255.255.255.0 • Il client deve avere: • Indirizzo IP • Netmask • Devono essere coerenti con la rete di appartenenza! IP: 192.168.0.1 MASK: 255.255.255.0

  13. Rete Ethernet e protocollo HTTP • Sono supportati da TUTTI gli apparecchi in grado di connettersi alla rete! • HTTP: permette lo scambio di FILES: • Il Client (utente) chiede al server (telecamera) un file • Il server risponde con il file richiesto (se esiste)

  14. Come avviene lo scambio di dati sulla rete • Ciascun livello (applicazione TCP, IP, Scheda Rete) ha una propria specifica funzione. • L’applicazione traduce il filmato in una serie di “pacchetti di dati” da spedire in rete Applicazione Applicazione TCP TCP IP IP Scheda Rete Scheda Rete

  15. Come avviene lo scambio di dati sulla rete (2) • Il flusso di dati viene suddiviso in “Pacchetti” • Ogni pacchetto attraversa la rete indipendentemente dagli altri • Un pacchetto può essere perso in tutto o in parte durante il percorso • Ogni pacchetto contiene tutte le informazioni rilevati sul percorso Applicazione Applicazione TCP TCP IP IP Scheda Rete Scheda Rete

  16. A cosa serve il protocollo IP • Quando la rete è complessa (es. Internet) non è facile capire quale strada connette meglio due utenti • La rete IP serve, come una guida telefonica, per trovare a che rete è connesso il destinatario!!!! • Ogni router ha una rubrica telefonica che dice dove vanno i pacchetti a seconda del destinatario! 13.33.x.x?? 13.33.x.x ???? 193.201.x.x 13.33.x.x

  17. A cosa serve il protocollo TCP • TCP serve per: • Mantenere una connessione tra telecamera e client • Controllare che non siano stati persi dati sulla rete • Permettere tanti flussi di dati contemporanei • Facilitare l’applicazione nel gestire la trasmissione

  18. Cos’è una porta? Che porta useremo? • E’ il meccanismo per poter permettere a tante applicazioni di usare la stessa architettura di rete senza interferenze!!!! TELNET HTTP POP3 Porta 80: è la porta predefinita per le comunicazioni HTTP alla base del trasferimento delle pagine WEB tra i server WWW e i client (utenti). Viene usata dall’applicazione Internet Explorer (o Mozilla) e dal rispettivo server (Telecamera, Apache o Microsoft Internet Information server). P23 P80 P110 Applicazione TCP IP Scheda Rete

  19. Possiamo vedere il traffico della rete? • Con il programma gratuito wireshark, si può vedere quali informazioni vengono ricevute e quali vengono spedite dal nostro PC:

  20. Il protocollo HTTP: a cosa serve? • Il protocollo HTTP (HyperText Transfer Protocol) • permette di trasferire dei files da un server HTTP (Apache, Internet Information Server, Network Camera) a un client HTTP (MozillaFirefox, Internet Explorer) • Permette di controllare se il richiedente è autorizzato a ricevere il file • Fornisce informazioni supplementari riguardo al file trasferito e alle caratteristiche del client e del server.

  21. Scambio di richieste risposte tra PC (client) e telecamera (server) • Richiesta: GET /mjpg/image.jpg HTTP/1.1 Host: 192.168.121.12 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 Accept: image/png,image/*;q=0.8,*/*;q=0.5 Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://192.168.121.12/view/view.shtml?imagePath=/mjpg/video.mjpg&size=1 Authorization: Basic cm9vdDpmcmFuY2VzY2E= Nome del file richiesto e vers. HTTP Indirizzo IP del server Informazioni sull’applicazione richiedente il servizio Password di autorizzazione

  22. Scambio di richieste risposte tra PC (client) e telecamera (server) • Risposta: HTTP/1.0 200 OK Cache-Control: no-cache Pragma: no-cache Expires: Thu, 01 Dec 1994 16:00:00 GMT Connection: close Content-Type: multipart/x-mixed-replace; boundary=--myboundary --myboundary Content-Type: image/jpeg Content-Length: 29423 ......JFIF.. Il server risponde che la richiesta è corretta! Ci informa che il contenuto richiesto è una immagine JPEG ed è lunga 29423 bytes!!!! Il JPEG inizia a essere trasmesso!!!!

  23. Qual è la procedura per farsi mandare una immagine? • Mi connetto al server • Applicazione con protocollo HTTP • Manda una richiesta alla porta 80 del server • Il server accetta la connessione • Invio una richiesta GET /mjpg/image.jpg HTTP/1.1 • Specifico la password e altre info • Il server risponde con le sue informazioni dalla porta 80 alla mia porta (che ha un numero a caso) • Alla fine comincia ad inviare i pezzi del file richiesto, • Tipicamente circa 1500 bytes alla volta

  24. Il Sistema Operativo Linux • E’ composto da tantissimi blocchi, i quali sono sviluppati da gruppi indipendenti di programmatori volontari • E’ facilmente programmabile per interfacciarsi con la rete • La configurazione della rete è semplice • Ci sono tanti strumenti che aiutano in caso di problemi • Offre gratuitamente tanti tool per la programmazione: • Compilatore C, C++, Java … • Editor • Librerie per fare qualunque cosa • Interagire con l’utente • Accedere alla rete • Convertire le immagini • Leggere e Memorizzare i dati sul disco

  25. Linux: componenti fondamentali • Distribuzioni (Chi mette assieme le componenti fondamentali) • Kernel (il cuore del sistema operativo) • File system (gestisce i files di sistema e utenti) • Utenti e amministratore (Ciascuno ha le proprie regole!) • Interfaccia grafica (NON è parte fondamentale!) • Terminale (è il modo più diretto per accedere al sistema) • Sistema di rete (Offre tutti gli strumenti indispensabili e oltre!) • I pacchetti software (sono sempre accessori rispetto al “piccolo kernel”)

  26. Distribuzioni • Dato che Linux è composto da tantissimi piccoli blocchi programmati indipendentemente • Alcune importanti organizzazioni si occupano di “mettere assieme” i blocchi • Per rendere più semplice ed immediata l’installazione • Per favorire gli utenti non esperti • Per assicurarsi che il sistema complessivo funzioni bene • Per tener traccia di tutti gli ultimi aggiornamenti sulla sicurezza • Le più famose: • Mandriva, Ubuntu, Fedora, SuSE, Knoppix, Debian, Gentoo, Slackware… • Elenco completo: http://www.linux.org/dist/list.html

  27. File system • E’ l’insieme di tutti i programmi e dello spazio di memoria che servono per • Memorizzare i files • Evitare perdita di dati • Ritrovare velocemente i dati • Lo spazio di memoria di Linux è tipicamente organizzato in 3 partizioni • root, “/”, mantiene l’albero principale delle directory • /home, mantiene i files dell’utente • swap, mantiene i files temporanei

  28. Gli utenti e l’amministratore • In linux, ogni programma • Può essere creato solo da alcuni utenti • Può essere installato solo dall’amministratore o da chi ne ha il permesso • Può essere eseguito solo da chi ne ha il permesso • In linux, ogni file • Può essere letto solo da chi ne ha il permesso • Può essere scritto/cancellato solo da chi ne ha il permesso • Può essere eseguito (se è un programma) solo da chi ne ha il permesso • In linux, ogni risorsa (rete, periferiche, audio,video, …) • Può essere utilizzata solo da chi ne ha il permesso • L’amministratore (root) ha sempre tutti i permessi e può decidere i permessi degli altri

  29. Gli utenti e l’amministratore (2) • Ogni utente: • Ha una “username” denominata login • Ha una password • Ogni utente può: • Cambiare la propria password • Cambiare i permessi dei propri files, dei propri programmi e delle proprie risorse • Gli utenti non possono: • Vedere alcuna password • Utilizzare programmi, files, risorse assegnate ad altri • L’amministratore (root) può: • Modificare le password di chiunque (non le può vedere) • Utilizzare e modificare qualunque programma, files o risorsa (rischio!!!)

  30. Il terminale • E’ il modo più diretto per interagire con tutte le funzioni del sistema operativo • È dotato di un prompt che risponde ai comandi dell’utente • Il prompt è gestito dalla shell che aiuta l’utente a • Velocizzare le operazioni noiose • Ricordare tutti i comandi utilizzati • Effettuare alcune operazioni automaticamente • Gestire l’interazione con i programmi

  31. Il comando sudo • Entrare come amministratore (root) è pericoloso: • Si possono cancellare, distruggere files e configurazioni • Si può resettare la macchina senza autorizzazioni • Soluzione: è meglio usare l’utente root solo quando è necessario!!! • Solo alcuni comandi richiedono di essere amministratore • Basta scrivere prima del comando desiderato, il comando sudo e inserire la password: • Esempio: • enzo@www-server:~$ sudo ifconfig • [sudo] password forenzo: **** • ……… • NB: la password non appare a terminale!!!

  32. Impostare gli indirizzi di rete • Un Computer (Host IP), per connettersi alla rete, ha bisogno di: • Un Indirizzo IP e una netmask • Un indirizzo per il default gateway • Un indirizzo del server DNS • Tale indirizzo serve per tradurre i nomi degli host con gli indirizzi IP • La scheda di rete viene individuata con la sigla eth0

  33. Impostare gli indirizzi di rete (2) • Indirizzo IP e netmask: • sudo ifconfig eth0 192.168.x.x netmask 255.255.x.x • Default gateway: • sudo route del default (cancella una route esistente) • sudo route add default gw 192.168.x.x • Server DNS: • sudo echo nameserver 151.99.x.x > /etc/resolv.conf

  34. I pacchetti software • Tutte le distribuzioni sono composte da pacchettisoftware: • Spesso l’istallazione di alcuni pacchetti rende indispensabile l’installazione di altri pacchetti, struttura gerarchica!!! Kernel Glibc (librerie) Bash (shell) libjpeg (x le immagini!) XORG (amb. Grafico) netfilter (firewall) CUPS (stampanti) OpenOffice (Word, Excel,…)

  35. Installare il software da Internet: APT-GET INSTALL • Scarica da Internet e installa automaticamente uno o più pacchetti software andando a cercare automaticamente le dipendenze • Esempio: installazione editor GEDIT • sudo apt-get install gedit • Funziona solo sulle distribuzioni Debian-Ubuntu • Mandriva: urpmi

  36. Visualizzazione di un file con CAT • E’ il modo più veloce per visualizzare un file da terminale • Comando: cat /home/lab/pippo • Visualizza il file pippo nella cartella /home/lab

  37. Visualizzazione di un file esadecimale con HEXDUMP • E’ il modo più veloce per visualizzare un file in esadecimale • Comando: hexdump /home/lab/pippo • Visualizza il file pippo nella cartella /home/lab

  38. Editing di un file con GEDIT • E’ un editor che ha funzioni specifiche per programmare. • Si avvia da terminale con il comando gedit &

  39. Rappresentazione delle immagini • Ciascuna immagine è rappresentata nel computer per mezzo di numeri • L’area viene suddivisa in tanti piccoli quadrati colorati • Ci sono metodi efficienti per la memorizzazione • Vediamone i dettagli.

  40. Come viene rappresentata una immagine? ZOOM! • Una immagine è una sequenza di tantissimi puntini colorati detti pixel (PICture ELement)

  41. Dimensioni dell’immagine • Una immagine è una grande matrice di pixel: • La dimensione è il numero di pixel orizzontali x il numero di pixel verticali: • 640x480 • 800x600 • 102x768 • Ecc.

  42. Colorazione pixel RGB! • Ogni pixel ha un colore unico! • Il colore del pixel è determinato in base a tre componenti fondamentali: • Rosso – R: 0-255 • Verde – G: 0-255 • Blu – B: 0-255 • In questo modo si possono ottenere più di 16 milioni di colori diversi (per ciascun pixel dell’immagine)!

  43. Formati di immagine: cosa sono? • Considerando il numero di pixels e il numero di colori di ciascun pixel, una immagine occupa tantissimo spazio. • Una immagine si può memorizzare interamente così com’è • Formato RASTER: occupa molto spazio! • Esempio BMP • Oppore si può memorizzare in modo da ridurre lo spazio occupato: • Formato lossy. Esempio: JPG

  44. I numeri esadecimali • Sono rappresentazioni particolari dei numeri binari. • Ogni numero è una cifra da 0 a F che corrisponde ai numeri da 0 a 15

  45. Rappresentazione RGB esadecimale • Esempio: il pixel • È un mix dei colori: • Rosso: 224/255 Verde: 36/255 Blu: 36/255 • Si rappresenta su tre bytes RGB. • Una rappresentazione semplice si ha in hex • E02424 (E0 (224), 24 (36), 24(36))

  46. ESEMPIO: Configurare la telecamera in diretta • 1 coppia alla volta • Accedere alla telecamera con la userid e la password di default • Impostare un indirizzo IP e una netmask ammissibile per la rete • Verificare e cambiare le impostazioni immagine/video • Controllare che le modifiche abbiano effetto • Non cambiare le password

  47. Esempio: GIMP e le immagini esadecimali • Aprire GIMP con il comando gimp & da terminale • Creare una immagine nuova 1x1 pixel • Immettere un pixel di un certo colore RGB • Salvare l’immagine in uno dei seguenti formati: • PBM PGM XPM PPM BMP • Verificare con hexdump che cosa è stato scritto su disco • Ripetere l’esercizio con una immagine 3x3

  48. Creare una immagine di pochi pixel

  49. Impostare un colore

  50. Colorare un pixel con quel colore, gli altri in nero

More Related