В этом примере показано, как создать datastore для набора изображений, прочитать файлы изображений и найти изображения с максимальным средним оттенком, насыщением и яркостью (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