如何向量化函数的输入

问题描述

如果问题不好请先发帖道歉,承诺改进!我正在尝试为图像编写一个插值函数,它当前是用单个像素的 R、G、B 值的数组编写的。如何扩展函数获取具有尺寸形状的图像 [1080,1920,3]?我知道我可以写一个 for 循环,但它是一个我会经常使用的函数,所以试图找出是否有更快的方法

def tetra_interp(transform_ndarray,pixel_rgb):
  
  r = pixel_rgb[0]
  g = pixel_rgb[1]
  b = pixel_rgb[2]

  Rt = transform_ndarray[0]
  Gt = transform_ndarray[1]
  Bt = transform_ndarray[2]
  Ct = transform_ndarray[3]
  Mt = transform_ndarray[4]
  Yt =transform_ndarray[5]
  Wt =transform_ndarray[6]
  Blkt = transform_ndarray[7]

  if r>g:
    if g>b:
      interp_pixels = r*Rt + g*(Yt-Rt) + b*(Wt)
    elif r>b:
      interp_pixels = r*Rt + g*(Wt-Mt) + b*(Mt-Rt)
    else:
      interp_pixels= r*(Mt-Bt) + g*(Wt-Mt) + b*Bt
  else:
      if b>g:
        interp_pixels = r*(Wt-Ct) + g*(Ct-Bt) + b*Bt;
      elif b>r:
        interp_pixels = r*(Wt-Ct) + g*Gt + b*(Ct-Gt);
      else:
        interp_pixels = r*(Yt-Gt) + g*Gt + b*(Wt-Yt);
  return interp_pixels

rand_image = np.random.rand(10,5,3)
rand_image_reshape = rand_image.reshape(-1,3)
transform_matrix = np.array([[1.2,.2,.1],[0,1,0],1],[1,0]])
vectorized_tetra =np.vectorize(tetra_interp)
transformed_image = vectorized_tetra(transform_matrix,rand_image_reshape)

我收到“标量变量的索引无效”错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)