【问题标题】:Quantize grayscale images量化灰度图像
【发布时间】:2017-06-06 09:16:09
【问题描述】:
我有想要量化为不同灰度级别的灰度图像。
更准确地说,在EBImage package 中,我们有一个函数equalize(),它有一个参数levels。我们可以将levels 值设置为 256 或 128 或 64 等来量化我们的灰度图像。 (但equalize() 函数将对给定的灰度图像执行直方图均衡化,这对于我目前的情况不是首选)
有人可以建议一个公式或函数,我们可以使用它来更改给定灰度图像中的灰度级数。
【问题讨论】:
标签:
r
image
image-processing
grayscale
quantization
【解决方案1】:
首先将格式转换为连续的。
现在是伪代码。
int x = (int) (value / (Quantisation));
(new format) y = x * Quantisation;
也可以用糟糕的方式压缩图像。
【解决方案2】:
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)