2016-05-20 1 views
1

Je suis nouveau dans le traitement d'image et je veux de l'aide. J'ai un dossier (ensemble de données) qui contient 1000 images et je veux insérer « sel & poivre » bruit avec le bruit de densité différente (0.01,0.02 et 0,03), j'ai utilisé cette ligne pour ce faire:comment insérer du bruit et enregistrer plusieurs images dans différents dossiers en utilisant une boucle? (Matlab)

im = imread('C:\Users\SAMSUNG\Desktop\AHTD3A0002_Para1.tif'); 
J = imnoise(im,'salt & pepper',0.01); 

S'il vous plaît Aide-moi à faire ceci: Je veux enregistrer le résultat dans le dossier 3 (data1 contient des images après bruit avec d = 0.01, data2 contient des images après bruit avec d = 0.02 et data3 contient des images après bruit avec d = 0.03).

toute suggestation et merci à l'avance

Répondre

1

Le code suivant vous permet de sélectionner le dossier et de créer les images brouillées dans 3 dossiers différents. Il ne sélectionnera que les fichiers '* .tif' que vous pouvez modifier dans le code. Et si vous avez besoin de créer plus de niveaux de bruit, créez une boucle pour nommer dynamiquement les dossiers et les fichiers.

% get dir 
folderX = uigetdir(); 

% get files 
picFiles = dir('*.tif'); 

% loop over the files and save them with the noise 
for ii = 1:length(picFiles) 

    currentIm = imread([folderX, '\', picFiles(ii).name]); 

    % create folders if not exist 
    if ~exist([folderX,'\noise_0.01\'], 'dir') 
     % create folders 
     mkdir([folderX,'\noise_0.01\']); 
    end 
    if ~exist([folderX,'\noise_0.02\'], 'dir') 
     % create folders 
     mkdir([folderX,'\noise_0.02\']); 
    end 
    if ~exist([folderX,'\noise_0.03\'], 'dir') 
     % create folders 
     mkdir([folderX,'\noise_0.03\']); 
    end 

    J1 = imnoise(currentIm,'salt & pepper',0.01);  
    imwrite(J1,fullfile([folderX, '\noise_0.01\', picFiles(ii).name]));  

    J2 = imnoise(currentIm,'salt & pepper',0.02);  
    imwrite(J2,fullfile([folderX, '\noise_0.02\', picFiles(ii).name])); 

    J3 = imnoise(currentIm,'salt & pepper',0.03); 
    imwrite(J3,fullfile([folderX, '\noise_0.03\', picFiles(ii).name])); 

end 
+0

merci, ceci est la meilleure solution – yosra

1

Une solution simple avec 2 boucle.

%save the noise parameter. 
noise = [0.01,0.02,0.03]; 

for i = 1:1000 

%we generate the filename (you can adapt this code) 
imname = fullfile('C:\Users\SAMSUNG\Desktop\',sprintf('AHTD3A0002_Para%d.tif',i)) 
%read the image. 
im = imread(imname); 

for j = 1:length(noise) 

%apply the noise 
J = imnoise(im,'salt & pepper',noise(j)); 
%save image in the right folder 
imwrite(J,fullfile('C:\Users\SAMSUNG\Desktop',sprintf('folder%d',j))); 

end 
end 
+0

quand je demande ce code, j'ai une erreur – yosra

+0

'Erreur: Fichier: test.m Ligne: 17 Colonne: 77 parenthèses ou inattendu ou Déséquilibre support. – yosra

+0

Je n'ai pas testé mon code, mais ... il suffit de compter le nombre de parenthèses pour corriger l'erreur, ... essayez aussi de penser par vous-même. par la façon dont j'ai ajouté une parenthèse. – obchardon