最近邻居调整大小是最常见和最简单的实现.
假设您的图像是一个图层/通道,因此是一个矩阵:
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)
}
我会让你弄清楚如何将它应用于RGB图像
以下是此图像红色通道上的代码测试运行:
lena = readImage('~/Desktop/lena.jpg')[,,1]
display(lena)
Run Code Online (Sandbox Code Playgroud)

r = resizePixels(lena, 150, 150)
display(r)
Run Code Online (Sandbox Code Playgroud)

r2 = resizePixels(lena, 50, 50)
display(r2)
Run Code Online (Sandbox Code Playgroud)

注意:
EBImage,读/写图像尝试包jpeg方法readJPEG和writeJPEG| 归档时间: |
|
| 查看次数: |
3015 次 |
| 最近记录: |