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

Posted

技术标签:

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

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

【问题讨论】:

您只需要每个像素的 rgb 值吗? 【参考方案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

以上是关于如何使用 R 从图像中提取 RGB DN?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Matlab 中的 .ply 文件中提取 rgb 图像

如何提取图像的RGB值?

如何使用 r 中的 media_extract 从单词中提取图像?

如何使用 r 中的 media_extract 从 word 和 powerpoint 中提取图像?

如何使用Opencv对图像进行颜色特征提取

如何计算RGB数字图像处理 亮度的亮度值