Этот пример показывает, как создать datastore для набора изображений, считайте файлы изображений и найдите изображения с максимальным средним оттенком, насыщением и яркостью (HSV). Для подобного примера на обработке изображений с помощью функции mapreduce
смотрите, Вычисляют Максимальный Средний HSV Изображений с MapReduce.
Идентифицируйте две директории MATLAB® и создайте datastore, содержащий изображения с .jpg
, .tif
и расширениями .png
в тех директориях.
location1 = fullfile(matlabroot,'toolbox','matlab','demos'); location2 = fullfile(matlabroot,'toolbox','matlab','imagesci'); ds = datastore({location1,location2},'Type','image',... 'FileExtensions',{'.jpg','.tif','.png'});
Инициализируйте максимальные средние значения HSV и соответствующие данные изображения.
maxAvgH = 0; maxAvgS = 0; maxAvgV = 0; dataH = 0; dataS = 0; dataV = 0;
Для каждого изображения в наборе считайте файл изображения и вычислите средние значения HSV через все пиксели изображения. Если среднее значение больше, чем то из предыдущего изображения, то запишите его как новый максимум (maxAvgH
, maxAvgS
или maxAvgV
) и запишите соответствующие данные изображения (dataH
, dataS
или dataV
).
for i = 1:length(ds.Files) data = readimage(ds,i); % Read the ith image if ~ismatrix(data) % Only process 3-dimensional color data hsv = rgb2hsv(data); % Compute the HSV values from the RGB data h = hsv(:,:,1); % Extract the HSV values s = hsv(:,:,2); v = hsv(:,:,3); avgH = mean(h(:)); % Find the average HSV values across the image avgS = mean(s(:)); avgV = mean(v(:)); if avgH > maxAvgH % Check for new maximum average hue maxAvgH = avgH; dataH = data; end if avgS > maxAvgS % Check for new maximum average saturation maxAvgS = avgS; dataS = data; end if avgV > maxAvgV % Check for new maximum average brightness maxAvgV = avgV; dataV = data; end end end
Просмотрите изображения с самым большим средним оттенком, насыщением и яркостью.
imshow(dataH,'InitialMagnification','fit'); title('Maximum Average Hue')
figure imshow(dataS,'InitialMagnification','fit'); title('Maximum Average Saturation');
figure imshow(dataV,'InitialMagnification','fit'); title('Maximum Average Brightness');
datastore
| imageDatastore
| mapreduce
| tall