首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将8位数的(m )矩阵组合成24位数的(m )矩阵,反之亦然。

将8位数的(m )矩阵组合成24位数的(m )矩阵,反之亦然。
EN

Stack Overflow用户
提问于 2015-08-31 03:08:59
回答 1查看 260关注 0票数 0

假设有(m )的矩阵(尤指p)。带有R和B通道的彩色图像。每个信道信息是8位整数.

但是,为了进行分析,必须将三个8位值组合起来才能得到24位值,并对24位值的(m )矩阵进行分析。

经过分析,将矩阵分解为三个8位通道来显示结果。

我现在在做的是:

  • 迭代矩阵中的所有值。
  • 将每个十进制值转换为二进制(使用dec2bin)
  • 将三个二进制值组合在一起,得到一个24位数字(使用strcatbin2dec)

代码:

代码语言:javascript
复制
 `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 )值。

问题是计算时间很长。

我知道这不是正确的做法。是否有任何矩阵运算,我可以做到这一点,以便计算是快速完成的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-31 04:19:41

虽然我不明白你为什么要用这种方式“组合”rgb飞机,但这会让你在一个命令中找到你想要的东西。

代码语言:javascript
复制
a = bitshift(img(:,:,1),16)+...
     bitshift(img(:,:,2,8)+...
     img(:,:,3);

要逆转这一过程,除了向右移动之外,还需要进行二进制掩蔽。

代码语言:javascript
复制
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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32303468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档