计算机视觉--图像到图像的映射

第三章 图像到图像的映射

(一)图像仿射变换到目标图像

图像中的图像(仿射扭曲),将图像或者图像的一部分放置在另一幅图像中,使得它们能够和指定的区域或者标记物对齐; 图像的仿射变换是二维坐标到二维坐标的线性变换,而且保留了原图像的“平直性”和“平行性”,但是仿射变换可以改变原图像的角度,使其仿射之后变得倾斜。
代码:
#-- coding: utf-8 --
from PCV.geometry import homography, warp
from PIL import Image
from pylab import *
from scipy import ndimage

#example of affine warp of im1 onto im2

im1 = array(Image.open(‘F:/VSCode/pcv-book-code-master03/111.jpg’).convert(‘L’))
im2 = array(Image.open(‘F:/VSCode/pcv-book-code-master03/112.jpg’).convert(‘L’))
#set to points
tp = array([[240,700,700,240],[300,300,780,780],[1,1,1,1]])
#tp = array([[675,826,826,677],[55,52,281,277],[1,1,1,1]])
im3 = warp.image_in_image(im1,im2,tp)
figure()
gray()
subplot(141)
axis(‘off’)
imshow(im1)
subplot(142)
axis(‘off’)
imshow(im2)
subplot(143)
axis(‘off’)
imshow(im3)

#set from points to corners of im1
m,n = im1.shape[:2]
fp = array([[0,m,m,0],[0,0,n,n],[1,1,1,1]])
#first triangle
tp2 = tp[:,:3]
fp2 = fp[:,:3]
compute H
H = homography.Haffine_from_points(tp2,fp2)
im1_t = ndimage.affine_transform(im1,H[:2,:2],
(H[0,2],H[1,2]),im2.shape[:2])
#alpha for triangle
alpha = warp.alpha_for_triangle(tp2,im2.shape[0],im2.shape[1])
im3 = (1-alpha)im2 + alphaim1_t
#second triangle
tp2 = tp[:,[0,2,3]]
fp2 = fp[:,[0,2,3]]
#compute H
H = homography.Haffine_from_points(tp2,fp2)
im1_t = ndimage.affine_transform(im1,H[:2,:2],
(H[0,2],H[1,2]),im2.shape[:2])
#alpha for triangle
alpha = warp.alpha_for_triangle(tp2,im2.shape[0],im2.shape[1])
im4 = (1-alpha)im3 + alphaim1_t
subplot(144)
imshow(im4)
axis(‘off’)
show()

实验结果:
在这里插入图片描述
实验用了仿射变换在图像的使用,使原图像通过仿射变换放置到目标图像中,因为在Python中关于仿射变换的具体代码已经集合封装到warp.py和homography.py中,只需要导入直接使用里面的函数,就可以跑出结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值