Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#和Matlab在读取视频帧rgb值时的差异_C#_Matlab_Video_Rgb - Fatal编程技术网

C#和Matlab在读取视频帧rgb值时的差异

C#和Matlab在读取视频帧rgb值时的差异,c#,matlab,video,rgb,C#,Matlab,Video,Rgb,我正在尝试将matlab脚本转换为c#。matlab脚本读取一个.avi视频文件,并为视频中的每一帧计算红色、绿色和蓝色像素的平均值,然后将它们放入矩阵中。因此,对于视频文件中的每一帧,我将一个red.mean、green.mean和blue.mean值存储到一个矩阵中 为了在c#im中实现这一点,我们使用了一个Forge框架,该框架有一个Avireder类和一个Image Statistics类,该类提供给定图像的rgb平均值。我遇到的问题是matlab为一帧计算的平均值和c#为一帧计算的平均

我正在尝试将matlab脚本转换为c#。matlab脚本读取一个.avi视频文件,并为视频中的每一帧计算红色、绿色和蓝色像素的平均值,然后将它们放入矩阵中。因此,对于视频文件中的每一帧,我将一个red.mean、green.mean和blue.mean值存储到一个矩阵中

为了在c#im中实现这一点,我们使用了一个Forge框架,该框架有一个Avireder类和一个Image Statistics类,该类提供给定图像的rgb平均值。我遇到的问题是matlab为一帧计算的平均值和c#为一帧计算的平均值不匹配。它们很相似,彼此相差0.5左右,但我觉得它们应该是相同的

C#使用了15个sigfigs作为平均值,因此我要求matlab也这样做,以消除舍入误差的机会,但这并没有真正改善结果

这就是踢球的人

我决定从google上取一个随机的jpeg图像,将其加载到matlab中,并将其rgb像素值分离为三个单独的矩阵。我选择了r矩阵,并使用histc()函数来计算有多少r值的值等于0-255范围内的一个数字

使用相同的图像,我在C#中做了完全相同的事情,我打开图像,将其转换为位图,然后使用Forge的ImageStatistics为图像中的r值提供直方图


当我将matlab中给出的直方图与C#中给出的直方图进行比较时,它们非常相似,但对于0-255之间的某些值,一个直方图的值可能大于或小于另一个直方图。本质上,由于某种原因,C#和Matlab对图像中的像素值进行了不同的解释,我想知道原因是什么?

您是否检查了Matlab中RGB矩阵的数据类型?这些值可能存储为整数

>> A=magic(25);
>> B=uint8(A);
>> mean(mean(A))

ans =

  313

>> mean(mean(B))

ans =

 203.1840

>>