首页 > 编程知识 正文

graphpad两组比较p值,r语言频率分布直方图

时间:2023-05-06 17:05:53 阅读:143852 作者:112

图像处理、显示中的行宽(linesize )、步长(step size )、间距(pitch ) )在图像数据的传输和显示中有一个不常见的参数:间距。

间隔的名称:它有很多别名,使用d3d显示时,它被称为pitch; 用ffmpeg解码时,它被称为linesize;

在ffmpeg中转换格式时,它被称为stride。 在这篇文章中统一用间隔来表示。

显示间隔的原因:此参数看起来没什么用,因为它与图像的宽度值相同。 但是,在很多情况下,遇到宽度与之不同的时候,如果不理解它的意思,程序就一定有问题。 但是,为什么它有时宽度相等,有时不相等呢? 这和那个的意思有关。

目前,我们知道计算机的cpu是32位或64位cpu。 他们一次至少读取四八个字节。 少于这个的话,反而要做额外的工作,需要更长的时间。 有所有称为内存对齐的概念,将结构的长度设置为4,8的倍数。

间隔也是因为同样的理由出现的。 由于图像操作通常逐行进行,因此如果图像的所有数据分布得很紧密,则会产生非常多的读取不对齐内存。 影响效率。 另一方面,由于图像的处理本来是分秒必争的操作,所以为了提高性能而引入了间距的概念。

间隔的含义:间隔是指图像中一行图像数据所占的存储长度,是指大于或等于图像宽度的内存对齐长度。 这样,每次按行为标准读取数据时,都可以对齐内存。 内存可能会有一点浪费,但在内存充裕的今天已经没关系了。

间隔值:因此,如果图像的宽度是内存数组长度的整数倍,则间隔与宽度相同。 当前的cpu通常一次读取4个字节,但通常看到的分辨率是4的整数倍,因此可以看出间隔与图像的宽度相同。 这里通常是指yuv420p格式的y通道,以rgb32格式或通道表示。 但是,罕见的分辨率时间间隔和图像宽度可能不同。

另一种情况是显卡。 显卡独立工作,因此显卡和处理器的内存对齐位数可能不同。 在这种情况下,间距可能与cpu上的间距有很大不同。 例如,NVIDA显卡(其内存对齐位数非常大)通常在以d3d显示时使用间距。 因此,如果d3d显示程序在Intel显卡上正常显示,而在NVIDA显卡上无法正常显示,请先验证是否正确处理了音调问题,不要怀疑显卡驱动程序。

间距处理:那么,如果间距和宽度不同怎么办? 虽然处理方式因情况而异,但通过了解作为一个核心的内存对齐情况就可以理解。

将d3d用于图像显示时,通常在获取显示内存空间时会获取参数pitch。 这是我们的间隔。 显卡每次都以pitch长度的数据为一行。 我们需要一行一行地复制图像数据。 每次下一行数据的目标开始位置都要在前一行的开始位置加上一个空格。 对于yv12这样的通道表示的数据,u、v通道请相应地将行距除以2。 间隔空间内容可以不为空。 对于ffmpeg解码,在解码后获取参数linesize,但实际上是音调。 从解码的数据存储器中复制数据时,必须逐行复制。 每行数据的开始位置是前一行的开始位置加上空格,一行的真正图像数据长度是图像宽度。 频道类型请相应地除以倍数。 在ffmpeg中进行图像格式转换时,需要传递参数stride,但实际上是间距。 只是,这次不需要复杂的处理。 只需知道用于导入并转换为ffmpeg的图像数据的间距,再导入即可。 ffmpeg会自动进行与该值相应的处理。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。