[MatLab] Esercizio filtraggio Immagini

Messaggioda mDesk » 08/02/2017, 15:56

Ciao,
mi è stato assegnato un esercizio in Matlab e vorrei consultarvi prima di consegnarlo per evitare errori e magari per migliorarlo.

Testo esercizio:
Data un'immagine, di determini:
1- Quantificare la quantità di rumore presente nell'immagine attualmente.
2- Aggiungere del rumore di tipo "Sale e Pepe" e applicare i filtri di media e mediana
3- Aggiungere del rumore di tipo "Gaussiano" e applicare i filtri di media e mediana

ecco il codice prodotto da me:
Codice:
[Imm]=imread('Lucca.jpg');

%-----------Quantità di rumore presente nell'immagine----------
%Prendo in considerazione una porzione dell'immagine il più uniforme possibile
PorzioneImm=imcrop(Imm,[4694.5 502.5 220 220]);

%Calcolo la deviazione standard
devSt=stdfilt(PorzioneImm);

%Suddivido l'immagine a colori nei tre livelli RBG per visuliazzare  l'errore presente
img1=PorzioneImm(:,:,1);
img2=PorzioneImm(:,:,2);
img3=PorzioneImm(:,:,3);

%Visualizzo l'istogramma dei tre piani RGB dell'immagine
rHist1 = imhist(img1);%istogramma piano rosso
gHist1 = imhist(img2);%istogramma piano verde
bHist1 = imhist(img3);%istogramma piano blu

subplot(3,3,1),imshow(Imm),title('Immagine');
subplot(3,3,2),imshow(PorzioneImm),title('Porzione imamgine');
subplot(3,3,3),imshow(devSt,[]),title('Deviazione Standard');
subplot(3,3,4),imshow(img1),title('Livello Rosso');
subplot(3,3,5),imshow(img2),title('Livello Verde');
subplot(3,3,6),imshow(img3),title('Livello Blu');
subplot(3,3,7),imhist(img1),title('Istogramma Rosso');
subplot(3,3,8),imhist(img2),title('Istogramma Verde');
subplot(3,3,9),imhist(img3),title('Istogramma Blu');


Immagine

In questa immagine non riesco a visualizzare per intero il grafico, come posso fare? :?

Codice:
%-----------------SALE E PEPE----------------------------------------------
BN=rgb2gray(Imm);
RumoreSP=imnoise(BN,'salt & pepper',0.15);

%------------Filtro Mediana e Media MatLab---------------------------------
Mediana=medfilt2(RumoreSP); %filtro mediano di matlab
media=fspecial('average',[8,8]);
filtr=imfilter(RumoreSP,media); %filtro media di matlab
figure(2)
subplot(2,2,1),imshow(BN);title('Immagine BN');
subplot(2,2,2),imshow(RumoreSP);title('Sale e Pepe');
subplot(2,2,3),imshow(Mediana);title('Filtro Mediano');
subplot(2,2,4),imshow(filtr),title('Filtro Media 8x8');

% -------Filtro Mediano alternativa--------
BN=double(BN);
[x,y]=size(BN);
ImmMediana=zeros(x,y);
for i=2:x-1
for j=2:y-1
Vett=BN(i-1:i+1, j-1:j+1); %filtro 3x3
Vett=sort(Vett); %ordina gli elementi
ImmMediana(i,j)=Vett(5); %considera solo l'elemento in posizione 5
end;
end;

%-------Filtro Media alternativa--------
ImmMedia=conv_K(5,RumoreSP);
ImmMediana=uint8(ImmMediana);
figure(3);
subplot(1,2,1),imshow(ImmMediana),title('Filtro Mediana Alternativa');
subplot(1,2,2),imshow(ImmMedia),title('Filtro Media Alternativa');


Codice:
function I = conv_K(M,I)
K = 1/(M*M)*ones(M); %creazione di una matrice M
cont=0;
h=2;
    while(h<M) %per determinare la grandezza della matrice
        cont=cont+1;
        h=h+1;
    end
[n m] = size(I);
J = double(I); % conversione per operaz. aritmetiche
for i = 2:n-cont
 for j = 2:m-cont
 I(i,j) = sum(sum(K.*J(i-1:i+cont,j-1:j+cont)));
 end
end


Immagine

media e mediana fatta con FUNCTION
Immagine

Codice:
%-----------------GAUSSIAN--------------------------------------------
iBN=rgb2gray(Imm);
rGA = imnoise (iBN,'gaussian', 0.15) ;
figure(4);
subplot(2,2,1),imshow(iBN);title('Immagine');
subplot(2,2,2),imshow(rGA);title('Rumore Gaussiano');

% -------Filtro Media e Mediana (MatLab)--------
media=fspecial('average',[8,8]);
fMediaG=imfilter(rGA,media);% filtro media
fMedianaG=medfilt2(rGA);% filtro mediano
figure(4);
subplot(2,2,3),imshow(fMediaG);title('Filtro Media');
subplot(2,2,4),imshow(fMedianaG);title('Filtro Mediana');


Immagine

Grazie
mDesk
Starting Member
Starting Member
 
Messaggio: 1 di 8
Iscritto il: 03/02/2017, 20:17

Re: [MatLab] Esercizio filtraggio Immagini

Messaggioda mDesk » 24/02/2017, 10:00

ho risolto... è possibile chiudere.
Grazie
mDesk
Starting Member
Starting Member
 
Messaggio: 2 di 8
Iscritto il: 03/02/2017, 20:17


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite