2011-03-30 28 views
8

我正在做一些图像处理,虽然我觉得我对自己的方法有一个很好的想法,但是我没有太多的运气来找到我应该使用哪个库在R中专门做这件事。R中的图像处理/颜色检测:我应该使用哪个库?

我有一个类似图像的大型数据库,其中每个都有白色背景上的任意数量的各种大小的彩色斑点。我最终希望找到红色,绿色和蓝色值,并计算特定日期的所有图像中所有彩色像素的平均RGB亮度。这意味着能够以某种方式区分彩色像素和近白色像素并存储它们的值。

我想我想要做的是创建color histograms为许多测试图像,看看直方图的峰值,以确定什么构成“白色”或“彩色”像素的阈值,然后循环遍布每个像素图像找到与我的阈值相匹配的彩色图像(我知道如何读取图像并获取像素RGB值)。

在我的首选语言Python中,听起来好像我使用PIL中Image模块的直方图方法,但我不知道R等价物(这可能仅仅是我的谷歌福;搜索结果主要针对“R”,如“红色”而不是语言,我确实发现这个:R: Histogram,但是我不知道它是否相关/如何使用它)。

如果有可能是从信号/图像处理领域一个更好的方法,我很乐意听到这一点。

TL; DR:如何使图像的颜色直方图,或特定颜色值否则选择像素,使用R'

(相关但不R-具体:How to calculate the amount of "green spots" in an image?

+0

也许RPY可以帮助你吗? http://rpy.sourceforge.net/ – tkerwin 2011-03-30 18:47:15

+0

@tkerwin - 我想,但我必须这样做纯R.如果真的没有合适的函数在R I可能会最终用Python写的东西来确定的阈值,然后将其硬编码到我的R脚本中。 – Beekguk 2011-03-30 18:50:37

+0

为什么你想扔掉关于联合关系的所有信息?我建议你把它看作是一个三维分类(或可能是集群)问题。 – hadley 2011-03-31 15:41:29

回答

4

有上CRAN优异 '锐美' 软件包。

试试这个:

library(rimage) 
x <- read.jpeg(system.file("data", "cat.jpg", package="rimage")) 
par(mfrow=c(1,3)) 
hist(x[,,1]) 
hist(x[,,2]) 
hist(x[,,3]) 
+0

''Package'rimage'已从CRAN存储库中删除.' – zx8754 2017-11-13 19:17:28

5

还有的R接口ImageJ的(这是我在过去的距离使用一次,它是用Java编写的出色的图像分类软件)通过Bio7 package

更多信息,其他链接:

http://www.r-bloggers.com/image-data-and-classification-with-r/

http://www.r-bloggers.com/plots-in-r-and-the-imagej-visualization/

http://www.r-bloggers.com/image-classification-limits-part-2/

+0

这看起来像一个我以前不知道的漂亮整洁的软件!我已经使用ImageJ来做类似的事情,但这不是很大程度上的手动吗?我正在寻找可以在相当大的图像数据库上自动运行的命令行工具。 – Beekguk 2011-03-31 17:38:31

+0

添加了一些链接,包括使用它时的内存限制。它基本上是R和ImageJ之间的接口,所以它应该让你自动化。 – 2011-03-31 18:43:53

+0

我还发现了CRAN上的[RImageJ](http://cran.r-project.org/web/packages/RImageJ/index.html)包,它直接提供了ImageJ和R的绑定。 – Beekguk 2011-04-15 17:42:20