计算由MATLAb中的行和列索引指定的子图像的平均灰度值

时间:2012-02-15 18:42:28

标签: image matlab indexing

我有一张图片,我想计算图像不同色块的平均灰度值。 我开始使用行和列索引定义补丁。这是我指定我的子图像所在位置的方式。

for x = 10 : 1 : 74
    for y = 30 : 1 : 94            
    .........
    end
end`

现在我该如何计算这个子图像的平均灰度值?我知道所有这些意味着找到平均值(平均值(图像))。但由于我只有行和列位置,我怎么能应用这个相同的概念。

3 个答案:

答案 0 :(得分:0)

假设您的图像是某个MxN矩阵,为什么不创建子矩阵并计算其平均值?

例如:

subimage = image(10:74, 30:94);
mean_grey = mean(mean(subimage))

答案 1 :(得分:0)

试试这个

mean(mean(im(10:74,30:94)))

答案 2 :(得分:0)

另一种解决方案:将图像(I)与平面内核(h)(您的“子图像”的大小)进行卷积,并将结果的值取为任何索引。< / p>

h = ones(a,b); % sub-image is size a x b
h = h / sum(h(:));
J = imfilter(I, h);
% J(x,y) will give you the average of a sub-image centered on (x,y)

边缘情况可能会导致奇怪的行为(图像范围外的子图像),但您可以向imfilter提供第三个参数来解决此问题。