PDA

View Full Version : Matlab - elaborare immagini


boysna
26-04-2006, 18:08
Salve a tutti.
Sto iniziando a "giocherellare" con le immagini in matlab e ho un piccolo problema. Carico un immagine con la imread e con questa istruzione ne prendo un pezzo e lo voglio stampare a video:

etna = imread('etna.jpg');
asx = etna(1:300, 1:400);
imshow(asx);

L'immagine risultante non è a colori ma in scala di grigi. Come mai? Eppure ho fatto un controllo sui numeri all'interno di asx e sembrano combaciare con quelli della matrice originale.

Attendo vostre risposte. Ciao belli.

cipi
26-04-2006, 18:48
perchè nel ridimensionare ti sei dimenticato di una dimensione... prova:
etna = imread('etna.jpg');
asx = etna(1:300, 1:400, :);
imshow(asx);

boysna
27-04-2006, 11:57
Ok funge, ma cos'è il terzo parametro?

boysna
27-04-2006, 12:24
Ora ho un altro problema.... :D

Questo è il codice:

>> etna = imread('etna.jpg');
>> etna2 = imnoise(etna,'gaussian',0,0.02);
>> figure(1);
>> subplot(1,2,2);
>> imshow(etna);
>> subplot(1,2,1);
>> imshow(etna2);
>> x = size(etna, 1);
>> y = size(etna, 2);
>> x

x =

600

>> y

y =

800

Come puoi notare la y è piu grande della x. Mase stampi l'immagine ti accorgi che dovrebbe essere il contrario.

Anche se provo a usare questo comando con l'intenzione di prendere l'angolo in alto a destra: "adx = etna2(301:600, 1:400, :)" ti accorgi che prende invece l'angolo in basso a sinistra.

Praticamente mi sembra che matlab sta invertendo le x con le y.

boysna
27-04-2006, 13:00
Comunque sto andando avanti con le "coordinate capovolte".

E ho incontrato un nuovo problema. Voglio applicare un filtro con questi comandi:

>> filtro_adx = fspecial('average');
>> adx_filtrato = filter2(filtro_adx,adx);

Il problema è che mi da questi errori:

??? Function 'conv2' is not defined for values of class 'double' and attributes 'full 3d real'.

Error in ==> filter2 at 73
y = conv2(hcol, hrow, x, shape);

boysna
28-04-2006, 14:48
up

akasa
28-04-2006, 14:57
Ok funge, ma cos'è il terzo parametro?

Se non ricordo male, ad ogni punto di coordinate (x,y,z) viene assegnato il valore dei colori e quindi (R,G,B). Quei : indicano che devi prendere tutti i valori del colore per quel range di coordinate indicate. Ci arrivai un po' di tempo fa poi ho lascito. Per l'altro problema...stasera lo guardo un po' e vedo di capire (non sono per niente esperto)
Ciao :)

boysna
28-04-2006, 21:52
Il problema che da la funzione filter2 è dato dal fatto che viene passata un'immagine a colori e dovrebbe essere passata una immagine a scala di grigi. Infatti se la converto con la funzione rgb2graylevel non da l'errore. Ma questo vorrebbe dire che si possono filtrare solo immagini a scala di grigi?