У меня есть папка с 299 изображениями размером 128 * 128 пикселей. Я хотел бы собрать эти 299 изображений, чтобы создать большое изображение размером 1536 * 896 пикселей (эта яркость получается из большого изображения). Но я хотел бы собрать с перекрытием разрыва = 64 пикселей, как показано на рисунке. Изображение j + 1 частично стирает изображение j.
Я не знаю, как это сделать, используя изображение, поэтому я хотел бы выполнить его через матрицу , Здесь шаг:
- загрузить большое изображение 1536 * 896 пикселей
- создать пустую матрицу того же размера (img_matrix)
- загрузить 299 изображений размер 128 * 128 пикселей
- рассчитать количество итераций для вставки для строки "Number_R" и столбца "Number_ C" в зависимости от зазора (здесь 64 пикселя)
- Наконец, в oop загрузить каждое изображение размером 128 * 128 пикселей и вставить его в пустую матрицу (img_matrix)
У меня следующая ошибка:
Error in img_matrix[ROW, COL] <- l :
number of items to replace is not a multiple of replacement length
Я думаю, это потому, что тусклый l. Для RGB есть 3 слоя, а моя матрица всего 1.
> dim(l)
[1] 128 128 3
Код:
##############################################################
##############################################################
##clean Global Environment
# rm(list=ls())
gc(reset=TRUE)
plot.new()
memory.size(TRUE)
##############################################################
##############################################################
##############################################################
##############################################################
library(raster)
#load picture of size 1536*896 pixels
setwd("C:/Users/Mezeix/Desktop/AI defect/")
img_path <- "image.jpeg"
size = 128
gap <- 64
raster <- brick(img_path, package="raster")
#Dim of the empty matrix
nrow <- dim(raster)[1]
ncol <- dim(raster)[2]
#creation of the empty matrix with same dim (1536*896 pixels)
img_matrix <- matrix(, nrow = nrow, ncol = ncol)
##############################################################
##############################################################
# loading of the cropped images of size 128 x 128 pixels
folder <- "C:/Users/Mezeix/Desktop/AI defect/Image"
jpeg <- list.files(folder, full.names=TRUE)
#number of time to paste cropped image
Number_R <- nrow/gap-1
Number_C <- ncol/gap-1
total <- Number_R * Number_C
for(idx in gtools::mixedsort(jpeg)){
l <-stack(idx)
#i for row
#j for col
for (i in (0:(Number_R))) {
for(j in (0:(Number_C))){
ROW <- seq((gap*i)+1, (gap*i)+size)
COL <- seq((gap*j)+1, (gap*j)+size)
img_matrix[ROW, COL] <- l
}
}
}
##############################################################
##############################################################
Как это решить?
Нужно ли создавать 3 матрицы для R, G и B, а затем вставьте сложенное маленькое изображение, l, 3 раза: l [1 ,,]; l [, 1,] и l [,, 1] и, наконец, собрать, используя стек?