我有灰度图像,我想量化到不同的灰度级。
更准确地说,在EBImage package中,我们有一个函数equalize()
,它有一个参数levels
。我们可以将levels
值设置为256或128或64等来量化我们的灰度图像。 (但是equalize()
函数将执行给定灰度图像的直方图均衡,这对于我目前的情况不是首选)
有人可以建议一个公式或函数,我们可以使用它来改变给定灰度图像中的灰度级数。
答案 0 :(得分:1)
首先将格式转换为连续的格式。 现在是伪代码。
int x = (int) (value / (Quantisation));
(new format) y = x * Quantisation;
也可以压缩糟糕的图像。
答案 1 :(得分:1)
EBImage 中的默认图像数据表示是0到1之间的连续范围。为了将图像量化为给定数量的levels
,首先将其转换为整数范围为0:(levels-1)
,然后返回0:1
,与以下示例中的quantize
函数一样。
library(EBImage)
## sample grayscale image
x = readImage(system.file("images", "sample.png", package="EBImage"))
## function for performing image quantization
quantize = function(img, levels) round(img * (levels-1)) / (levels-1)
## quantize the image
y = quantize(x, levels = 8)
## show the result
display(y)