gpt4 book ai didi

r - 如何从高维 3d 数组中获取统计向量?

转载 作者:行者123 更新时间:2023-12-05 03:20:22 24 4
gpt4 key购买 nike

我正在从事图像缺陷聚类项目。每个图像都与特定的缺陷类型相关联(以及使用 readJPEG 的 3d 像素阵列)。

图像示例如下: /image/pO9XY.jpg

library(jpeg)
im <- readJPEG("C:/Users/Rayane_2/Desktop/Data/PCB1/PCB/PCB_USED/01.jpg")
dim(im)
[1] 1586 3034 3

所需的过程描述如下:

For each picture in specific directory :

1/ Convert the JPG picture to a 3d array ** ( RGB data of jpg image is a 3d array ).

2/ Summarize that 3d array in a **vector** of statistics using a function like `stats()` .

3/ Return this vector and continue to build a full clustering dataset.

我正在寻找转换 im[,,1] , im[,,2] , im[,,3]作为向量 as.vector()

之后我需要提取一些统计数据,比如:

stats <-function(im){

return(c(min(as.vector(im[,,1])),max(as.vector(im[,,1])),sum(as.vector(im[,,1])),range(as.vector(im[,,1])),var(as.vector(im[,,1])), min(as.vector(im[,,2])),max(as.vector(im[,,2])),sum(as.vector(im[,,2])),range(as.vector(im[,,2])),var(as.vector(im[,,2])),min(as.vector(im[,,3])),max(as.vector(im[,,3])),sum(as.vector(im[,,3])),range(as.vector(im[,,3])),var(as.vector(im[,,3])))

}

有一些可能的解决方案可以使用 {summarytools} 中的 descr() 等 r 包获取当前统计信息,请参阅 R statistics package

由于im 3d-array 维度高,运行速度很慢

dim(im)
[1] 1586 3034 3

问题:

我正在寻找可能的解决方案,是否有任何其他 R 函数/包可以非常快速地完成此类任务?

谢谢,

最佳答案

我们可以使用 applyMARGIN = 3 遍历第三个维度

out <- apply(im, 3, function(x) c(min =min(x), max = max(x), sum = sum(x)))

如果有多个文件,先读入一个list

lst1 <- lapply(jpgfiles, function(file) apply(readJPEG(file), 3, 
function(x) c(min = min(x), max = max(x), sum = sum(x))))

关于r - 如何从高维 3d 数组中获取统计向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73178363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com