使用曲线对矩阵(图像)中的值进行非线性变换
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);
我有一条非线性曲线(使用双三次插值找到;见下文)描述了强度值从目标图像到参考图像值的转换。 (如果我在这里使用的术语不正确,我深表歉意)。
将此曲线应用到目标图像的最佳方式是什么?
我基本上是在寻找实现此目标的最快方法;
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);