tfjs进行RGB-BGR转换的三种方法

变量定义

var t_rgb; 原始RGB的tensor
var t_bgr; 目标BGR的tensor

小结

默认从frame数组构造的tensor的hwc格式的,所以我们先要将hwc格式转成chw格式,然后再去交换R和B通道的数据,这是从图像层面比较容易想到的过程,但是也比较复杂,方法1就描述了这个过程。

然后我们可以注意到,实际上并不需要显示的CHW格式,我们要做的事情就是交换R和B的值,所以方法2直接在第三个维度去做split,然后重新组合成新的tensor即可。

进一步,我们考虑一下宏观的信息,注意到RGB和BGR,都是三通道,而且只是顺序上相反,所以最简单的方法就是做一个reverse,直接将通道顺序反过来,从RGB直接到BGR。

方法1

  1. hwc转chw
  2. unstack,分成r g b 三个通道
  3. stack,将b g r 组成一个新的tensor
  4. 新的chw的bgr转成hwc的bgr格式
var tensor_chw = t_rgb.transpose([2,0,1]);
var tensor_unstack = tf.unstack(tensor_chw, 0);
var tensor_stack = tf.stack([tensor_unstack[2], tensor_unstack[1], tensor_unstack[0]], 0);
t_bgr = tensor_stack.transpose([2,0,1]);

方法2

  1. split,沿着第三个维度进行切分,三等分,即分成了R G B三个通道
  2. concat,将B G R 三个通道组成新的tensor
var t_split = tf.split(t_rgb, 3, 2);
t_bgr = tf.concat([t_split[2], t_split[1], t_split[0]], 2);

方法3

  1. reverse,在hwc格式的RGB的第三个维度做reverse,直接转成hwc格式的BGR tensor
var t_bgr = tf.reverse(t_rgb, -1);

参考

tfjs API

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值