Name
gen_projective_mosaicT_gen_projective_mosaicGenProjectiveMosaicgen_projective_mosaicGenProjectiveMosaicGenProjectiveMosaic — Combine multiple images into a mosaic image.
Herror gen_projective_mosaic(Hobject Images, Hobject* MosaicImage, const HTuple& StartImage, const HTuple& MappingSource, const HTuple& MappingDest, const HTuple& HomMatrices2D, const HTuple& StackingOrder, const HTuple& TransformDomain, HTuple* MosaicMatrices2D)
HImage HImageArray::GenProjectiveMosaic(const HTuple& StartImage, const HTuple& MappingSource, const HTuple& MappingDest, const HTuple& HomMatrices2D, const HTuple& StackingOrder, const HTuple& TransformDomain, HTuple* MosaicMatrices2D) const
void GenProjectiveMosaic(const HObject& Images, HObject* MosaicImage, const HTuple& StartImage, const HTuple& MappingSource, const HTuple& MappingDest, const HTuple& HomMatrices2D, const HTuple& StackingOrder, const HTuple& TransformDomain, HTuple* MosaicMatrices2D)
HImage HImage::GenProjectiveMosaic(Hlong StartImage, const HTuple& MappingSource, const HTuple& MappingDest, const HHomMat2DArray& HomMatrices2D, const HTuple& StackingOrder, const HString& TransformDomain, HHomMat2DArray* MosaicMatrices2D) const
HImage HImage::GenProjectiveMosaic(Hlong StartImage, const HTuple& MappingSource, const HTuple& MappingDest, const HHomMat2DArray& HomMatrices2D, const HString& StackingOrder, const HString& TransformDomain, HHomMat2DArray* MosaicMatrices2D) const
HImage HImage::GenProjectiveMosaic(Hlong StartImage, const HTuple& MappingSource, const HTuple& MappingDest, const HHomMat2DArray& HomMatrices2D, const char* StackingOrder, const char* TransformDomain, HHomMat2DArray* MosaicMatrices2D) const
void HOperatorSetX.GenProjectiveMosaic(
[in] IHUntypedObjectX* Images, [out] IHUntypedObjectX** MosaicImage, [in] VARIANT StartImage, [in] VARIANT MappingSource, [in] VARIANT MappingDest, [in] VARIANT HomMatrices2D, [in] VARIANT StackingOrder, [in] VARIANT TransformDomain, [out] VARIANT* MosaicMatrices2D)
IHImageX* HImageX.GenProjectiveMosaic(
[in] Hlong StartImage, [in] VARIANT MappingSource, [in] VARIANT MappingDest, [in] IHHomMat2DX* HomMatrices2D, [in] VARIANT StackingOrder, [in] BSTR TransformDomain, [out] IHHomMat2DX** MosaicMatrices2D)
static void HOperatorSet.GenProjectiveMosaic(HObject images, out HObject mosaicImage, HTuple startImage, HTuple mappingSource, HTuple mappingDest, HTuple homMatrices2D, HTuple stackingOrder, HTuple transformDomain, out HTuple mosaicMatrices2D)
HImage HImage.GenProjectiveMosaic(int startImage, HTuple mappingSource, HTuple mappingDest, HHomMat2D[] homMatrices2D, HTuple stackingOrder, string transformDomain, out HHomMat2D[] mosaicMatrices2D)
HImage HImage.GenProjectiveMosaic(int startImage, HTuple mappingSource, HTuple mappingDest, HHomMat2D[] homMatrices2D, string stackingOrder, string transformDomain, out HHomMat2D[] mosaicMatrices2D)
gen_projective_mosaicgen_projective_mosaicGenProjectiveMosaicgen_projective_mosaicGenProjectiveMosaicGenProjectiveMosaic combines the input images contained in
the object ImagesImagesImagesImagesImagesimages into a mosaic image MosaicImageMosaicImageMosaicImageMosaicImageMosaicImagemosaicImage.
The relative positions of the images are defined by
3x3 projective transformation matrices. The array
HomMatrices2DHomMatrices2DHomMatrices2DHomMatrices2DHomMatrices2DhomMatrices2D contains a sequence of these linearized
matrices. The values in MappingSourceMappingSourceMappingSourceMappingSourceMappingSourcemappingSource and
MappingDestMappingDestMappingDestMappingDestMappingDestmappingDest are the indices of the images that the
corresponding matrix applies to. MappingSourceMappingSourceMappingSourceMappingSourceMappingSourcemappingSource=4
and MappingDestMappingDestMappingDestMappingDestMappingDestmappingDest=7 means that the matrix describes
the transformation of the image number 4 into the
projective plane of image 7. The transformation matrices
between the respective image pairs given by MappingSourceMappingSourceMappingSourceMappingSourceMappingSourcemappingSource
and MappingDestMappingDestMappingDestMappingDestMappingDestmappingDest are typically determined with
proj_match_points_ransacproj_match_points_ransacProjMatchPointsRansacproj_match_points_ransacProjMatchPointsRansacProjMatchPointsRansac.
As usual for operators that access image objects (e.g.,
select_objselect_objSelectObjselect_objSelectObjSelectObj), the images are numbered starting from 1, i.e.,
MappingSourceMappingSourceMappingSourceMappingSourceMappingSourcemappingSource, MappingDestMappingDestMappingDestMappingDestMappingDestmappingDest, StartImageStartImageStartImageStartImageStartImagestartImage,
and StackingOrderStackingOrderStackingOrderStackingOrderStackingOrderstackingOrder) must contain values between 1 and the
number of images passed in ImagesImagesImagesImagesImagesimages.
The parameter StartImageStartImageStartImageStartImageStartImagestartImage states which image defines the
image plane of the final image, that is, which input image remains
unchanged in the output image. This is usually an image that is
located near the center of the image mosaic.
The origin of MosaicImageMosaicImageMosaicImageMosaicImageMosaicImagemosaicImage and its size are automatically
chosen so that all of the input images are completely visible.
The order in which the images are added to the mosaic is given by
the array StackingOrderStackingOrderStackingOrderStackingOrderStackingOrderstackingOrder. The first index in this array
will end up at the bottom of the image stack while the last one will
be on top. If 'default'"default""default""default""default""default" is given instead of an array of
integers, the canonical order (images in the order used in
ImagesImagesImagesImagesImagesimages) will be used.
The parameter TransformDomainTransformDomainTransformDomainTransformDomainTransformDomaintransformDomain can be used to determine
whether the domains of ImagesImagesImagesImagesImagesimages are also transformed. Since
the transformation of the domains costs runtime, this parameter
should be used to specify whether this is desired or not. If
TransformDomainTransformDomainTransformDomainTransformDomainTransformDomaintransformDomain is set to 'false'"false""false""false""false""false" the domain of
the input images is ignored and the complete images are
transformed.
On output, the parameter MosaicMatrices2DMosaicMatrices2DMosaicMatrices2DMosaicMatrices2DMosaicMatrices2DmosaicMatrices2D contains a set of
3x3 projective transformation matrices that describe
for each image in ImagesImagesImagesImagesImagesimages the mapping of the image to its
position in the mosaic.
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
Index of the central input image.
Indices of the source images of the transformations.
Indices of the target images of the transformations.
Array of 3x3 projective
transformation matrices.
Stacking order of the images in the mosaic.
Default value:
'default'
"default"
"default"
"default"
"default"
"default"
Suggested values: 'default'"default""default""default""default""default"
Should the domains of the input images also be
transformed?
Default value:
'false'
"false"
"false"
"false"
"false"
"false"
List of values: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"
Array of 3x3 projective
transformation matrices that determine the
position of the images in the mosaic.
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)
proj_match_points_ransacproj_match_points_ransacProjMatchPointsRansacproj_match_points_ransacProjMatchPointsRansacProjMatchPointsRansac,
proj_match_points_ransac_guidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedProjMatchPointsRansacGuided,
vector_to_proj_hom_mat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dVectorToProjHomMat2d,
hom_vector_to_proj_hom_mat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2d
projective_trans_imageprojective_trans_imageProjectiveTransImageprojective_trans_imageProjectiveTransImageProjectiveTransImage,
projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSize,
projective_trans_regionprojective_trans_regionProjectiveTransRegionprojective_trans_regionProjectiveTransRegionProjectiveTransRegion,
projective_trans_contour_xldprojective_trans_contour_xldProjectiveTransContourXldprojective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXld,
projective_trans_point_2dprojective_trans_point_2dProjectiveTransPoint2dprojective_trans_point_2dProjectiveTransPoint2dProjectiveTransPoint2d,
projective_trans_pixelprojective_trans_pixelProjectiveTransPixelprojective_trans_pixelProjectiveTransPixelProjectiveTransPixel
Richard Hartley, Andrew Zisserman: “Multiple View Geometry in
Computer Vision”; Cambridge University Press, Cambridge; 2000.
Olivier Faugeras, Quang-Tuan Luong: “The Geometry of Multiple
Images: The Laws That Govern the Formation of Multiple Images of a
Scene and Some of Their Applications”; MIT Press, Cambridge, MA;
2001.
Matching