使用曲线对矩阵(图像)中的值进行非线性变换

Nonlinear transformation of values in matrix (image) using curve

我有一条非线性曲线(使用双三次插值找到;见下文)描述了强度值从目标图像到参考图像值的转换。 (如果我在这里使用的术语不正确,我深表歉意)。

将此曲线应用到目标图像的最佳方式是什么?

我基本上是在寻找实现此目标的最快方法;

for i = 1:length(curve)
    I(I==i) = curve(i);
end

相当慢。

您的曲线函数作为查找 table,执行查找 table 的最简单方法是:

lookuptable=[ 9 8 7 6 5 4 3 2 1 0 ];
I=[ 1 3 4; 
     5 3 8];

Itransformed=lookuptable(I)

请注意,查找的索引table 是通过像素值访问的。 所以如果像素值范围是0-255,首先你应该使用大小为256的lookuptable,其次记得补偿matlab索引是1:256的事实所以使用:

Itransformed=lookuptable(I-1);