Чтение и Анализ файлов изображений

В этом примере показано, как создать datastore для набора изображений, считайте файлы изображений и найдите изображения с максимальным средним оттенком, насыщением и яркостью (HSV). Для подобного примера на обработке изображений с помощью mapreduce функционируйте, смотрите, Вычисляют Максимального Среднего HSV Изображений с MapReduce.

Идентифицируйте две директории MATLAB® и создайте datastore, содержащий изображения с .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 contains an axes. The axes with title Maximum Average Hue contains an object of type image.

figure
imshow(dataS,'InitialMagnification','fit');
title('Maximum Average Saturation');

Figure contains an axes. The axes with title Maximum Average Saturation contains an object of type image.

figure
imshow(dataV,'InitialMagnification','fit');
title('Maximum Average Brightness');

Figure contains an axes. The axes with title Maximum Average Brightness contains an object of type image.

Смотрите также

| |

Похожие темы