3

すぐにプロットするのではなく、さらに分析するためにRで画像をスケーリングしたいと思います。

EBImage を使用できれば、EBImage の resize() が理想的ですが、これを回避する必要があるため、代替手段を見つける必要があります。

運良く検索できませんでした。バイリニア フィルタリングを手動で実装することもできますが、その前に、代替手段がないことを確認したいと思います。

4

2 に答える 2

3

最近傍スケーリング (補間なし) は非常に簡単に実装できます。
@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ます。

于 2013-06-16T12:03:27.393 に答える