图像中stride的含义

image stride(图像行跨度) 即内存中每行像素所占的控件,为了实现内存对齐或者其他的原因,每行像素在内存中所占据的空间并不是图像的宽度。

如图所示,对于图像数据而言,其像素存储是一行接一行的,但是对于不同的图像格式可能采用不同的压缩方式,而这些压缩方式的数据也需要存储到图像中,方便读取以及写入。在上图中,图像中的height就是图像的高,而图像的宽不是一行数据的大小,而只是其中的一部分数据。stride是width以及 padding的和。width即使图像的框,而padding则用来存贮与图像格式相关的信息 (例如同样大小的图像,8bit与32bit的保存方式其内存对齐不同,stride也就不相同)。pitch和stride类似,只不过pitch是对像素而言,stride则是对字节而言。下图表达了图像的存储方式

跨距-stride

我们都知道现在计算机的cpu都是32位或者64位的cpu,他们一次最少读取4、8个字节,如果少于这些,反而要做一些额外的工作,会花更长的时间。所有会有一个概念叫做内存对齐,将结构体的长度设为4、8的倍数。

跨距也是因为同样的理由出现的。因为图像的操作通常按行操作的,如果图像的所有数据都紧密排列,那么会发生非常多次的读取非对齐内存。会影响效率。而图像的处理本就是一个分秒必争的操作,所以为了性能的提高就引入了跨距这个概念。
跨距就是指图像中的一行图像数据所占的存储空间的长度,它是一个大于等于图像宽度的内存对齐的长度。这样每次以行为基准读取数据的时候就能内存对齐,虽然可能会有一点内存浪费,但是在内存充裕的今天已经无所谓了。




https://www.jianshu.com/p/68e05ad85490

SenLin - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值