matlab中的档怎么找出来,MATLAB中使用查找表_LUT

使用查找表(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个不同的矩阵中,是否

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值