2015-03-11 12 views
0

У меня есть следующий код, для которого вместо загрузки одного изображения за один раз я хотел бы запускать каждое изображение в папке (дефектная папка в этом коде). Я хотел бы, чтобы на выходе был массив, содержащий значения «G» для каждого входного изображения. Я не слишком уверен, как это сделать - так что любые оценки оцениваются. Большое спасибо!Запуск кода matlab через папку

%PCA code, 
img = imread('C:\users\m7-miller\desktop\250images\defective\inkblob01.png'); 
img_gray = rgb2gray(img);  
img_gray_double = im2double(img_gray);  
figure, 
set(gcf,'numbertitle','off','name','Grayscale Image'), 
imshow(img_gray_double) 

%find mean of the image 
img_mean = mean(img_gray_double); 
[m n] = size(img_gray); 

%Make column vector of mean image value 
new_mean = repmat(img_mean,m,1); 

%Mean corrected image 
Corrected_img = img_gray_double - new_mean; 

%Covariance matrix of corrected image 
cov_img = cov(Corrected_img); 

%Eigenvalues of covariance matrix - columns of V are e-vectors, 
%diagonals of D e-values 

[V, D] = eig(cov_img); 
V_T = transpose(V); 
Corrected_image_T = transpose(Corrected_img); 
FinalData = V_T * Corrected_image_T; 

% Image approximation by choosing only a selection of principal components 

PCs = 3;      
PCs = n - PCs;               
Reduced_V = V; 

for i = 1:PCs,               
Reduced_V(:,1) =[]; 
end 

Y=Reduced_V'* Corrected_image_T;           
Compressed_img = Reduced_V*Y;           
Compressed_img = Compressed_img' + new_mean; 

figure,                 
set(gcf,'numbertitle','off','name','Compressed Image'), 
imshow(Compressed_img) 
% End of image compression 

% Difference of original image and compressed 
S = (img_gray_double - Compressed_img); 
figure,                 
set(gcf,'numbertitle','off','name','Difference'), 
imshow(S) 

% Sum of the differences 
F = sum(S); 
G = sum(F)  
+0

вы можете использовать [ 'dir'] (http://www.mathworks.com/help/matlab/ref/dir.html?searchHighlight=dir), чтобы получить имена файлов изображений и запустить свой код в для цикла. – Cecilia

+3

Что-то вроде этого? http://stackoverflow.com/questions/11621846/loop-through-files-in-a-folder-in-matlab?rq=1 – beaker

+0

@beaker Я мог бы забыть, но я думаю, что я помню что-то, что проходит через файлы в например, с файлом $ $ - например file0 $ .png и запуском $ от 0 до 9. –

ответ

1

Вы ищете команду dir?

files = dir('*.png'); 
for n=1:size(files,1) 
    filename = files(n).name; 
    img = imread(filename); 

    .... 

    G = sum(F); 
end 
Смежные вопросы