1

我有一个图像采集卡,它返回 R、G、B 矩阵(So、X、Y、{R、G、B})

但我需要将数据分成 2 个 12 位向量;我不确定如何快速做到这一点(将所有内容都转换为字符串很糟糕)。

如果有人可以帮助我,我将不胜感激;谢谢大家!

[编辑] 这就是我的意思:我有一个 4-D - X、Y、RGB、FrameNumber 的数据对象。

例如,如果我这样做:data(1,1,1,1),我得到第一行,第一列,红色通道,第 1 帧。

问题是我的相机是红外线的,实际上吐出 2 个 12 位数字(它完全是自定义的)。所以我需要取这个:data(1,1,1,1),data(1,1,2,1),data(1,1,3,1),将它们连接起来,然后返回给用户 2x12 位数字。

带字符串:

data(1,1,1,1) = 0x40
data(1,1,2,1) = 0x37
data(1,1,3,1) = 0x4F

连接给了我:

0x40374F

对于这个像素,我需要返回给用户:[403,74F]

[关于我的例子的道歉:我试图在 matlab 中快速提出一个 4D 矩阵,而且我已经很久没有使用它了,我需要一段时间才能弄清楚它实际上是什么样子的构造它!]

4

1 回答 1

0

也许这就是你要找的。我假设基础数据是十进制的,而不是字符串,而您的输出又是十进制数,而不是字符串。

data(1,1,1,1)=hex2dec('40');
data(1,1,2,1)=hex2dec('37');
data(1,1,3,1)=hex2dec('4F');

%convert three numbers to one large one
x=[256^2 256 1]*squeeze(data(1,1,:,1));
%split it in two
out(1)=floor(x/4096);
out(2)=x-out(1)*4096;

%check
fprintf('upper 12 bits in hex: %s\n',dec2hex(out(1)));
fprintf('lower 12 bits in hex: %s\n',dec2hex(out(2)));
于 2015-07-24T19:50:10.923 回答