读取和分析图像文件
这个例子展示了如何为一组图像创建一个数据存储,读取图像文件,并找到具有最大平均色相、饱和度和亮度(HSV)的图像。的图像处理类似示例mapreduce
功能,请参阅用MapReduce计算图像的最大平均HSV.
识别两个MATLAB®目录并创建包含图像的数据存储jpg
,.tif
,. png
这些目录中的扩展。
Location1 = fullfile(matlabroot,“工具箱”,matlab的,“演示”);Location2 = fullfile(matlabroot,“工具箱”,matlab的,“imagesci”);ds = imageDatastore({location1,location2},“FileExtensions”, {“jpg”,“.tif”,“使用”});
初始化最大平均HSV值和相应的图像数据。
maxAvgH = 0;maxAvgS = 0;maxAvgV = 0;dataH = 0;dataS = 0;dataV = 0;
对于集合中的每个图像,读取图像文件并计算所有图像像素的平均HSV值。如果一个平均值比前一个图像的平均值大,则将其记录为新的最大值(maxAvgH
,maxAvgS
,或maxAvgV
),并记录相应的图像数据(dataH
,数据
,或dataV
).
为i = 1:length(ds. files) data = readimage(ds,i);读取第i个图像如果~ ismatrix(数据)仅处理三维颜色数据HSV = rgb2hsv(数据);从RGB数据计算HSV值H = hsv(:,:,1);提取HSV值S = hsv(:,:,2);V = hsv(:,:,3);avgH = mean(h(:));找到整个图像的平均HSV值avgS = mean(s(:));avgV = mean(v(:));如果avgH > maxAvgH检查新的最大平均色相maxAvgH = avgH;dataH =数据;结束如果avgS > maxAvgS检查新的最大平均饱和度maxAvgS = avgS;dataS =数据;结束如果avgV > maxAvgV检查新的最大平均亮度maxAvgV = avgV;dataV =数据;结束结束结束
查看具有最大平均色相、饱和度和亮度的图像。
imshow (dataH“InitialMagnification”,“健康”);标题(“最大平均色相”)
图imshow(数据,“InitialMagnification”,“健康”);标题(“最大平均饱和度”);
图imshow (dataV,“InitialMagnification”,“健康”);标题(“最大平均亮度”);