Mat 中step

网络上对Mat的详解,绝大多数是翻译官方的manual,而官方的manual却恰好对部分(官方认为)我们平时很少使用的内容没有详细的解释,或者对一些实现没有解释细节,因此我们就很难在刚入门时迅速地对某些内容有详细的认识,Mat的step就是其中之一。

在经过数天对Mat的研究,也对step有一定的认识了,这里说出我的愚见以抛砖引玉,有不足或错误之处希望各位指出,谢谢。

其实对step成员数组的解释就是step的意思,只要翻译对了,就能明白step的意思,step的翻译在这里不应该被翻译为步、脚步、步骤、步伐,而是” 梯级 “,也就是说step这里指出的是图像在各个梯级上的字节数大小,而这里的梯级指的是构成图像的名层次。

这里引用官方manual的几句话:

Note that M.step[i] >= M.step[i+1] (in fact, M.step[i] >= M.step[i+1]*M.size[i+1] ). This means
that 2-dimensional matrices are stored row-by-row, 3-dimensional matrices are stored plane-by-plane, and so on.

这句话可对刚入门图像处理的人(例如我~~)抓狂啊,为什么M.step[i]必定>= M.step[i+1] ??为什么这能说明2-dimensional matrices are stored row-by-row, 3-dimensional matrices are stored plane-by-plane, and so on ??

但事实上,了解图像构成,或者学过GIMP图像处理,甚至PS的人看到这里就会明白一二了。

就举那段话的2个例子大家就能明白了:

由于图像的构成是分层次的(也就是上面说的梯级),所以:

二维图像由一行一行(第一级)构成,而每一行又由一个一个点(第二级)构成

三维图像由一个一个名面(第一级)构成,每一个平面由一行一行(第二级)构成,每行由一个一个点(第三级)构成。

到这里,原因就呼之欲出了,Mat中的step[0]就是我们每一个第一级,在内存中占据的字节数量。例如,二维图像中step[0]就是每一行(第一级)在矩阵内存中,占据的字节的数量。也就是说step[i]就是第i+1级在矩阵内存中占据的字节的数量。

而每一级的字节数是多少就必须体现在下一级的数量上。

例如,二维图像中step[0](第一级)的大小与点的数量有关(第二级)。而每个点占据的大小,也就是step[M.dims − 1] 就成了关键了,它的大小是多少,这点我就下不了定论了,因为这点是我们自行定义的,我们可以定义不同的通道数,每个通道不同的字节数,然后 通道数×每个通道字节数 就得出step[M.dims − 1]了

原文:http://m.blog.csdn.net/blog/jdpshq/8575098#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值