代码语言:javascript复制
from PCV.geometry import warp,homography
from PIL import Image
from pylab import *
from scipy import ndimage
import imageio
def image_in_image(im1,im2,tp):
m,n=im1.shape[:2]#扭曲点
fp=array([[0,m,m,0],[0,0,n,n],[1,1,1,1]])#角点坐标
#计算仿射变换并将其应用于图像
H=homography.Haffine_from_points(tp,fp)#单应性矩阵(3*3)
im1_t=ndimage.affine_transform(im1,H[:2,:2],(H[0,2],H[1,2]),im2.shape[:2])
# 提取由获取矩阵H前2行,将im1仿射成im2所需要图像大小
alpha=(im1_t>0)#二值的alpha图像
return (1-alpha)*im2 alpha*im1_t
im1=array(Image.open('C:/Users/xpp/Desktop/Lena.png').convert('L'))#读取图像
im2=array(Image.open('C:/Users/xpp/Desktop/result01.png').convert('L'))#读取图像
tp=array([[30,30,30,30],[30,30,30,30],[1,1,1,1]])
im3=image_in_image(im1,im2,tp)#像素值替换
imageio.imwrite('C:/Users/xpp/Desktop/result.png',im3)
算法:图像扭曲是属于仿射变换,在各个方向上伸展变换。图像扭曲用于校正图像有损,用于生成更多样本,同时以及用于某种创意目的(例如,变形),同样的技术也适用于视频。纯粹的图像扭曲意味着点对点的映射,而不改变其颜色。
文献:Leicester, J. . Interpol says suspected pedophile caught in New Jersey.