在Python中歪曲数组

时间:2015-10-12 15:45:09

标签: python image numpy image-processing scipy

我有一个2D数组,我将使用scipy.misc.toimage()将其保存为灰度图像。在这样做之前,我想将图像倾斜一个给定的角度,插值如scipy.ndimage.interpolation.rotate()

enter image description here

上图仅用于说明偏斜过程。我知道我必须放大我的图像才能包含偏斜的版本。我怎样才能做到这一点?我更喜欢使用scipy。

1 个答案:

答案 0 :(得分:3)

这个脚本可以做到这一点。

a=imread("sorNB.png")
h,l=a.shape
dl=50
b=numpy.zeros((h,l+dl),dtype=a.dtype)
for y in range(h):
    dec=(dl*(h-y))//h
    b[y,dec:dec+l]=a[y,:]

由于内部赋值(b[y,dec:dec+l]=a[y,:])纯粹是numpy,因此非常快。

修改

感谢ivan_pozdeev。插值的方法:

from scipy.ndimage.interpolation import geometric_transform
a=imread("sorNB.png")
h,l=a.shape
def mapping(lc):
    l,c=lc
    dec=(dl*(l-h))/h
    return l,c+dec
figure(1)    
dl=50;c=geometric_transform(a,mapping,(h,l+dl),order=5,mode='nearest')
imshow (concatenate((a,zeros((225,50)),c),axis=-1),cmap=cm.gray)

sof