gpt4 book ai didi

image - 缩放 R 图像

转载 作者:行者123 更新时间:2023-12-01 09:34:24 25 4
gpt4 key购买 nike

我想在 R 中缩放图像以进行进一步分析,而不是立即绘图。

如果我可以使用 EBImage,EBImage 的 resize() 将是理想的,但我需要避免它,所以我必须找到替代方法。

我没有任何运气搜索。我可以手动实现双线性过滤,但在此之前我想确认没有任何替代方案。

最佳答案

Nearest neighbour调整大小是最常见和最容易实现的。

假设您的图像是一层/ channel ,因此是一个矩阵:

resizePixels = function(im, w, h) {  pixels = as.vector(im)  # initial width/height  w1 = nrow(im)  h1 = ncol(im)  # target width/height  w2 = w  h2 = h  # Create empty vector  temp = vector('numeric', w2*h2)  # Compute ratios  x_ratio = w1/w2  y_ratio = h1/h2  # Do resizing  for (i in 0:(h2-1)) {    for (j in 0:(w2-1)) {      px = floor(j*x_ratio)      py = floor(i*y_ratio)      temp[(i*w2)+j] = pixels[(py*w1)+px]    }  }  m = matrix(temp, h2, w2)  return(m)}

I'll let you figure out how to apply this to a RGB image

Heres a test run for the code above on the red channel of this image:

lena = readImage('~/Desktop/lena.jpg')[,,1]
display(lena)

enter image description here

r = resizePixels(lena, 150, 150)
display(r)

enter image description here

r2 = resizePixels(lena, 50, 50)
display(r2)

enter image description here

注意:

  1. 注意,目标宽度和高度必须保持原始图像的纵横比,否则将不起作用
  2. 如果您想避免 EBImage,要读取/写入图像,请尝试包 jpeg 方法 readJPEGwriteJPEG

关于image - 缩放 R 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10865489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com