假设有一个矩阵(m x n x p),尤其是。带有R G和B通道的彩色图像。每个通道信息是8位整数。
但是,对于分析,必须将三个8位值组合以获得24位值,并且对24位值的(m x n)矩阵进行分析。
分析后,必须将矩阵分解回三个8位通道以显示结果。
我现在在做什么:
dec2bin
)strcat
和bin2dec
)代码:
for i=1:m
for j=1:n
new_img(i,j) = bin2dec(strcat(...
sprintf('%.8d',str2double(dec2bin(img(i,j,1)))), ...
sprintf('%.8d',str2double(dec2bin(img(i,j,2)))), ...
sprintf('%.8d',str2double(dec2bin(img(i,j,3))))));
end
end
对于分析后分解回三个8位,完成了完全相反的过程,仍然迭代(m×n)个值。
问题是计算时间很长。
我知道这不是正确的做法。是否有任何矩阵运算可以实现这一点,以便快速完成计算?
答案 0 :(得分:2)
虽然我不明白为什么你要结合" rgb以这种方式飞行,这将使你在一个命令中找到你想要的东西。
a = bitshift(img(:,:,1),16)+...
bitshift(img(:,:,2,8)+...
img(:,:,3);
除了向右移动之外,反转过程还需要二进制掩码。
A=zeros(size(img));
A(:,:,1)=bitshift(a,-16);
A(:,:,2)=bitshift(bitand(a,2^16-2^8),-8);
A(:,:,3)=bitand(a,2^8-2^0);