winvideo适配器如何在图像采集工具箱在YCbCr色彩准确返回YUY2数据吗?

7视图(30天)
我有一个照相机(豹USB相机LI-USB30-M021X) winvideo兼容DirectShow的司机说它YUY2格式的输出图像。现在YUY2格式中,您通常使用16位/像素描述彩色图像。这款相机并不实际获取彩色图像,在现实中它捕获12位灰度图像,然后编码到那些每像素16位YUY2格式。我可以恢复原来的12位数据格式在MATLAB不知何故?

接受的答案

MathWorks支金宝app持团队
MathWorks支金宝app持团队 2022年12月14日
编辑:MathWorks支金宝app持团队 2023年1月26日
如果你看看YUY2数据存储:
我们看到,第一4像素,它看起来像:
与颜色,我试图表明假设摄像机供应商编码的12位数据YUY2 2字节的数据。
如果使用videoinput YUY2格式,默认YCbCr ReturnedColorSpace, MATLAB然后将数据映射到YCbCr形象“即时通讯”以MATLAB在以下方式:
Y0 = im (1, 1, 1)
情况(1,1,2)= = im im (1、2、2)
日元= im (1、2、1)
V0 = im (1, 1, 3) = im (1、2、3)
Y2 = im (1、3、1)
U1 = im (1、3、2) = im (1, 4, 2)
Y3 = im (1, 4, 1)
V1 = im (1、3、3) = im (1, 4, 3)
由于没有扩展或平均,你应该能够访问原始的原始12位数据结合正确的元素。即得到Y0 |情况我们需要im(1, 1, 1),把它与im(1, 1, 2),这取决于供应商编码顺序的确切数据,这两个之一应由8位转移(=乘以256)。然后第一个12位值可以使用:
v = uint16 (ImageFrame (1, 1, 2)) * 2 ^ 8 + uint16 (ImageFrame (1 1 1));
同样为Y1 | V0我们会把im(1、2、1)与im (1、2、3)。或整个1280 x720图片我们应该能够编写:
一个= 0 (720、1280、“uint16”);
1:2(::结束)= uint16 (ImageFrame(1:2,::最后,2))* 2 ^ 8 + uint16 (ImageFrame (1:2,::, 1));
(:2:2:结束)= uint16 (ImageFrame(: 2:2:结束,3))* 2 ^ 8 + uint16 (ImageFrame(: 2:2:结束,1));

更多的答案(0)

标签

没有标签了。

下载188bet金宝搏


释放

R2017b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!