4

是否有任何 R 函数可以将灰度图像转换为二值图像。有一个可以从 RGB 转换为灰色,但我想将灰色转换为二进制。

4

3 回答 3

3

这称为阈值化或二值化。根据我的经验,最强大的是自适应阈值。这是EBImage作为thresh方法实现的

x = readImage(system.file('images', 'nuclei.tif', package='EBImage'))
如果(交互式())显示(x)
y = thresh(x, 10, 10, 0.05)
如果(交互式())显示(y)
于 2013-05-05T13:16:11.607 回答
2

你没有说你的数据是什么类或“typeof”,所以我将在一个简单的案例中提供一个答案。假设您的图像是一个整数数组。对于 9 位灰度图像,这些整数的范围从 0 到 512。您需要确定二进制图像中 0 与 1 的截止点是什么。然后

bin_image <- round(grey_image/max(grey_image),0)

应该这样做。如果您的数据范围从 0 到 1,请执行类似操作,但调整舍入参数。编辑:哎呀,我遗漏了截止级别的选择。替换max(grey_image)为在半最大值处切割的位置,K*max(grey_image)以切割更高和更低。K = 1K>1K<1

于 2012-04-23T11:37:20.103 回答
1

EBImage Bioconductor 包是在R中执行图像分析的便捷工具。从包的 Vignette 中获取的基本示例:

lena = readImage(system.file("images", "lena.gif", package="EBImage"))
display(lena>0.5)
于 2012-04-23T14:09:17.470 回答