我正在从事一个图像缺陷聚类项目。每幅图像都与特定的缺陷类型(以及使用readJPEG的3d像素数组)相关联。
图像的一个示例如下:https://i.stack.imgur.com/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])))
}可以使用r包(如descr() in {summarytools} )获取当前统计信息,请参阅R统计软件包。
由于im 三维数组的高维,运行速度非常慢。
dim(im)
[1] 1586 3034 3问题:
我正在寻找可能的解决方案,还有其他的R函数/包可以非常快地完成这样的任务吗?
谢谢,
发布于 2022-07-30 19:18:21
我们可以使用apply和MARGIN = 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))))https://stackoverflow.com/questions/73178363
复制相似问题