【发布时间】:2015-09-07 09:43:25
【问题描述】:
假设有一个 (m x n x p) 的矩阵,尤其是。具有 R G 和 B 通道的彩色图像。每个通道信息都是 8 位整数。
但是,对于分析,必须将三个 8 位值组合起来以获得 24 位值,并且分析是在 24 位值的 (m x n) 矩阵上完成的。
分析后,矩阵必须被分解回三个 8 位通道以显示结果。
我现在在做什么:
- 遍历矩阵中的所有值
- 将每个十进制值转换为二进制(使用
dec2bin) - 将三个二进制值组合在一起得到一个 24 位数字(使用
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 x n) 个值。
问题是巨大的计算时间。
我知道这样做是不正确的。我可以做任何矩阵运算来实现这一点,以便快速完成计算吗?
【问题讨论】: