如何使用 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 图像
如何使用 r 中的 media_extract 从单词中提取图像?