使用R的灰色到二进制图像

时间:2012-04-23 07:22:06

标签: r

是否有任何R功能可将灰度图像转换为二进制图像。有一个从RGB转换为灰色但我想将灰色转换为二进制。

3 个答案:

答案 0 :(得分:2)

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

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

应该这样做。如果您的数据范围从0到1,请执行类似的操作,但调整舍入参数。 编辑:ooops,我省略了截止级别的选择。将max(grey_image)替换为K*max(grey_image) K = 1,其中K>1切割为半最大值,K<1切割为更高,{{1}}切割更低。

答案 1 :(得分:2)

这称为阈值处理或二值化。我的经验中最强大的是adaptive thresholding。这在EBImage thresh方法

中实现
x = readImage(system.file('images', 'nuclei.tif', package='EBImage'))
if (interactive()) display(x)
y = thresh(x, 10, 10, 0.05)
if (interactive()) display(y)

答案 2 :(得分:0)

EBImage Bioconductor包是一个在R中执行图像分析的便利工具。 从包装的小插图中获取的基本示例:

lena = readImage(system.file("images", "lena.gif", package="EBImage"))
display(lena>0.5)