Matlab:多个.jpg图像的像素值

时间:2014-04-27 21:28:04

标签: image matlab image-processing jpeg

我有几百张像这样的照片:

enter image description here

它们位于单个文件夹中,我试图在Matlab中找到一种方法来自动分析点(700,755)处每个图像的像素值。我知道如何一次一个地做这件事:

rgb=impixel(p,700,755)

这将返回图像特定点的红绿蓝值。我对Matlab很陌生......什么样的代码会分析文件夹中的每个图像并将RGB值保存在表/数组中的不同行上?

此外,我使用像素区域工具选择了一个区域:' [696.463836477986 750.095011390851 19.9889937106933 13.3672527600921]'如何分析该区域中的所有像素值并获取统计数据(最小值,最大值,平均值等)...再加上我在文件夹中拥有的所有200张图像?

我很感激帮助! AP

1 个答案:

答案 0 :(得分:2)

impixel也适用于所有图片:

impixel(I)

或特定(像素)列和行:

impixel(I,c,r)

但首先需要将图像读入矩阵。 imread函数返回数组中图像的所有RGB数据:

A = imread(filename, fmt) 

它从字符串grayscale指定的文件中读取colorfilename图像。 A是包含图像数据的数组。如果文件包含“灰度”图像,则A是“M-by-N”阵列。如果文件包含'truecolor'图像,则A是'M-by-N-by-3'数组。 (3:R-G-B)

要读取文件夹中的一堆文件,请执行以下操作:

files = dir('*.jpg');
for i=1:length(files)
    eval(['imread ' files(i).name]);
end

您可以使用imcrop功能裁剪您拥有的图像:

使用鼠标:

I2 = imcrop(I)

或使用尺寸:

I2 = imcrop(I,[75 68 130 112]);