什么线性映射功能

时间:2016-10-11 21:17:33

标签: image-processing

将灰度图像从[30-200]映射到[0,255]需要什么线性映射函数?

我已经做了一些工作,这就是我想出来的,但我想知道它是否是正确的方法:

min : 30, want to map to 0
mid : 85, want to map to 128
max : 200, want to map to 255

if (i <= mid), M(i) = 127*(i - min)/(mid - min) 
if (i  > mid), M(i) = 128 + (255 - 128)*(i - mid - 1)/(max - mid - 1); 

这似乎对我来说是正确的,因为:

if i = 30, it should map to 0. Plugging the information in: 
M(30) = 127*(30-30)/(85 - 30) = 0
If i = 85, it should map to 127:
M(85) = 127*(85 - 30) / (85 - 30) = 127
If i = 200, it should map to 200:
M(200) = 128 + (255 - 128)*(200 - 85 - 1)/(200 - 85 - 1) = 255

谢谢。

1 个答案:

答案 0 :(得分:1)

如果应用线性映射,第一个间隔的中间将自动映射到第二个间隔的中间(您可以将其视为Thales原则)。因此,您只需要应用一个等式:y = a.x + b

要解决这个等式,你有两个信息:a.30 + b = 0,和 a.200 + B = 255。

然后你解决这个问题,你得到:a = 1.5,b = -45。

小心,[30,200]的中间不是85而是115(= 30 + 85)。

最后,您可以检查,如果您应用1.5 * x-45 = y,您成功获得:30-> 0,200-> 255和115-> 127.5