How can I read huge amount of image files and take the corresponding histogram data to a matrix in order?
Mostrar comentarios más antiguos
Hi all, Suppose I have a database of 100000 image files (the names of files are numbers 1.jpg to 100000.jpg) . I want to compute the histogram of individual grayscaled versions of the image and store it to a matrix in the order of file names numerically. ie Finally I will be having a matrix of size 256 * 100000, where the first column will be histogram of 1.jpg, 2nd column will be histogram of 2.jpg and so on.
As a first step, I tried the code below. But since the output was cell, I could not sort it the way I wanted. Also it took lot time.
file = dir('*.jpg');
n = length(file);
images = cell(n,1);
for k = 1 : n
images{k} = imread(fullfile( file(k).name));
end
Here file(2).name = 10.jpg , but what is required for me is 2.jpg. What is the efficient way to code this? Can I do this without for loop?
Respuesta aceptada
Más respuestas (2)
Anand
el 2 de Abr. de 2014
If you have the parallel computing toolbox, you could try something like this:
allHists = zeros(256,numel(file));
parpool;
parfor n = 1 : numel(file)
allHists(:,n) = imhist(imread(file(n).name));
end
Ideally you send this out to a cluster and not your local machine. If you have an older version of MATLAB, you might have to use matlabpool instead of parpool.
4 comentarios
DEVANAND
el 2 de Abr. de 2014
Anand
el 2 de Abr. de 2014
It will, but the benefits won't be as high. It should still be faster than doing it serially.
If your machine is relatively recent (within the last few years), it should be multicore and that should do it for you.
DEVANAND
el 3 de Abr. de 2014
Anand
el 3 de Abr. de 2014
glad to hear that!
Dishant Arora
el 2 de Abr. de 2014
file = dir('*.jpg');
fileNames = {file.name};
fileNames = sort_nat(fileNames); % sorts string efficiently
And you need not to stack images one over another in cell, it will consume more memory. Just read an image compute histogram and append it to your result one by one in loop.
1 comentario
Categorías
Más información sobre Convert Image Type en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!