图像到图像的映射

1.单应性变换
单应性变换是将一个平面内的点映射到另一个平面内的二维投影变换。具有很强的实用性。
2.仿射变换
仿射变换(Affine Transformation)是一种二维坐标到二维坐标之间的线性变换,保持二维图形的“平直性”。
简单来说,仿射变换就是允许图形任倾斜,且允许图形在两个方向上任意伸缩变换。
它可以保持原来的线共点,点共线之间的关系不变,保持原来相互平行的线依旧平行,中点仍为中点,线段之间的关系及比例保持不变。但,仿射变换不能保持原来线段的长度,也不能保持原来的夹角角度不变。
仿射变换可以通过一系列的原子变换的复合来实现,包括:平移(Translation)、缩放(Scale)、翻转(Flip)、旋转(Rotation)和剪切(Shear)。图像到图像的映射
仿射变换可以用下面公式表示:图像到图像的映射
这个矩阵乘法的计算如下:
图像到图像的映射
仿射的代码及效果图为:
from PCV.geometry import warp,homography
from PIL import Image
from pylab import *
from scipy import ndimage

im1 = array(Image.open(“D://Program Files//image//21.jpg”).convert(“L”))
im2 = array(Image.open(“D://Program Files//image//22.jpg”).convert(“L”))

#tp=array([[264,538,540,264],[40,36,605,605],[1,1,1,1]])
#tp=array([[250,639,635,250],[184,170,773,784],[1,1,1,1]])
tp=array([[250,739,735,250],[150,190,773,784],[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)
show()
效果图;
图像到图像的映射
代码运行过程中可能会出现如图错误:原因是因为新版matplotlib不兼容Delaunay,并把Delaunay划到scipy中
图像到图像的映射
解决方法:在warp.py中,将from matplotlib import delaunay换成from scipy.spatial import Delaunay即可
3.Alpha通道
Alpha通道是计算机图形学中的术语,指的是特别的通道,意思是“非彩色”通道,主要用来保存选区和编辑选区。一般的,彩色图像包含三种颜色通道:GBR,每个通道在各个像素上都拥有具体的强度或值,每个通道的强度决定图像中高像素的颜色。Alpha通道就是在原来的GBR三个通道上加一个通道,用于向图像中的像素指定透明度,也是8位,那么有Alpha通道的文件就是32位位图文件,alpha 的值为 0 表示透明,alpha 的值为 255 则表示不透明。
Alpha通道技术是非曲直图像合成的最基本技术,我们通常在图像处理的过程中会遇到往往需要向图像中添加透明度信息,如公司logo的设计,其输出图像文件就需要添加透明度,即需要在RGB三个通道的基础上添加alpha通道信息。这里介绍两种常见的向RGB图像中添加透明度的方法
代码为:
#-- coding: UTF-8 --
from PCV.geometry import warp,homography
from PIL import Image
from pylab import *
from scipy import ndimage
#-- coding: UTF-8 --
from PIL import Image
img = Image.open(“D://Program Files//image//10.jpg”)
img = img.convert(‘RGBA’)
r, g, b, alpha = img.split()
alpha = alpha.point(lambda i: i>0 and 178)
img.putalpha(alpha)
imshow(img)
show()

效果图为:
图像到图像的映射
(图像来源:集美大学)