Sha*_*han 3 python interpolation image
我已经使用Image模块在python中读取了一个图像,并将其转换为numpy数组,如下所示......
im=Image.open(infile)
imdata = scipy.misc.fromimage(im)
Run Code Online (Sandbox Code Playgroud)
处理后,我得到的不是整数坐标而是实际值.重要的是要注意它是一个rgb图像.我想将颜色值作为双线性插值.图像中有一种方法
im.getPixel(x,y)
Run Code Online (Sandbox Code Playgroud)
如果我们能够将实际值作为坐标,我不确定.
如果我们在numpy数组中进行,我们可以进行双线性插值,但如果我正确的话,它将对每个通道分开???
谢谢
你是对的,getPixel只接受整数坐标.
如果您不介意它很慢,您可以进行自己的线性插值:
def lerp(a, b, coord):
if isinstance(a, tuple):
return tuple([lerp(c, d, coord) for c,d in zip(a,b)])
ratio = coord - math.floor(coord)
return int(round(a * (1.0-ratio) + b * ratio))
def bilinear(im, x, y):
x1, y1 = int(floor(x)), int(floor(y))
x2, y2 = x1+1, y1+1
left = lerp(im.getpixel((x1, y1)), im.getpixel((x1, y2)), y)
right = lerp(im.getpixel((x2, y1)), im.getpixel((x2, y2)), y)
return lerp(left, right, x)
Run Code Online (Sandbox Code Playgroud)
一个强大的实现bilinear还包括边界检查坐标何时离开图像.
| 归档时间: |
|
| 查看次数: |
2141 次 |
| 最近记录: |