R 如何将图像分割为8x8图像块并访问每个块

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),

我有一个图像如下。它是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), 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])
  }
}