Banner Govonis

Raster o vettoriale?
Programmi open source per la gestione delle immagini

Fotocamere digitali, videocamere, scanner e molti altri dispositivi elettronici sono ormai divenuti gli strumenti più usati per produrre immagine. La questione merita un minimo approfondimento poiché un’immagine digitale rappresenta qualcosa di veramente particolare.
Una ripresa fotografica, un video o la creazione di figure liberamente disegnate al computer altro non sono che un insieme assai complesso di valori numerici. La rielaborazione, la modifica e la correzione di questi dati matematici attraverso l’utilizzo di appositi programmi, permette di trasformare le immagini secondo le esigenze desiderate.
Un’immagine digitalizzata può essere raster oppure vettoriale. Nel primo caso è costituita da una matrice suddivisa ortogonalmente in piccolissimi quadratini chiamati pixel, le loro caratteristiche definiscono l’insieme; nel secondo sono descritti matematicamente tutti gli elementi primitivi quali punti, nodi, linee, poligoni, che uniti in forme più complesse contribuiscono a comporre l'intera immagine. La grafica raster è più adatta al mondo della fotografia mentre quella vettoriale è particolarmente utilizzata nei molteplici settori del disegno.

Grafica raster

Nel momento in cui una macchina fotografica digitale scatta una foto, cattura la luce con milioni di minutissimi sensori dotati di filtri cromatici capaci di selezionare le diverse sfumature delle radiazioni luminose rosse, verdi e blu. Il processo è simile al ruolo dei coni e dei bastoncelli, cellule specializzate per la visione della retina oculare umana. In pratica questi minuscoli componenti elettronici registrano la quantità di ciascuna banda cromatica e ne definiscono la tonalità e l’esatto posizionamento. Queste informazioni, codificate in valori numerici (bit) e opportunamente salvate, determinano le caratteristiche dei punti (pixel) dell’immagine digitale.
La suddetta tecnologia, chiamata RGB dalle iniziali di Red (rosso), Green (verde), Blue(blu), non è certamente l'unico metodo per definire le diverse gradazioni cromatiche di un’immagine. Nel mondo digitale esistono altre modalità denominate “spazi colore”, per esempio il CMYK per la stampa, ma sicuramente il sistema RGB è il più diffuso perché le schede grafiche lo utilizzano nativamente per la visualizzazione dei bit su tutti i display elettronici.
Come facilmente possiamo intuire se si desidera una maggiore qualità è necessario avere più dati numerici e una quantità superiore di pixel. La capacità da parte di una fotocamera di registrare milioni di informazioni è misurata in megapixel. Più pixel possiede un’immagine, più è possibile ingrandirla senza perdere troppa nitidezza logicamente questo procura un file finale più pesante da gestire e salvare.
La qualità di un immagine raster è dunque specificata dal numero dei pixel per una determinata unità di misura. Questo rapporto, per convenzione internazionale, utilizza il pollice inglese (2,54 cm) e si misura in DPI (Dot Per Inch) cioè punti visualizzabili per pollice. Maggiore è il valore più elevata sarà la qualità dell’immagine. Per realizzare una stampa di pregio è utilizzata normalmente una risoluzione non inferiore a 300 dpi mentre per raggiungere una buona visione sui display sono sufficienti 72 dpi.
Comprensibilmente se si riducono in proporzione le misure di una fotografia migliora la sua risoluzione, al contrario se ingrandiamo fino al dettaglio appare una spiacevole grana costituita dai quadratini dei pixel.


Formati raster

Secondo il loro impiego, le immagini di questo tipo possono essere salvate in differenti modalità. Descriviamo brevemente i sei formati più diffusi:
Formati non compressi - File pesanti che richiedono un dispendio consistente di memoria digitale.


    • Raw – Formato utilizzato nelle fotocamere per mantenere inalterata la qualità nativa e non affinata dell’immagine dopo lo scatto.


    • Bmp – Formato tipo Bitmap di proprietà Windows, non è coperto da brevetto e può essere utilizzato liberamente anche da programmi open source. Abbastanza rapido da aprire e da trasformare non supporta la trasparenza del canale alfa, assorbe parecchia memoria.


File compressi con procedura “lossless“ – Metodo di compressione delle immagine senza perdita di qualità e risoluzione. File più leggeri da elaborare.


    • Png – Portable Network Graphics, è uno dei formati compressi più utilizzati, poco pesante consente il salvataggio degli eventuali effetti di trasparenza del canale alfa.


    • Gif – Graphics Interchange Format, ha dei limiti nella rappresentazione dei colori ma gestisce bene la trasparenza e permette agevolmente la creazione di sequenze animate.


    • Tiff – Tagged Image File Format, utilizzato da scanner e stampanti, conserva dopo la compressione parecchie informazioni importanti dell’immagine. È consigliato per il fotoritocco anche se meno leggero dei precedenti formati.


File compressi con procedura “lossy“ – I file compressi di questo tipo perdono qualità ogni volta che vengono modificati e poi salvati. Poco adatti al fotoritocco, sono molto utilizzati nel web proprio grazie alla loro leggerezza.


    • Jpeg – Joint Photographic Expert Group, è il formato lossy più diffuso, attua una forte compressione soprattutto nella memorizzazione del colore e non salva la trasparenza del canale alfa. Ha un’efficace capacità nel limitare il peso dei file in termini di byte ma la diminuzione di qualità non è facilmente percepita dall’occhio umano sui display mentre si avverte nelle immagini stampate.


La grafica raster è impiegata nei seguenti diversi settori:

    • Fotoritocco e fotocomposizione
    • Disegno e illustrazione digitale
    • Gestione immagini per il web
    • Creazione modellistica e mockup art


Fra i software multipiattaforma di livello professionale ricordiamo:

    • Gimp – Adatto per il fotoritocco e la fotocomposizione, ha raggiunto un notevole sviluppo nelle più recenti versioni, possiede un completo pacchetto di strumenti grafici ed è arricchito da un gran numero di filtri e di plugin.


    • Krita – Programma indubbiamente versatile per il disegno digitale, è stato creato per specialisti nel campo del concept art, pittura digitale, illustrazione e fumetti. Indicato anche per il fotoritocco, consente agevolmente di utilizzare molti spazi colore compresa la quadricromia CMYK per la stampa.


    • MyPaint – È un software libero ideato per illustrare e disegnare con le tavolette grafiche. Nelle ultime versioni di Gimp è inserito come strumento dedicato per la pittura digitale.


Grafica vettoriale

La grafica vettoriale ha un notevole utilizzo nell'editoria, nell'architettura, nell'ingegneria e nella grafica più diversa realizzata al computer, compresa la modellistica 3D. L’immagine vettoriale si differenzia radicalmente da quella raster e può essere ingrandita o rimpicciolita all’infinito senza comprometterne la definizione. Questo è possibile grazie a una metodologia descrittiva delle forme che esclude l’uso dei pixel. L'esempio più evidente sono i font per la scrittura digitale. Quasi tutti i tipi di caratteri sono in formato vettoriale, ciò consente all’utente di variare a piacimento le dimensioni dei font senza mai pregiudicarne la risoluzione.
Per realizzare figure con queste peculiarità è necessario utilizzare dei software capaci di elaborare dati e valori matematici indispensabili a descrivere punti, linee, curve parametriche, attributi di spessore, colore e trasformazioni geometriche quali traslazioni, rotazioni e ridimensionamenti. L’immagine vettoriale quindi è un insieme di elementi semplici a loro volta assemblati in strutture più complesse che determinano la forma finale voluta.
Un vantaggio fondamentale di questo tipo di grafica è la leggerezza, un file vettoriale rispetto al raster occupa meno spazio sul supporto di memorizzazione poiché i dati descrittivi dell’immagine sono decisamente meno.
Una foto, un disegno scansionato o qualunque altro file di tipo raster può essere vettorializzato. L’operazione purtroppo non è così semplice e possono sorgere delle difficoltà a danno della morbidezza dell’immagine. In pratica sono metodi di rappresentazione digitale differenti e il processo, specialmente se applicato su un file fotografico, semplifica molto le tinte sfumate convertendole in forme schematizzate dal colore omogeneo e dai contorni netti. In alcuni lavori grafici questo tipo di semplificazione torna utile e permette il recupero della qualità della risoluzione e della compattezza cromatica. A questi vantaggi infine si unisce la possibilità di salvare nei formati vettoriali l’effetto di trasparenza così fondamentale nella creazione di loghi e scritte.
Al contrario di quanto appena esaminato, i programmi di grafica vettoriale consento un’efficace trasformazione dei file vettoriali in raster (.jpeg, .png o altri). La conversione, piuttosto agevole, muta le caratteristiche del file originario per acquisire automaticamente quelle dei formati in pixel.


Formati vettoriali

I programmi di grafica vettoriale, in particolare quelli proprietari, solitamente utilizzano un loro formato predefinito e privato di salvataggio come il .dwg per Autocad o il .ai per Adobe Illustrator. Questi tipi di file, a cui potremmo aggiungerne altri, nascono per essere aperti solo dai software nativi. La scelta ha l’intento di garantire l’esclusività delle modifiche e delle successive versioni grafiche in modo da penalizzare la concorrenza commerciale e i programmi open source.
Per lavorare con software libero dunque occorre conoscere i formati vettoriali più idonei all’uso esteso e al mantenimento perfetto della scalabilità illimitata delle immagine.
Tra i formati più utilizzati descriviamo brevemente i seguenti:


    • SVG - Acronimo di ”Scalable Vector Graphics”, è un formato standar aperto, molto diffuso e raccomandato dal World Wide Web Consortium (W3C). Utilizzato in tutti i principali programmi open source di grafica vettoriale, supporta non solo la creazione di elaborati scalabili per la stampa e il web ma anche per l’animazione. In pratica, permette il ridimensionamento a piacere di qualunque oggetto grafico e consente la visualizzazione dell’immagine, conservandone la qualità, su differenti supporti (stampa, video, plotter, schermo di cellulare ecc.). I file SVG, molto complessi e ben descritti, hanno sullo schermo una resa perfetta e ottengono performance incredibili compreso il settore più all’avanguardia del taglio laser.


    • EPS - “Encapsulated PostScript” è un formato vettoriale creato da un codice di programmazione specifico per la rappresentazione digitale di elementi grafici. Questo tipo di file racchiude in se la descrizione di tutte le componenti grafiche dell’immagine (forme, colori, font), è dunque comodamente scalabile all’infinito senza danno alla risoluzione delle figure. Ciononostante, i più importanti programmi per la creazione di immagini vettoriali prediligono formati diversi, come i file SVG ormai utilizzati e supportati diffusamente. È possibile convertire il formato EPS in SVG con diversi software open source di grafica vettoriale anche utilizzabili su sistemi operativi proprietari.


    • PDF - Formato creato da Adobe nel 1993, è l’acronimo di “Portable Document Format”. Un documento di testo e immagini salvato con questa estensione ha la caratteristica di poter essere decodificato e modificato senza perdita di qualità anche da software e hardware diversi da quelli che lo hanno originato. Molto diffuso per questi motivi, è divenuto un formato standard aperto, libero da diritti Adobe e disponibile per chiunque desideri sviluppare applicazioni idonee alla lettura e scrittura del file. Un PDF racchiude una completa descrizione dei componenti bidimensionali del documento come indicazioni di proprietà (Titolo, Autore, ecc.), testo, stili di carattere (font), immagini e oggetti di grafica vettoriale 2D e, dopo il rilascio di Acrobat 3D, può incorporare anche elementi tridimensionali. Nel tempo il PDF è stato sviluppato in una serie di sottoformati fra i quali ricordiamo: PDF/A per l'archiviazione a lungo termine, PDF/X specifico per le arti grafiche e la prestampa e il PDF/E per la documentazione di tipo ingegneristico.

La grafica vettoriale è impiegata nei seguenti settori professionali:

    • Editoria digitale (desktop publishing)
    • Disegno tecnico industriale e architettonico
    • Grafica pubblicitaria
    • Grafica tridimensionale e di animazione

Fra i software open source che usano file vettoriali ricordiamo:

    • Blender - È un software libero di modellazione, rigging, animazione, montaggio video, composizione e rendering di immagini tridimensionali e bidimensionali. Dispone inoltre di funzionalità per mappature UV, simulazioni di fluidi, di rivestimenti, di particelle, altre simulazioni non lineari e creazione di applicazioni/giochi 3D. Blender consente l’elaborazione di tantissimi formati raster e vettoriali poiché ha un potente insieme di funzionalità comparabili, per caratteristiche e complessità, solo ad altri famosi programmi proprietari. Programma professionale e multipiattaforma, è stato utilizzato per la realizzazione di famosi film d’animazione.


    • FreeCAD -  Programma open source per Windows, Mac e Linux  è destinato all’ingegneria e al disegno di prodotti per uso meccanico. Utilizzato anche in altri settori come la progettazione architettonica, FreeCad è espandibile con numerose estensioni scaricabili gratuitamente. Ha un ambiente sketch corredato di strumenti per disegnare forme in 2D vincolate. Questa funzionalità consente di vincolare in differenti modi le figure tracciate per poi usarle come schema per la realizzazione in 3D.


    • Inkscape – Molto versatile e potente, è riconosciuto come uno dei migliori software open source di grafica vettoriale. Possiede un’interfaccia intuitiva con strumenti operativi simili a quelli dei suoi concorrenti commerciali Illustrator e Corel Draw. Crea ed elabora illustrazioni, diagrammi, loghi e altre immagini complesse in SWG e consente la gestione di diversi formati sia liberi che proprietari. Il programma malauguratamente salva soltanto il profilo colore RGB e non il CMYK, specifico per la stampa professionale. Per risolvere l’inconveniente conviene lavorare con Inkscape in vettoriale e poi importare il file finito in Scribus o Krita, programmi che consentono un’ottima gestione della quadricromia. Questo limite potrà essere superato in futuro con lo sviluppo del progetto ma al momento purtroppo è il prezzo da pagare per avere tutto gratuitamente.


    • LibreCAD - Gratuito e multipiattaforma, è un programma per disegnare in Cad 2D. Possiede tutte le funzionalità e tutti gli strumenti necessari per creare e disegnare comodamente qualsiasi oggetto. Particolarmente indicato per elaborati di ingegneria e architettura, è una delle migliori alternative ai software proprietari dedicati a questo settore.


    • Scribus – Programma per l’editoria in rapido e costante sviluppo, non ha nulla da invidiare ai suoi rivali commerciali. Ha caratteristiche ampiamente professionali e permette, grazie a un’interfaccia intuitiva, l’agevole impaginazione di prodotti tipografici (dépliant, riviste, giornali, libri). Scribus riconosce ed elabora molti dei formati grafici più diffusi tra cui l’SVG. Il programma include un completo supporto per la quadricromia (CMYK) e per la gestione dei profili colore ICC. È multipiattaforma e disponibile in più di 24 lingue.

 

Il primo programma in C sarà un programma abbastanza semplice, che stampa
sullo schermo della console "Hello world!" ed esce.

 Vediamo il codice:
/* hello.c */
#include <stdio.h>
int main(void) {
printf ("Hello world!\n");
return 0;
}


Una volta scritto questo codice con il nostro editor preferito, salviamolo come hello.c
e compiliamolo con il nostro compilatore.

Se usiamo GCC:
gcc -o hello hello.c

e per eseguirlo ./hello

 

 

 

Cos'è il Software Libero?


Questa definizione ha lo scopo di chiarire quali sono i requisiti che un certo programma deve soddisfare perché lo si possa considerare “software libero”. La definizione viene occasionalmente sottoposta a revisioni per chiarificarla. Per analizzare le modifiche effettuate basta leggere la sezione Storia nel seguito.

Il “Software libero” è una questione di libertà, non di prezzo. Per capire il concetto, bisognerebbe pensare alla “libertà di parola” e non alla “birra gratis” [NdT: il termine free in inglese significa sia gratuito che libero, in italiano il problema non esiste].

L'espressione “software libero” si riferisce alla libertà dell'utente di eseguire, copiare, distribuire, studiare, cambiare e migliorare il software. Più precisamente, significa che gli utenti del software godono delle quattro libertà fondamentali:

* Libertà di eseguire il programma, per qualsiasi scopo (libertà 0).
* Libertà di studiare come funziona il programma e di modificarlo in modo da adattarlo alle proprie necessità (libertà 1). L'accesso al codice sorgente ne è un prerequisito.
* Libertà di ridistribuire copie in modo da aiutare il prossimo (libertà 2).
* Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti da voi apportati (e le vostre versioni modificate in genere), in modo tale che tutta la comunità ne tragga beneficio (libertà 3). L'accesso al codice sorgente ne è un prerequisito.

Un programma è software libero se l'utente ha tutte queste libertà. In particolare, se è libero di ridistribuire copie, con o senza modifiche, gratis o addebitando delle spese di distribuzione a chiunque ed ovunque. Essere liberi di fare queste cose significa (tra l'altro) che non bisogna chiedere o pagare nessun permesso.

Bisogna anche avere la libertà di fare modifiche e usarle privatamente nel proprio lavoro o divertimento senza doverlo dire a nessuno. Se si pubblicano le proprie modifiche, non si deve essere tenuti a comunicarlo a qualcuno in particolare o in qualche modo particolare.

La libertà di usare un programma significa libertà per qualsiasi tipo di persona od organizzazione di utilizzarlo su qualsiasi tipo di sistema informatico, per qualsiasi tipo di attività e senza dover successivamente comunicare con lo sviluppatore o con qualche altra entità specifica. Quello che conta per questa libertà è lo scopo dell'utente, non dello sviluppatore; come utenti potete eseguire il programma per i vostri scopi; se lo ridistribuite a qualcun altro, egli è libero di eseguirlo per i propri scopi, ma non potete imporgli i vostri scopi.

La libertà di ridistribuire copie deve includere le forme binarie o eseguibili del programma e anche il codice sorgente, sia per le versioni modificate che non modificate (distribuire programmi in formato eseguibile è comodo per avere sistemi operativi liberi facili da installare). È legittimo anche se non c'è alcun modo di produrre una forma binaria o eseguibile (dal momento che alcuni linguaggi non supportano questa caratteristica), ma si deve avere la libertà di ridistribuire tali forme nel caso si trovi o si sviluppi un modo per farlo.

Affinché le libertà 1 e 3 (libertà di fare modifiche e di pubblicare versioni migliorate) abbiano senso, si deve avere accesso al codice sorgente del programma. Perciò, l'accessibilità al codice sorgente è una condizione necessaria per il software libero. Il “codice sorgente” deliberatamente offuscato non è vero codice sorgente e non può essere considerato tale.

La libertà 1 comprende la libertà di utilizzare una versione da voi modificata anziché l'originale. Se il programma è distribuito in un prodotto che, per scelta progettuale, esegue le versioni modificate da una specifica persona o azienda ma si rifiuta di eseguire quelle modificate da voi (tecnica nota come “tivoization” o come “lockdown” o come “secure boot” secondo la discutibile definizione che ne danno i suoi sostenitori), allora la libertà 1 diventa solo teorica. Ciò non è sufficiente. In altre parole, la versione eseguibile di questi programmi non è software libero anche se il codice sorgente da cui sono stati ottenuti è libero.

Un importante modo di modificare un programma è quello di includervi funzioni e moduli liberi già esistenti. Se la licenza del programma prevede che non si possano includere moduli già esistenti (nonostante abbiano una licenza appropriata), ad esempio se richiede che voi possiate aggiungere solo codice di cui detenete il copyright, allora la licenza è troppo restrittiva per essere considerata libera.

La libertà 3 comprende la libertà di usare e rilasciare le versioni modificate come software libero. Una licenza libera può anche permettere altri modi di distribuzione; insomma, non c'è l'obbligo che si tratti di una licenza con copyleft. Tuttavia, una licenza che imponesse che le versioni modificate non siano libere non si può categorizzare come licenza libera.

Queste libertà per essere reali devono essere permanenti e irrevocabili fin tanto che non si fa qualcosa di sbagliato: se lo sviluppatore del software ha il potere di revocare la licenza o di sostituirla retroattivamente con una diversa anche senza che l'utente sia causa di tale revoca, il software non è libero.

Tuttavia, certi tipi di regole sul come distribuire il software libero sono accettabili quando non entrano in conflitto con le libertà principali. Per esempio, il copyleft, noto anche impropriamente come "permesso d'autore", è (detto in poche parole) la regola per cui, quando il programma è ridistribuito, non è possibile aggiungere restrizioni per negare ad altre persone le libertà principali. Questa regola non entra in conflitto con le libertà principali, anzi le protegge.

“Software libero” non vuol dire “non-commerciale”. Un programma libero deve essere disponibile per uso commerciale, sviluppo commerciale e distribuzione commerciale. Lo sviluppo commerciale di software libero non è più inusuale: questo software commerciale libero è molto importante. Si può ottenere software libero pagandolo o non pagandolo, ma, a prescindere da come lo si è ottenuto, rimane sempre la libertà di copiare e modificare il software, persino di venderne copie.