我注意到interp1d可能给出了错误的结果。 结果至少与Gimp和Photoshop中的模拟处理结果不同。其中Gimp和Photoshop的结果几乎相同。 也许这与scipy代码中的一些舍入有关。在
你知道如何消除这些差异吗?我有理由怀疑图形软件的结果更接近完美。在
在以下所有情况下,我只使用1行像素并执行水平缩放。为了清晰起见,图像包含更多行
这是非常奇特的原始图像(#000000像素在#0000FF背景上均匀分隔):
未缩放图像
下面是scipy缩放结果以及gimp和Photoshop的结果。我在上面提到的软件中尝试了许多不同的缩放选项,以及python插值。实际上,在这个非常激进的例子中,不同类型的缩放(立方、线性)在scipy中给出了相同的结果。在
(您可能需要在浏览器中放大图像。我不想执行额外的缩放以不影响原始结果)
gimp/scipy type=“线性”
scipy linear/photoshop/scipy cubic
个人资料(我剪掉了那些毫无意义的纯蓝色长条)
在剖面图上,问题不太明显,尤其是在gimp-scipy的情况下。在位图上,差别是非常明显的。中间的线条完全重叠,但是我们越往两边走,我们就越能看到距离的不同。如何获得更合适的“gimp-like”结果? 对我来说,问题不在于像素值,而在于暗像素之间的距离。我对线性插值很满意,不需要立方,但我把它包括在科学(和比较)的问题中。在
用于插值的我的代码
import numpy as np
from scipy.interpolate import interp1d
import pygame
def splineDecodeColors2(oldchain,newchain):
L0,L1 = len(oldchain[0]),len(newchain[0])
chain0 = np.array(oldchain)
x0 = np.linspace(0, L0-1, L0)
chain1 = np.array(newchain)
for color in xrange(3):
try:
f = interp1d(x0, chain0[color], kind= 'linear')
x = np.linspace(0, L0-1, L1)
chain1[color] = f(x).round()
except ValueError, error:
print error # possibly len(chain)==1
chain1[color]=chain0[color]
return chain1.T
def saveToPNG(img,name):
name=str(name)
img = np.array([img,img,img])
img = np.rot90(img,3)
pygame.image.save(pygame.surfarray.make_surface(img),name+".png")
def main():
a = np.array([[ 0., 0., 0.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 0.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 0.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 0.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 0.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 0.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 0.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 0.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.], [ 0., 0., 255.]]).T
b= np.zeros([3,592])
c = splineDecodeColors2(a,b)
saveToPNG(c,"interlpolated")
if __name__ == '__main__':
main()
目前没有回答
相关问题 更多 >
编程相关推荐