查找表(LUT)是预先计算出每个可能邻域形状的像素值,然后把这些值储存到一个向量中。
1、makelut
makelut函数可以提供给用户构造一个查找表。
lut = makelut(f, n)
其中f是函数句柄,n可以是2或3。对于2*2邻域总共有16种不同,对3*3邻域有512种变化。
以下我将举例说明:
例1、lut = makelut('sum(x(:)) == 4', 2);
跟踪makelut代码,知
if (n == 2)
lut = zeros(16,1);
for k = 1:16
a = reshape(fliplr(dec2bin(k-1,4) == '1'), 2, 2);
lut(k) = feval(fun, a, params{:});
end
对于2*2邻域,总共有16种模版,对每一种模版求出他的模版矩阵a,再对矩阵a用fun(在此为'sum(x(:)) == 4')计算值,将计算得到的值作为lut的元素。
当k=4时,a=[1 0;1 0]。sun(a(:))=2,所以此时的lut(4)=0;
当k=16, a=[1 1;1 1]。 sun(a(:))=4,所以此时的lut(4)=1;
这样我们就能构造出一个查找表。
2、applylut
函数applylut使用查找表来处理二值图像.