【问题标题】:How to extract RGB DNs from an image using R?如何使用 R 从图像中提取 RGB DN?
【发布时间】:2017-09-12 02:27:48
【问题描述】:

这是来自鱼眼镜头相机的示例图像。我想从这张图片中提取数字号码以供我进一步研究。

如何使用 R 从图像中提取 RGB DN?

【问题讨论】:

  • 您只需要每个像素的 rgb 值吗?

标签: r image rgb fisheye


【解决方案1】:

最佳方法很可能会根据您的总体目标而有所不同。为了帮助您入门,您可以尝试 EBImage 包提供的功能,这是一个通用的图像处理和分析工具箱,可用于生物图像分析。它提供了将图像加载到 R 中并执行各种图像转换和过滤的功能。下面的示例说明了如何加载示例图像并绘制直方图。有关image data representation 的详细信息以及所提供功能的概述,请参阅package vignette

# package installation form Biocondcutor
# need to run this only once
source("https://bioconductor.org/biocLite.R")
biocLite("EBImage")

library("EBImage")
img <- readImage("https://i.stack.imgur.com/JTSWO.jpg")

## Image 
##   colorMode    : Color 
##   storage.mode : double 
##   dim          : 1500 1001 3 
##   frames.total : 3 
##   frames.render: 1 
## 
## imageData(object)[1:5,1:6,1]
##            [,1]       [,2]       [,3]       [,4]       [,5]       [,6]
## [1,] 0.05098039 0.09019608 0.04705882 0.00000000 0.02352941 0.02745098
## [2,] 0.06274510 0.09411765 0.05490196 0.01176471 0.02745098 0.02745098
## [3,] 0.06274510 0.08235294 0.05098039 0.01960784 0.02745098 0.02352941
## [4,] 0.04705882 0.05098039 0.03529412 0.01960784 0.01960784 0.01960784
## [5,] 0.02352941 0.01176471 0.01176471 0.01960784 0.01176471 0.01176471

hist(img)

例如,您可以通过apply在第三图像维度上使用函数轻松计算每个颜色通道的mean 像素强度值。

apply(img, 3, mean)

## [1] 0.2216768 0.2592197 0.1629841

这些值分别对应于红色、绿色和蓝色通道中的平均像素值。像素值通常被归一化为 [0, 1] 范围,因此这些数字代表图像中相应颜色的分数。请注意,如果您有兴趣可靠地比较在同一地点但在不同时间点拍摄的图像,则应确保它们是使用相同的固定白平衡值拍摄的。

【讨论】:

  • 其实我想提取每个像素中RGB通道的数字编号(分别是DNR、DNG和DNB)。然后我想计算 RGB 通道的平均数字数量,最后从同一个地方的另一张图像中计算出 %R、%G、%B 的季节性模式。
  • 感谢您的澄清,我已经相应地更新了我的答案。
  • 非常感谢。以前我试过这个代码 >>imagedata
猜你喜欢
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 2012-02-21
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
相关资源
最近更新 更多