adjust_mosaic_images T_adjust_mosaic_images AdjustMosaicImages AdjustMosaicImages adjust_mosaic_images 调整拼接图像(算子)
名称
adjust_mosaic_images T_adjust_mosaic_images AdjustMosaicImages AdjustMosaicImages adjust_mosaic_images — 对全景图像应用自动色彩校正。
签名
void AdjustMosaicImages (const HObject& Images , HObject* CorrectedImages , const HTuple& From , const HTuple& To , const HTuple& ReferenceImage , const HTuple& HomMatrices2D , const HTuple& EstimationMethod , const HTuple& EstimateParameters , const HTuple& OECFModel )
HImage HImage ::AdjustMosaicImages (const HTuple& From , const HTuple& To , Hlong ReferenceImage , const HTuple& HomMatrices2D , const HString& EstimationMethod , const HTuple& EstimateParameters , const HString& OECFModel ) const
HImage HImage ::AdjustMosaicImages (const HTuple& From , const HTuple& To , Hlong ReferenceImage , const HTuple& HomMatrices2D , const HString& EstimationMethod , const HString& EstimateParameters , const HString& OECFModel ) const
HImage HImage ::AdjustMosaicImages (const HTuple& From , const HTuple& To , Hlong ReferenceImage , const HTuple& HomMatrices2D , const char* EstimationMethod , const char* EstimateParameters , const char* OECFModel ) const
HImage HImage ::AdjustMosaicImages (const HTuple& From , const HTuple& To , Hlong ReferenceImage , const HTuple& HomMatrices2D , const wchar_t* EstimationMethod , const wchar_t* EstimateParameters , const wchar_t* OECFModel ) const
(
Windows only)
static void HOperatorSet .AdjustMosaicImages (HObject images , out HObject correctedImages , HTuple from , HTuple to , HTuple referenceImage , HTuple homMatrices2D , HTuple estimationMethod , HTuple estimateParameters , HTuple OECFModel )
HImage HImage .AdjustMosaicImages (HTuple from , HTuple to , int referenceImage , HTuple homMatrices2D , string estimationMethod , HTuple estimateParameters , string OECFModel )
HImage HImage .AdjustMosaicImages (HTuple from , HTuple to , int referenceImage , HTuple homMatrices2D , string estimationMethod , string estimateParameters , string OECFModel )
描述
adjust_mosaic_images adjust_mosaic_images AdjustMosaicImages AdjustMosaicImages AdjustMosaicImages adjust_mosaic_images 执行全景图中图像的辐射调整。待校正的图像需通过 Images Images Images Images images images 参数传递,校正后的图像将通过 CorrectedImages CorrectedImages CorrectedImages CorrectedImages correctedImages corrected_images 参数返回。
参数 From From From From from from 和 To To To To to to 必须包含全景图中所有图像对的源索引和目标索引。每组图像对的投影 3x3 矩阵需通过 HomMatrices2D HomMatrices2D HomMatrices2D HomMatrices2D homMatrices2D hom_matrices_2d 传递。用于亮度和白平衡参考的图像通过参数 ReferenceImage ReferenceImage ReferenceImage ReferenceImage referenceImage reference_image 待定。
这意味着,一张图像将指定“理想”的亮度和白平衡设置。所有其他图像都将被校正,使其亮度和白平衡与参考图像一致。换言之,参考图像本身不会被修改,但所有其他图像都会被调整。
EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod estimation_method 用于选择采用快速但精度较低的确定方法,还是采用较慢但精度更高的确定方法。通过将 EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod estimation_method 设置为
'standard' "standard" "standard" "standard" "standard" "standard" 或 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard" 来实现。
基于 'standard' "standard" "standard" "standard" "standard" "standard" 的方法仅采用每对图像重叠区域内所有图像的平均灰度值差异。而 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard" 方法则明确考虑重叠区域内每个像素的灰度值差异。
在所有情况下最小化的误差函数均通过计算对应灰度值之间差异的平方和来获得。
单个方法的可用性取决于所选的 EstimateParameters EstimateParameters EstimateParameters EstimateParameters estimateParameters estimate_parameters ,该参数决定了用于估计辐射调整项的模型。通过选择
'vignetting' "vignetting" "vignetting" "vignetting" "vignetting" "vignetting" 选项,始终可以确定图像中的渐晕程度。但若选择此项,则必须将 EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod estimation_method 设置为 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard" 。对于其余辐射调整项,可提供三种不同选项:
图像渐晕的估算基于众所周知的
方法。该方法假设图像中心不存在渐晕现象,且渐晕随视角增大而按上述方程增加。
1. 基于加法模型的图像调整。该方法仅适用于曝光或白平衡差异极小的图像调整。选择此方法时,需将 EstimateParameters EstimateParameters EstimateParameters EstimateParameters estimateParameters estimate_parameters 设置为 'add_gray' "add_gray" "add_gray" "add_gray" "add_gray" "add_gray" 。该模型可以仅使用 EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod estimation_method = 'standard' "standard" "standard" "standard" "standard" "standard" 进行选择,也可以与 EstimateParameters EstimateParameters EstimateParameters EstimateParameters estimateParameters estimate_parameters = 'vignetting' "vignetting" "vignetting" "vignetting" "vignetting" "vignetting" 组合使用,并且仅使用 EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod estimation_method = 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard" 进行选择。
该模型基于以下假设:通过为每张图像(除参考图像外)添加一个独立数值,即可校正图像间的灰度值差异。本质上,对每张图像的修改可表示为对
scale_image scale_image ScaleImage ScaleImage ScaleImage scale_image 的调用:
scale_image(Image_n,CorrectedImage_n,1.0,Add_n) scale_image(Image_n,CorrectedImage_n,1.0,Add_n) ScaleImage(Image_n,CorrectedImage_n,1.0,Add_n) ScaleImage(Image_n,CorrectedImage_n,1.0,Add_n) ScaleImage(Image_n,CorrectedImage_n,1.0,Add_n) scale_image(Image_n,CorrectedImage_n,1.0,Add_n)
其中
Add_n 是该图像的校正项。
2. 基于线性模型的图像调整。该模型假设图像由采用线性传递函数的相机拍摄,因此调整项以乘法系数形式表示。选择此模型时,需将 EstimateParameters EstimateParameters EstimateParameters EstimateParameters estimateParameters estimate_parameters 设置为 'mult_gray' "mult_gray" "mult_gray" "mult_gray" "mult_gray" "mult_gray" 。可通过 EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod estimation_method = 'standard' "standard" "standard" "standard" "standard" "standard" 或 EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod estimation_method = 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard" 调用该模型。也可通过 EstimateParameters EstimateParameters EstimateParameters EstimateParameters estimateParameters estimate_parameters = 'vignetting' "vignetting" "vignetting" "vignetting" "vignetting" "vignetting" 进行组合调用,此时需要将 EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod estimation_method 设置为 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard" 。
该模型基于以下假设:通过将每张图像的灰度值乘以一个系数,即可校正图像间的灰度值差异。本质上,对每张图像的修改仍可表示为对
scale_image scale_image ScaleImage ScaleImage ScaleImage scale_image 的调用:
scale_image(Image_n,CorrectedImage_n,Mult_n,0) scale_image(Image_n,CorrectedImage_n,Mult_n,0) ScaleImage(Image_n,CorrectedImage_n,Mult_n,0) ScaleImage(Image_n,CorrectedImage_n,Mult_n,0) ScaleImage(Image_n,CorrectedImage_n,Mult_n,0) scale_image(Image_n,CorrectedImage_n,Mult_n,0)
其中
Mult_n 是该图像的校正项。
3. 基于标定模型的图像调整。该模型假设图像由采用非线性传递函数的相机拍摄。通过 OECFModel OECFModel OECFModel OECFModel OECFModel oecfmodel 选定的 OECF 类函数用于近似图像采集过程中实际使用的 OECF。与线性模型类似,校正项以乘法系数形式呈现。通过设置 EstimateParameters EstimateParameters EstimateParameters EstimateParameters estimateParameters estimate_parameters = ['mult_gray','response'] ["mult_gray","response"] ["mult_gray","response"] ["mult_gray","response"] ["mult_gray","response"] ["mult_gray","response"] 可选择此模型,调用时必须指定 EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod estimation_method = 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard" 。若需同时测定渐晕程度,可通过设置 EstimateParameters EstimateParameters EstimateParameters EstimateParameters estimateParameters estimate_parameters = 'vignetting' "vignetting" "vignetting" "vignetting" "vignetting" "vignetting" 实现。
该模型与线性模型相似。然而在此情况下,相机可能具有非线性响应特性。这意味着在将图像灰度值与其对应的校正系数相乘之前,必须先将灰度值反投影至线性响应曲线。为此需确定相机的响应特性。由于响应特性通常在图像序列中保持不变,故假设该参数在整个图像序列中为常数。
任何类型的函数都可被视为 OECF 的候选方案。如同 radiometric_self_calibration radiometric_self_calibration RadiometricSelfCalibration RadiometricSelfCalibration RadiometricSelfCalibration radiometric_self_calibration 算子所采用的多项式拟合方法,但在拼接应用中的典型图像处理中,这种方法效果欠佳。其根本原因在于多项式拟合需要确定的参数过多。因此,仅能估算更简单的响应函数类型。目前仅提供所谓的拉盖尔(Laguerre)函数作为解决方案。
拉盖尔型 OECF 的响应仅由一个名为 Phi 的参数决定。第一步,将整个灰度值谱(对于 8 位图像而言即 0 至 255 的值)转换为 [0:1] 区间内的浮点数。随后基于此计算 OECF 的反投影,并将所得灰度值再次转换回原始区间。
基于拉盖尔型 OECF 将灰度值逆变换回线性值的过程由下列方程描述:
其中 I_l 为线性灰度值,I_nl 为(非线性)灰度值。
参数 OECFModel OECFModel OECFModel OECFModel OECFModel oecfmodel 仅在选择标定模型时使用。否则,对 OECFModel OECFModel OECFModel OECFModel OECFModel oecfmodel 的任何输入都将被忽略。
参数 EstimateParameters EstimateParameters EstimateParameters EstimateParameters estimateParameters estimate_parameters 也可用于影响算子的性能和内存消耗。通过设置 'no_cache' "no_cache" "no_cache" "no_cache" "no_cache" "no_cache" 可禁用内部缓存机制。此开关仅在 EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod estimation_method 设置为 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard" 时生效。否则将被忽略。禁用内部缓存后,算子将显著降低内存占用,但每次最小化算法迭代时需重新计算对应的灰度值对。因此,仅当计算过程中物理内存耗尽且操作系统开始使用交换空间时,才建议禁用缓存功能。
影响性能的第二种方式是采用子采样。当将 EstimateParameters EstimateParameters EstimateParameters EstimateParameters estimateParameters estimate_parameters 设置为 'subsampling_2' "subsampling_2" "subsampling_2" "subsampling_2" "subsampling_2" "subsampling_2" 时,图像会在内部以2倍缩放比例进行缩小处理。尽管提供了建议的取值列表,但不仅限于2和4的倍数,任何整数值都可通过在 EstimateParameters EstimateParameters EstimateParameters EstimateParameters estimateParameters estimate_parameters 中向 subsampling_ 添加该数值来指定。由此,图像数据量得以大幅缩减,从而显著加快了内部最小化计算的速度。事实上,适度采用子采样技术甚至可能获得更佳效果,因为它同时能降低轻微错位像素的影响。尽管当 EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod estimation_method 设置为 'standard' "standard" "standard" "standard" "standard" "standard" 时,子采样也会影响最小化过程,但它主要适用于 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard" 。
关于在应用程序中使用 adjust_mosaic_images adjust_mosaic_images AdjustMosaicImages AdjustMosaicImages AdjustMosaicImages adjust_mosaic_images 的更多通用说明:
渐晕估算功能仅在图像中存在明显渐晕时才能有效运作。否则,算子可能会导致结果出现异常。
响应估计过程相当缓慢,因为该问题相当复杂。因此,在时间敏感的应用场景中不宜确定响应值。此外,只有当图像之间存在较大的亮度差异时,才能正确确定响应值。
无法修正饱和度。若图像中存在饱和区域,这些区域将保持饱和状态。
adjust_mosaic_images adjust_mosaic_images AdjustMosaicImages AdjustMosaicImages AdjustMosaicImages adjust_mosaic_images 仅能用于校正因曝光差异(快门速度、光圈)或光照强度不同导致的图像亮度差异,无法修正单张图像内因光照不均匀造成的亮度差异。
执行信息
多线程类型:可重入(与非独占算子并行运行)。
多线程作用域:全局(可从任何线程调用)。
未采用并行化处理。
参数
Images Images Images Images images images (输入对象) (multichannel-)image-array → object HImage HObject HImage Hobject (byte)
输入图像。
CorrectedImages CorrectedImages CorrectedImages CorrectedImages correctedImages corrected_images (输出对象) (multichannel-)image-array → object HImage HObject HImage Hobject * (byte)
输出图像。
From From From From from from (输入控制) integer-array → HTuple Sequence[int] HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
源图像列表。
To To To To to to (输入控制) integer-array → HTuple Sequence[int] HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
目标图像列表。
ReferenceImage ReferenceImage ReferenceImage ReferenceImage referenceImage reference_image (输入控制) integer → HTuple int HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
参考图像。
HomMatrices2D HomMatrices2D HomMatrices2D HomMatrices2D homMatrices2D hom_matrices_2d (输入控制) real-array → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
投影矩阵。
EstimationMethod EstimationMethod EstimationMethod EstimationMethod estimationMethod estimation_method (输入控制) string → HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
用于校正的估计算法。
默认值:
'standard'
"standard"
"standard"
"standard"
"standard"
"standard"
值列表:
'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" "gold_standard" , 'standard' "standard" "standard" "standard" "standard" "standard"
EstimateParameters EstimateParameters EstimateParameters EstimateParameters estimateParameters estimate_parameters (输入控制) string(-array) → HTuple MaybeSequence[str] HTuple Htuple (string) (string ) (HString ) (char* )
待估参数。
默认值:
['mult_gray']
["mult_gray"]
["mult_gray"]
["mult_gray"]
["mult_gray"]
["mult_gray"]
建议值:
'add_gray' "add_gray" "add_gray" "add_gray" "add_gray" "add_gray" , 'mult_gray' "mult_gray" "mult_gray" "mult_gray" "mult_gray" "mult_gray" , 'response' "response" "response" "response" "response" "response" , 'vignetting' "vignetting" "vignetting" "vignetting" "vignetting" "vignetting" , 'subsampling_2' "subsampling_2" "subsampling_2" "subsampling_2" "subsampling_2" "subsampling_2" , 'subsampling_4' "subsampling_4" "subsampling_4" "subsampling_4" "subsampling_4" "subsampling_4" , 'no_cache' "no_cache" "no_cache" "no_cache" "no_cache" "no_cache"
OECFModel OECFModel OECFModel OECFModel OECFModel oecfmodel (输入控制) string → HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
将采用的 OECF 模型。
默认值:
['laguerre']
["laguerre"]
["laguerre"]
["laguerre"]
["laguerre"]
["laguerre"]
值列表:
'laguerre' "laguerre" "laguerre" "laguerre" "laguerre" "laguerre"
示例(HDevelop)
* For the input data to stationary_camera_self_calibration, please
* refer to the example for stationary_camera_self_calibration.
stationary_camera_self_calibration (4, 640, 480, 1, From, To, \
HomMatrices2D, Rows1, Cols1, \
Rows2, Cols2, NumMatches, \
'gold_standard', \
['focus','principal_point'], \
'true', CameraMatrix, Kappa, \
RotationMatrices, X, Y, Z, Error)
adjust_mosaic_images(Images,CorrectedImages,From,To,1,HomMatrices2D, \
'gold_standard',['mult_gray','response'],'laguerre')
结果
如果参数有效,算子
adjust_mosaic_images adjust_mosaic_images AdjustMosaicImages AdjustMosaicImages AdjustMosaicImages adjust_mosaic_images 返回值 2 ( H_MSG_TRUE )。如有必要,则抛出异常。
可能的前趋
stationary_camera_self_calibration stationary_camera_self_calibration StationaryCameraSelfCalibration StationaryCameraSelfCalibration StationaryCameraSelfCalibration stationary_camera_self_calibration
可能的后继
gen_spherical_mosaic gen_spherical_mosaic GenSphericalMosaic GenSphericalMosaic GenSphericalMosaic gen_spherical_mosaic
参考文献
David Hasler, Sabine Süsstrunk: Mapping colour in image stitching
applications. Journal of Visual Communication and Image Representation,
15(1):65-90, 2004.
模块
基础