当前位置: 首页 > 知识库问答 >
问题:

计算一组像素的最大值

曾典
2023-03-14

我有一个分辨率为1,1的光栅图像。

我想将分辨率降低到4,4,但仍然具有构成新4,4像素的像素的最大值。

我可以通过使用降低分辨率:

chm4 <- aggregate(chm, 4)

但是,这将为您提供构成此新像素的每个像素的平均最大值。

我试图将光栅转换为矩阵,因此它采取以下形式:

     [,1]  [,2] [,3] [,4] [,5] [,6] [,7] [,8]...
[1,]  63    34   45   76   21   54   35   45
[2,]  77    54   43   34   12   23   73   26
[3,]  56    73   26   27   81   29   34   52
[4,]  31    48   61   35   76   38   17   87
[5,]  16    24   71   45   58   60   14   35
[6,]  28    64   27   63   18   62   43   27
[7,]  27    48   76   27   54   61   52   44
[8,]  56    37   53   62   37   47   52   38 
...

是否有方法计算行1至4和列1至4内所有值的最大值?

这还需要应用于整个矩阵,该矩阵具有1000个行和列,返回到矩阵形式,如下所示:

    [,1][,2]...
[1,] 77  87
[2,] 76  62
...

共有2个答案

白腾
2023-03-14

您可以将矩阵转换为数组并使用Application。如果您的数据不是真正的海量,对于大多数应用程序来说,这应该足够快了。

#the example data
M <- structure(c(63L, 77L, 56L, 31L, 16L, 28L, 27L, 56L, 34L, 54L, 
                 73L, 48L, 24L, 64L, 48L, 37L, 45L, 43L, 26L, 61L, 71L, 27L, 76L, 
                 53L, 76L, 34L, 27L, 35L, 45L, 63L, 27L, 62L, 21L, 12L, 81L, 76L, 
                 58L, 18L, 54L, 37L, 54L, 23L, 29L, 38L, 60L, 62L, 61L, 47L, 35L, 
                 73L, 34L, 17L, 14L, 43L, 52L, 52L, 45L, 26L, 52L, 87L, 35L, 27L, 
                 44L, 38L), .Dim = c(8L, 8L), .Dimnames = list(NULL, NULL))

#create an array
A <- M
dim(A) <- c(2, nrow(M) / 2, 2, ncol(M) / 2)

#loop over the appropriate margins    
apply(A, c(2, 4), max)
#     [,1] [,2] [,3] [,4]
#[1,]   77   76   54   73
#[2,]   73   61   81   87
#[3,]   64   71   62   43
#[4,]   56   76   61   52

如果速度太慢,则很容易为该特定任务编写Rcpp函数。你只需要一个双循环。

狄新翰
2023-03-14

下面是另一种可能性,在样本矩阵(mat)上使用for循环:

x <- sample(1:100, 100, replace = TRUE)
mat <- matrix(x, nrow = 10)
mat2 <- matrix(nrow = nrow(mat)/4, ncol = ncol(mat)/4)

for(i in 1:dim(mat2)[1]) {
  for(j in 1:dim(mat2)[2]) {
    row <- 4 * (i - 1) + 1
    col <- 4 * (j - 1) + 1
    mat2[i,j] <- max(mat[row:(row + 3), col:(col + 3)])
  }
}
 类似资料:
  • 在深入研究CSS单元时,我遇到了参考像素的定义。然而,我无法找到一个关于它与CSS像素单元的关系的一致和全面的描述。我对这件事做了一些研究,但对我来说还是有点不清楚。 像素有两种不同的类型/定义: “设备像素”-显示器上的单个物理点。 和: CSS像素-与参考像素最匹配的单位。[1] 两个名字相同的平行概念绝对不能澄清混淆。我完全明白介绍第二个的目的,但我觉得它的命名有误导性。CSS像素被分类为绝

  • 问题陈述: 我需要得到一个给定数字的最佳面额组合。例如:我有三种面额,给定的数字是30,那么列表应该返回

  • 问题内容: 是否可以做这样的事情 要么 在CSS中? 问题答案: ,和终于可以! 从Firefox 75,Chrome 79和Safari 11.1(除外)开始。 并接受任意数量的参数。 具有语法,等效于。 并且可以嵌套。它们既可以在内部使用,也可以在外部使用,它们还可以包含数学表达式,这意味着您可以避免使用它们。 因此,原始示例可以写成:

  • 这个问题可能是封闭的,因为它听起来很模糊,但我真的问这个,因为我不知道或者我的数学背景不够。 我试图实现一个挑战,其中一部分挑战要求我计算矩阵的最小值和最大值。我对矩阵的实现及其操作没有任何问题,但是什么是矩阵的最小值和最大值?考虑到3x3矩阵是9个数中最小的数,最大的是最大的还是其他什么?

  • 我是否也需要一个相机向上向量,这代表什么? 我在用GLM。