问题描述
如果问题不好请先发帖道歉,承诺改进!我正在尝试为图像编写一个插值函数,它当前是用单个像素的 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 (将#修改为@)