【问题标题】:how does Matlab calculate the mean of whole image?Matlab如何计算整个图像的平均值?
【发布时间】:2018-05-27 17:20:45
【问题描述】:

我知道如何使用以下命令获取大小为 mxnx3 uint8 的整个图像的平均值

m = mean(I(:));

我对这个命令的理解是假设我们有一个矩阵

 A=[1 2 3;4 5 6; 7 8 9]; 

 mean_1=mean(A(:));

输出是

 A =

 1     2     3
 4     5     6
 7     8     9


mean_1 =

       5

彩色图像存储为 mxnx3 矩阵,其中每个元素都是该特定像素的 RGB 值(因此它是 3D 矩阵)。您可以将其视为红色、绿色和蓝色强度的三个 2D 矩阵。 那么在这种情况下,如何计算 Matlab 中三个二维矩阵的平均值呢?

【问题讨论】:

  • 当您对任何大小的任何矩阵执行 A(:) 时,它会被转换为列向量。你知道其余的。对吗?
  • 是的,我从我们估计均值的转换后的列向量中知道,但我的问题是对于彩色图像,我们有三个矩阵,其中一个被使用或全部三个被使用并转换为列向量或我不知道的其他事情,这就是我想知道的@SardarUsama
  • 正如 Sardar 在他的评论中所写,冒号运算符 (:) 将任意维度的数组转换为列向量。所以,整个mxnx3 矩阵变成了一个列向量。因此,它的所有条目都有助于平均值。如果您只想要红色 RGB 数据的平均值,则需要执行 B=A(:, :, 1); mean_1 = mean(B(:))
  • @AmosEgel 在估计平均值时包含第三维(页面)值。,对​​吗?
  • @anil 您还有其他问题吗?或者 Sardar 和 Amos 是否解决了您的所有问题?

标签: matlab


【解决方案1】:

正如 cmets 中所建议的,您可以为矩阵的 R、G 和 B 页创建一个临时数组并计算它们的平均值,但在 3D RGB 矩阵的特定情况下,您可能会更好只是做,

rgb_mean = squeeze(mean(mean(A,1),2))

如果您不熟悉 squeeze,它会将取平均值产生的 3D 1x1x3 矩阵转换为 2D 1x3 向量,这很可能是您所期望的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    相关资源
    最近更新 更多