すぐにプロットするのではなく、さらに分析するためにRで画像をスケーリングしたいと思います。
EBImage を使用できれば、EBImage の resize() が理想的ですが、これを回避する必要があるため、代替手段を見つける必要があります。
運良く検索できませんでした。バイリニア フィルタリングを手動で実装することもできますが、その前に、代替手段がないことを確認したいと思います。
最近傍スケーリング (補間なし) は非常に簡単に実装できます。
@by0 による回答は明確ですが、別の実装を提供したいと思います。これは、画像の行列表現で機能します。これは、ベクトルにインデックスを付けるよりも簡単だと思います。
resizeImage = function(im, w.out, h.out) {
# function to resize an image
# im = input image, w.out = target width, h.out = target height
# Bonus: this works with non-square image scaling.
# initial width/height
w.in = nrow(im)
h.in = ncol(im)
# Create empty matrix
im.out = matrix(rep(0,w.out*h.out), nrow =w.out, ncol=h.out )
# Compute ratios -- final number of indices is n.out, spaced over range of 1:n.in
w_ratio = w.in/w.out
h_ratio = h.in/h.out
# Do resizing -- select appropriate indices
im.out <- im[ floor(w_ratio* 1:w.out), floor(h_ratio* 1:h.out)]
return(im.out)
}
これは、正方形だけでなく、任意の画像スケーリングで機能します。一方、場合は画像の縦横比のみを保持しw.out/w.in = h.out/h.in
ます。