Scheda quasi pronta… :-)

Ho appena finito di compilare la scheda del CFA (Campo di Formazione Associativa), l’ultimo campo previsto per l’iter di formazione (non permanente) per un capo scout!

Adesso dovrà passare per un paio di mani, ricevere qualche firma e poi partire per la sede centrale (a Roma).

Penso che nella vita non bisogna mai aver fretta e, come ho scritto nella scheda di presentazione, in questo periodo sentivo – finalmente – la necessità di andare ad approfondire gli ultimi aspetti del metodo scout.

Non ci sto andando per poter dire “io ho fatto questo, sono anche questo e bla bla bla!”. Non me n’è mai fregato un… a dispetto di tanti altri (tristemente…)!

Speriamo mi prendano così a Dicembre mi faccio una settimana tra le montagne campane… :joy:

Emanuele

Come equalizzare una immagine in MATLAB.

Prima di osservare il codice facciamo una piccola premessa spiegando di cosa stiamo parlando e per farlo prendiamo in considerazione un’immagine in bianco e nero come quella dell’esempio sottostante.

Equalizzare una immagine

L’operazione di equalizzazione consiste nell'”allargarela curva dell’istogramma in modo da sfruttare l’intera scala di grigi disponibile. Questo permette una migliore distinzione degli oggetti (l’immagine risulta più contrastata) e solitamente può esser d’aiuto nell’elaborazione di un’immagine sottoesposta o sovraesposta.

A livello teorico, l’equalizzazione tenta di realizzare un istogramma piatto, portando verso una soglia uguale tutti i livelli di grigio, cosa ovviamente non possibile quando lavoriamo nel discreto.

Equalizzazione nel discreto

Matematicamente l’algoritmo tenterà di definire inizialmente la densità di probabilità p(rj) di ogni livello di grigio e poi costruirà la nuova immagine attraverso una funzione di passaggio basata su questo valore, punto per punto.

% Equalizzazione di una immagine.
% Per l'esempio sfruttiamo una immagine in scala di grigi presente
% di default in MATLAB.

% Carico l'immagine:
im=imread('cameraman.tif');
% Imposto il numero di livelli di grigio:
L=256;
% Salvo in due variabili la dimensione dell'immagine:
[m n]=size(im);
% Salvo in una variabile il numero di pixel totali dell'immagine:
N=m*n;
% Imposto una vettore colonna lungo 256 righe:
ist=zeros(L,1);
% Popolo il vettore assegnando in ogni riga il numero di occorrenze
% di ogni livello di grigio:
for i=1:L
	ist(i)=sum(sum(im==i-1));
end
% Creo un vettore colonna contenente i numeri da 0 a 1 con passo 1/255:
r=[0.0:1/(L-1):1.0]';
% Effettuo la somma cumulativa del vettore 'ist' dividendolo per il numero di pixel
% in modo da ottenere la probabilità incrementale di ogni livello:
s=cumsum(ist)/N;
% Creo un vettore colonna contenente i numeri da 0 a 255:
ss=[0:L-1]';
% Effettuo la traslazione di ogni livello di grigio seguendo la probabilità:
ss=round(ss+(s-r)*(L-1));
% Converto la matrice dell'immagine originale in un vettore colonna di lunghezza N:
im_vett=reshape(im,m*n,1);
% Disegno l'immagine di output (equalizzata) richiamando per ogni pixel il
% corrispettivo valore calcolato:
im_out=uint8(reshape(ss(im_vett),m,n));
% Mostro a schermo il risultato:
subplot(1,2,1);
imshow(im);
subplot(1,2,2);
imshow(im_out);

Il risultato finale sarà quello mostrato nell’immagine qui sotto. A sinistra l’immagine originale, a destra quella equalizzata.

Esempio equalizzazione: cameraman

Abbiamo – finalmente – scoperto cosa facciano i nostri programmi di foto ritocco quando andiamo a modificare una immagine semplicemente pressando un pulsante… 🙂

Emanuele

PS: è interessante notare come l’equalizzazione possa comportare l’aumento di rumore e la creazione di falsi contorni da sistemare attraverso opportuni algoritmi di riduzione del rumore.

Trovare i vertici di una figura geometrica con MATLAB.

Giocando ancora, mi è venuta voglia di trovare i vertici di una figura geometrica contenuta in una immagine in scala di grigi.

Per semplicità vorrò trovare i vertici di un rettangolo bianco su uno sfondo nero (ma è banale lavorare con una scala di grigi o direttamente a colori). La potenza di MATLAB ci permette di non usare neanche un ciclo per scansionare la matrice.

% Creo la base della mia immagine 512x512

im=zeros(512,512);

% Posiziono un rettangolo in una zona qualsiasi dell'immagine

im(60:284,90:426)=1;

% Ho riempito quell'area di bianco, adesso voglio trovare i vertici

[m n]=find(im==1);

% Attraverso il find ho salvato le coordinate di tutti i pixel bianchi

minX=min(m);
minY=min(n);
maxX=max(m);
maxY=max(n);

% Sfrutto min() e max() per trovare il valore minimo e massimo di X e Y

a=[minX;minY];
b=[maxX;minY];
c=[maxX;maxY];
d=[minX;maxY];

% Se consideriamo i vertici partendo dall'alto a sinistra e scorrendoli
% in senso orario, ecco le nostre coordinate! :-)
% Basta richiamare le variabili per verificarlo...

Semplice e rapido! 🙂

Emanuele

Baciando due gocce di miele.

Zagabria - Foto di gruppo

Ora splendidi tramonti e pelle scura ti regala,
con un profumo di bianco, questo vento ti regala.
E non è il vento delle isole, freddissimo alle mani,
ma quello che, di spalle, ti porta la stagione dei cieli

Akkura – Cieli blu d’India

Stavo selezionando le foto da stampare e appendere sulla parete della mia scrivania quando mi sono innamorato di questa foto.

La giornata a Zagabria fu proprio bella, eravamo tutti felici. 🙂

Emanuele

Personcine.

Charlie Brown: pensi mai al futuro, Linus?
Linus: oh, sì… sempre!
Charlie Brown: come pensi che vorresti essere da grande?
Linus: vergognosamente felice!

Tratto da: Peanuts di Charles M. Schulz

Io non capisco la gente che borbotta, che si lamenta sia di una giornata di sole che di una giornata di pioggia, di un pranzo pesante o di un pranzo leggero, di una storta alla caviglia (o alla giornata…) superficiale che diventa qualcosa di più grande di ciò che è.

In questo periodo della mia vita, quando piove sono felice di entrare in macchina e sparare il tergicristallo a tre, vedere quell’acqua schizzare ovunque e magari dovermela fare a corsa per non diventar fradicio quando scendo. Quando c’è il sole sono felice perché regala ancora più ottimismo, riscalda e conforta.

Siamo persone fortunate (si, anche tu… se hai la possibilità di leggere qui, si vede che lo sei!) e abbiamo tutto nella vita… e ciò che manca non è ciò che desideriamo, perché in fin dei conti anche senza l’oggetto dei nostri desideri si sopravvive. Ciò che manca – spesso – è proprio quel sano ottimismo che ti fa vedere ogni giorno della tua vita come un’esperienza unica da affrontare con curiosità e allegria.

Perché continuiamo a lamentarci di ogni piccola cosa?!

Schulz titolò la sua opera “Peanuts” che può esser tradotto come “noccioline” ma anche come “personcine“. Dal titolo però, non si evince se si riferisse ai protagonisti della storia ovvero ai suoi lettori (la risposta possiamo dargliela noi singolarmente…).

Emanuele