2017-06-06 129 views
2

我有我想要量化到不同灰度级别的灰度图像。量化灰度图像

更准确地说,在EBImage package中,我们有一个功能equalize(),它有一个参数levels。我们可以设置levels值为256或128或64等来量化我们的灰度图像。 (但equalize()函数将执行给定灰度图像的直方图均衡,这对于我目前的情况并不是首选)

有人可以提出一个公式或函数,我们可以用它来改变灰度级数给出灰度图像。

回答

1

首先转换格式的东西连续。 现在是伪代码。

int x = (int) (value/(Quantisation)); (new format) y = x * Quantisation;

也可以压缩的图像,糟糕的方式。

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) 

enter image description here