gen_projective_mosaic(Images : MosaicImage : StartImage, MappingSource, MappingDest, HomMatrices2D, StackingOrder, TransformDomain : MosaicMatrices2D)
gen_projective_mosaic将输入图像Images 组合成马赛克图像。
图像的相对位置由3x3投影变换矩阵定义。
数组HomMatrices2D包含这些线性化矩阵的序列。
MappingSource和MappingDest中的值是对应矩阵所应用的图像的索引。
MappingSource=4, MappingDest=7表示矩阵描述了图像4到图像7射影平面的变换。
MappingSource和MappingDest给出的图像对之间的转换矩阵通常由proj_match_points_ransac确定。
与通常访问图像对象的操作符(例如select_obj)一样,图像的编号从1开始,
即、MappingSource、MappingDest、StartImage和StackingOrder必须是图像Images 中的图像数量和1之间的值。
参数StartImage表示哪个图像定义了最终图像的图像平面,
即哪个输入图像在输出图像中保持不变。
这通常是位于图像镶嵌中心附近的图像。
自动选择MosaicImage的原点及其大小,使所有输入图像都完全可见。
将图像添加到马赛克中的顺序由数组MosaicImage 给出。
这个数组中的第一个索引将位于图像堆栈的底部,而最后一个索引将位于顶部。
如果给定的是“default”而不是整数数组,
则使用规范顺序(图像中 Images图像顺序)。
参数TransformDomain可以用来确定图像的域是否也被转换。
由于域的转换需要运行时间,因此应该使用这个参数来指定是否需要这样做。
如果将TransformDomain设置为“false”,则忽略输入图像的域,并转换完整的图像。
在输出时,参数MosaicMatrices2D包含一组3x3投影变换矩阵,
用于描述 Images中的每个图像到其在马赛克中的位置的映射。
参数:
Images,MosaicImage输入,输出的图像
StartImage,MappingSource,MappingDest中心输入图像的索引,变换的源图像的索引,变换的目标图像的索引。
HomMatrices2D3x3射影变换矩阵的数组。
StackingOrder马赛克图像的叠加顺序。
TransformDomain输入图像区域是否也转换的标识,
MosaicMatrices2D由3x3投影变换矩阵组成的数组,用于确定图像在马赛克中的位置。
例程:
gen_empty_obj (Images)
for J := 1 to 6 by 1
read_image (Image, 'mosaic/pcb_'+J$'02')
concat_obj (Images, Image, Images)
endfor
From := [1,2,3,4,5]
To := [2,3,4,5,6]
Num := |From|
ProjMatrices := []
for J := 0 to Num-1 by 1
F := From[J]
T := To[J]
select_obj (Images, ImageF, F)
select_obj (Images, ImageT, T)
points_foerstner (ImageF, 1, 2, 3, 200, 0.3, 'gauss', 'false', \
RowJunctionsF, ColJunctionsF, CoRRJunctionsF, \
CoRCJunctionsF, CoCCJunctionsF, RowAreaF, \
ColAreaF, CoRRAreaF, CoRCAreaF, CoCCAreaF)
points_foerstner (ImageT, 1, 2, 3, 200, 0.3, 'gauss', 'false', \
RowJunctionsT, ColJunctionsT, CoRRJunctionsT, \
CoRCJunctionsT, CoCCJunctionsT, RowAreaT, \
ColAreaT, CoRRAreaT, CoRCAreaT, CoCCAreaT)
proj_match_points_ransac (ImageF, ImageT, RowJunctionsF, \
ColJunctionsF, RowJunctionsT, \
ColJunctionsT, 'ncc', 21, 0, 0, 480, 640, \
0, 0.5, 'gold_standard', 1, 4364537, \
ProjMatrix, Points1, Points2)
ProjMatrices := [ProjMatrices,ProjMatrix]
endfor
gen_projective_mosaic (Images, MosaicImage, 2, From, To, ProjMatrices, \
'default', 'false', MosaicMatrices2D)
|