是否有任何R功能可将灰度图像转换为二进制图像。有一个从RGB转换为灰色但我想将灰色转换为二进制。
答案 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)