学习图像到图像的映射

一、SIFT原理描述
Sift特征匹配算法可以处理两幅图像之间发生平移、旋转、仿射变换情况下的匹配问题,具有很强的匹配能力。
Sift特征匹配算法主要包括两个阶段,一个是Sift特征的生成,即从多幅图像中提取对尺度缩放、旋转、亮度变化无关的特征向量;第二阶段是Sift特征向量的匹配。
Sift特征的生成一般包括以下几个步骤:
1、构建尺度空间,检测极值点,获得尺度不变性;
2、特征点过滤并进行精确定位;
3、为特征点分配方向值;
4、生成特征描述子。

二、α通道的原理描述
1.α通道在电脑图形中,每个象素都包含三个色彩信息通道–红、绿、蓝,在24位的图形中,每个通道又包含了8位色彩深度。如果 图形卡具有32位 总线,附加的8位信号就被用来保存不可见的透明度信号以方便处理用,这就是Alpha通道。白色的alpha象素用于定义不透明的彩色象素,而黑色的alpha象素用于定义透明象素,黑白之间的灰阶用来定义半透明象素。因此,α通道,除RGB或CMYK以外的8位的通道,使用α通道可使图像由不透明渐变到透明。
2.α通道是一种让3D物件产生透明感的技术。屏幕上显示的3D物件,每个像素中有红、绿、蓝三组数值。若3D环境中允许像素能拥有一组α值,我们就称它拥有一个α通道。α值的内容,是记载像素的透明度。这样一来使得每一个物件都可以拥有不同的透明程度。比如说,玻璃会拥有很高的透明度,而一块木头可能就没什么透明度可言。α混合这个功能,就是处理两个物件在萤幕画面上叠加的时候,还会将α值列入考虑,使其呈现接近真实物件的效果。

三、仿射扭曲的简单例子,将图像放置在另外一个图像中,使得他们能够和指定的区域或者标记物对齐。(使用集美大学实拍图)
学习图像到图像的映射_第1张图片

-- 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/311.png’).convert(‘L’))
im2 = array(Image.open(‘F:/VSCode/pcv-book-code-master03/312.png’).convert(‘L’))

set to points

tp = array([[120,260,260,120],[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()

你可能感兴趣的:(学习图像到图像的映射)