以R显示图像

ajsxfq5m  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(88)

我有一个像素坐标的二维矩阵($n \times 2$ matrix)和一个RGB像素值的三维矩阵($n \times 3$ matrix)。有人知道R中有一个函数可以生成图像吗(例如,类似于Python中的imshow())?
我在谷歌上搜索了一下这个平台,但是我没有找到任何类似的东西--如果我错过了一些明显的东西,我道歉。感谢你能提供的任何帮助!

lmvvr0a8

lmvvr0a81#

imager包可以帮助解决这个问题!

1.为演示准备数据

require( tidyr )
require( imager )

# example data from `imager` package
dat <- boats
# plot( boats )

# tall
dat_original <- as.data.frame( dat )
head( dat_original )
#  x y cc  value
#1 1 1  1 0.3882
#2 2 1  1 0.3859
#3 3 1  1 0.3849
#4 4 1  1 0.3852
#5 5 1  1 0.3860
#6 6 1  1 0.3856

dat_wide <- pivot_wider( dat_original, names_from = 'cc', values_from = 'value' )
head( dat_wide )
# A tibble: 6 × 5
#      x     y   `1`   `2`   `3`
#  <int> <int> <dbl> <dbl> <dbl>
#1     1     1 0.388 0.388 0.388
#2     2     1 0.386 0.386 0.386
#3     3     1 0.385 0.385 0.385
#4     4     1 0.385 0.385 0.385
#5     5     1 0.386 0.386 0.386
#6     6     1 0.386 0.386 0.386

2.演示

(您需要将数据从M2 d、M3 d调整为五列宽,使其看起来像这样):
例如,您可以用途:
第一次

然后让数据变高

dat_tall <- pivot_longer(
    YOUR_DATA
  , cols= c( 'R','G','B' )
  , names_to = 'cc'
  , values_to = 'value'
)
head(dat_tall)
## A tibble: 6 × 4
#      x     y cc    value
#  <int> <int> <chr> <dbl>
#1     1     1 1     0.388
#2     1     1 2     0.388
#3     1     1 3     0.388
#4     2     1 1     0.386
#5     2     1 2     0.386
#6     2     1 3     0.386

并修复列“cc”(它必须是整数,而不是字符)

dat_tall$cc %<>% as.integer
## A tibble: 6 × 4
#      x     y    cc value
#  <int> <int> <int> <dbl>
#1     1     1     1 0.388
#2     1     1     2 0.388
#3     1     1     3 0.388
#4     2     1     1 0.386
#5     2     1     2 0.386
#6     2     1     3 0.386

最后,制作一个图像

image_data <- dat_tall
as.cimg( image_data ) %>% plot

相关问题