是否有任何 R 函数可以将灰度图像转换为二值图像。有一个可以从 RGB 转换为灰色,但我想将灰色转换为二进制。
问问题
3134 次
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 = 1
K>1
K<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 回答