我在进行一项图像缺陷聚类的项目。每个图像都与特定的缺陷类型相关联(并使用
以下是图像示例: https://istack.dev59.com/pO9XY.webp
所需过程描述如下:
readJPEG
读取一个三维像素数组)。以下是图像示例: https://istack.dev59.com/pO9XY.webp
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])))
}
有可能的解决方案是使用r包,例如在{summarytools}
中使用descr()
等,可查看R统计包获取当前统计数据。
由于im
三维数组的高维度,运行速度非常缓慢
dim(im)
[1] 1586 3034 3
问题:
我正在寻找可能的解决方案,是否有其他能够以非常快的速度完成此任务的 R 函数/包?
谢谢,
apply(im, 3, \(x) c(min =min(x), max = max(x), sum = sum(x)))
。 - akrun\(x)
更改为function(x)
。 - akrunlapply
和apply
,即lst1 <- lapply(jpgfiles, function(file) apply(readJPEG(file), 3, function(x) c(min = min(x), max = max(x), sum = sum(x))))
。 - akrun