从R

时间:2016-07-18 17:07:23

标签: r image

我想在R中找到RGB值。

我正在使用的jpeg图像有一个白色背景的对象。 像这样:http://www.wild-wonders.com/blog/wp-content/uploads/2009/11/nba_france_16.jpg

现在,为了只选择对象,我必须手动跟踪每个对象(通过绘制点,使选择成为稍后用于获取RGB值的形状)。在photoshop中有没有像魔术棒工具那样的工具或软件包会自动选择白色背景?

1 个答案:

答案 0 :(得分:0)

查看Bioconductor软件包 EBImage 提供的功能, R 的图像处理和分析工具箱。要安装软件包,请使用:

source("http://bioconductor.org/biocLite.R")
biocLite("EBImage")

下面的示例说明了如何从白色背景中自动提取对象,并获取其#rrggbb像素值。由于jpeg压缩引入的工件,我使用0.95的值进行阈值处理而不是1.0(对应于白色像素)。

library(EBImage)

## load the array representing pixel intensities into R
img <- readImage("http://www.wild-wonders.com/blog/wp-content/uploads/2009/11/nba_france_16.jpg")

## convert to grayscale before thresholding
gray <- channel(img, "gray")

## create a mask separating objects from background
mask <- gray < 0.95

## label objects (connected sets of pixels)
obj <- bwlabel(mask)

## indices of pixels within the object
idx <- which(mask==1, arr.ind=TRUE)

## extract the red, green, and blue pixel intensities
rgb <- cbind(channel(img, "r")[idx],
             channel(img, "g")[idx],
             channel(img, "b")[idx])

## convert to #RRGGBB representation
rgb(rgb)