概述
使用查找表(LUT)的理解
两个重要函数,makelut和applylut
针对的是2×2或者3×3的邻域,2×2邻域总共有4个像素,每个像素有2中状态,0或1,那么根据排列组合共有16种状态,3×3邻域有9个像素,共有512种状态,
我们把这些状态编码,编码的方式如:
256 32 4
128 16 2
64 8 1
3×3邻域中相应位置相乘,得到矩阵A,A每个元素相加,最后得到一个0~511中的某个整数,加上1,调整到1~512区间。
那么对于矩阵B
0 0 0
0 1 0
0 1 0
0*256+0*32+4*0+128*0+16*1+2*0+64*0+8*1+1*0=24 结果加1,得25
那么f(B)=25,这样就建立了映射,B这种格式的3×3矩阵对应值为25
现在用makelut函数来构造一个查找表:
lut=makelut(@fun,3);
lut返回的是一个512长度的列向量,向量的元素为1或者0,为1的时候表示满足fun函数的要求,为0的时候不满足fun函数的要求。
比如fun函数的具体实现为:
function is_end_point= fcn(nhood)
is_end_point=nhood(2,2) & (sum(nhood(: )==2);
这里nhood为3×3构造元素,上述方程表示,nhood(2,2)表示为中心点的元素为1,并且nhood这个3×3矩阵中只能有连个元素为1,因为sum(nhood(:)==2,也就是表示线段的末端。
那么现在makelut(@fun,3)就开始构造查找表:
512 对应矩阵 1 1 1 不满足sum(nhood(:)==2)这个条件返回0
1 1 1
1 1 1
?
25 对应0 0 0 满足fun函数的条件,返回1
0 1 0
0 1 0
?
1 对应0 0 0 不满足fun函数的条件,返回为0
0 0 0
0 0 0
这样从512~1依次计算是否满足fun函数条件,满足的返回1,不满足的返回0.
那么返回值lut 为512×1的向量,按顺序代表512~1,也就是512个不同的矩阵中,是否
最后
以上就是真实自行车为你收集整理的matlab中的档怎么找出来,MATLAB中使用查找表_LUT的全部内容,希望文章能够帮你解决matlab中的档怎么找出来,MATLAB中使用查找表_LUT所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复