【问题标题】:Calculate average gray value of a sub-image specifed by row and column indexing in MATLAb计算由 MATLAb 中的行和列索引指定的子图像的平均灰度值
【发布时间】:2012-03-07 03:27:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: image matlab indexing


    【解决方案1】:

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

    例如:

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

    【讨论】:

    • 非常感谢。我真的不知道指定一个 sum-image 这么容易。
    【解决方案2】:

    试试这个

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

    【讨论】:

      【解决方案3】:

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

      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 提供第三个参数来解决此问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-01
        • 2012-04-27
        • 2014-11-29
        • 2016-10-13
        • 2012-08-03
        相关资源
        最近更新 更多