Come specchiare una immagine con MATLAB.

Il primo esercizio dell’esame di ieri consisteva nello specchiare rispetto alla diagonale un’immagine in toni di grigio.

Per intenderci, dovevo realizzare un risultato simile a questo (immagine originale a sinistra, specchiata a destra).

Immagine specchiata lungo la diagonale

Nulla di più semplice… bastano due cicli annidati per ottenere il risultato:

% Carico l'immagine
im=imread('cameraman.tif');
% Salvo le sue dimensioni
[m n]=size(im);
% Creo la matrice dell'immagine in uscita e la inizializzo a zero
im_out=zeros(m,n);
% Ecco il ciclo che - semplicemente - andrà a scansionare l'immagine
% di partenza a ritroso e salverà il risultato in im_out
for i=1:m-1
	for j=1:n-1
		x=m-i;
		y=n-j;
		im_out(i,j)=im(x,y);
	end
end
% Disegno le due immagini per confrontare il risultato
subplot(1,2,1);
imshow(im);
subplot(1,2,2);
imshow(uint8(im_out));

Il risultato sarà questo qui:

Immagine cameraman specchiata diagonalmente

Per specchiare in massa una serie di immagini basterà creare una semplice routine che carichi a turno le immagini da elaborare. 🙂

Emanuele

3 commenti » Scrivi un commento

  1. Ciao senti ti volevo chiedere come devo fare per plottare una circonferenza di raggio pari a 0.0181164/2 su un immagine già creata però in una determinata posizione ke sarebbe al centro del rettangolo. Ti prego di risp su mio indirizzo email simrasetti@tele2.it.

    Grazie in anticipo

  2. Non so se è quello che interessa a te, ma hai mai provato GNU Octave ?
    Dovrebbe essere una valida alternativa a Matlab, ma è software libero…

    • Eh, sarà sicuramente un progetto interessante, però l’esame all’universitario lo fan fare con MATLAB ed è giusto che usi quello per esercitarmi… 😐
      Sarebbe bello se i professori incentivassero di più l’uso di software libero (ma scommetto che anche li ci son tanti interessi dietro…: per alcuni di loro, basta una licenza gratuita e non ci pensano due volte… ;-)).
      Ciao,
      Emanuele

Lascia un commento

I campi richiesti sono marcati con *.


Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.