R 如何将图像分割为8x8图像块并访问每个块
我有一个图像如下。它是256*256像素。假设它的左下角是0,0。从该图像中,我想创建多个图像,如下所示,并将它们保存在工作文件夹中。每个图像的大小为8*8像素。每个图像将通过其左下角坐标保存 光栅图像示例R 如何将图像分割为8x8图像块并访问每个块,r,bigdata,R,Bigdata,我有一个图像如下。它是256*256像素。假设它的左下角是0,0。从该图像中,我想创建多个图像,如下所示,并将它们保存在工作文件夹中。每个图像的大小为8*8像素。每个图像将通过其左下角坐标保存 光栅图像示例 library(raster) dem <- raster(nrow=256, ncol=256, vals=1:(256*256)) 库(光栅) dem你可以沿着这些路线做一些事情 d <- as.matrix(dem) ii <- seq(1, nrow(dem),
library(raster)
dem <- raster(nrow=256, ncol=256, vals=1:(256*256))
库(光栅)
dem你可以沿着这些路线做一些事情
d <- as.matrix(dem)
ii <- seq(1, nrow(dem), 8)
jj <- seq(1, ncol(dem), 8)
r <- list()
q <- 1
for (i in ii) {
for (j in jj) {
r[[q]] <- d[i:(i+7), j:(j+7)]
q <- q + 1
}
}
d另一种方法
data = readImage("reSizedDogCatLatest.jpg")
grayimage<-channel(data,"gray")
CutBySize <- function(m, block.size, nb = ceiling(m / block.size)) {
int <- m / nb
upper <- round(1:nb * int)
lower <- c(1, upper[-nb] + 1)
size <- c(upper[1], diff(upper))
df = data.frame()
df = cbind(lower, upper, size)
return(df)
}
mf = data.frame()
mf = CutBySize(nrow(grayimage), nb = 32)
numextract <- function(string){
str_extract(string, "\\-*\\d+\\.*\\d*")
}
final = data.frame()
libraray(stringr)
for (i in 1:nrow(mf))
{
lower = numextract(mf[i,][1])
upper = numextract(mf[i,][2])
for(j in 1:nrow(mf))
{
lowerj = numextract(mf[j,][1])
upperj = numextract(mf[j,][2])
final = rbind(final,grayimage[lower:upper, lowerj:upperj])
}
}
data=readImage(“reSizedDogCatLatest.jpg”)
Gray Images您能概述一下您尝试过的内容吗?我已在内存中加载了一幅图像,并使用光栅库将其拆分为8*8像素块。polarise我已编辑了我的问题,因此您的问题是如何在不使用光栅
软件包的情况下执行此操作?是的,需要在不使用光栅软件包的情况下执行此操作谢谢您的回答,您知道如何使用“r”通过绑定,从256*256的图像大小中获得1024*64的矩阵(一次考虑8*8块),提前感谢
d <- dem
ii <- seq(1, nrow(dem), 8)
jj <- seq(1, ncol(dem), 8)
r <- list()
q <- 1
for (i in ii) {
for (j in jj) {
r[[q]] <- d[i:(i+7), j:(j+7), drop=FALSE]
q <- q + 1
}
}
data = readImage("reSizedDogCatLatest.jpg")
grayimage<-channel(data,"gray")
CutBySize <- function(m, block.size, nb = ceiling(m / block.size)) {
int <- m / nb
upper <- round(1:nb * int)
lower <- c(1, upper[-nb] + 1)
size <- c(upper[1], diff(upper))
df = data.frame()
df = cbind(lower, upper, size)
return(df)
}
mf = data.frame()
mf = CutBySize(nrow(grayimage), nb = 32)
numextract <- function(string){
str_extract(string, "\\-*\\d+\\.*\\d*")
}
final = data.frame()
libraray(stringr)
for (i in 1:nrow(mf))
{
lower = numextract(mf[i,][1])
upper = numextract(mf[i,][2])
for(j in 1:nrow(mf))
{
lowerj = numextract(mf[j,][1])
upperj = numextract(mf[j,][2])
final = rbind(final,grayimage[lower:upper, lowerj:upperj])
}
}