В этом примере показано, как создать хранилище данных для коллекции изображений, прочитать файлы изображений и найти изображения с максимальным средним оттенком, насыщенностью и яркостью (HSV). Для аналогичного примера обработки изображений с помощью mapreduce см. раздел Вычисление максимального среднего HSV изображений с помощью MapReduce.
Определите два каталога MATLAB ® и создайте хранилище данных, содержащее изображения с помощью.jpg, .tif, и .png расширения в этих каталогах.
location1 = fullfile(matlabroot,'toolbox','matlab','demos'); location2 = fullfile(matlabroot,'toolbox','matlab','imagesci'); ds = imageDatastore({location1,location2},'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');

imageDatastore | mapreduce | tall