create_scattered_data_interpolator( : : Method, Rows, Columns, Values, GenParamName, GenParamValue : ScatteredDataInterpolatorHandle)
create_scattered_data_interpolator创建了用于对分散数据进行插值的插值器ScatteredDataInterpolatorHandle,
给定为具有相应测量值的Rows, Columns中的数据点。
在参数Method的基础上,给出了插值算法,该算法适用于interpolate_scattered_data.
到目前为止,只支持“thin_plate_splines”。
该方法在全局范围内进行插值,这意味着无论距离多远,所有的点都被视为插值点。
远点的影响与
有关,其中r定义的两点距离。
与interpolate_scattered_data_image相比,
create_scattered_data_interpolator还支持Rows, Columns的亚像素坐标。
创建之后, 调用interpolate_scattered_data 计算未知值的插值。
通过分割插值器的创建(create_scattered_data_interpolator)和计算(interpolate_scattered_data),
在后续步骤中的不同数据点进行插值将变得更有效,
因为插值器只需要创建一次。
以下参数可以使用GenParamName和GenParamValue进行调整:
alpha
参数“alpha”是一个平滑因子。
对于'alpha' = 0, Rows, Columns和Values的所有点都被精确地插值。
随着alpha值的增大,插值会使所有点平滑,
就像所有被插值的点都位于同一个平面上一样。
默认值为0。
限制:'alpha' >= 0
1.clear_scattered_data_interpolator( : : ScatteredDataInterpolatorHandle : )
clear_scattered_data_interpolator清除scatteredainterpolatorhandle给出的分散数据插值器,
并释放插值器所需的所有内存。
调用clear_scattered_data_interpolator后,就不能再使用分散数据插值器了。
句柄ScatteredDataInterpolatorHandle变为无效
2.interpolate_scattered_data( : : ScatteredDataInterpolatorHandle, Row, Column : ValueInterpolated)
interpolate_scattered_data使用scatteredainterpolatorhandle对散列数据点(Row, Column)的值进行插值,
结果保存ValueInterpolated。
与 interpolate_scattered_data_image相比,interpolate_scattered_data还支持Row, Column的亚像素坐标。
在调用interpolate_scattered_data之前,必须使用create_scattered_data_interpolator创建分散数据插值器。
3.interpolate_scattered_data_image(Image, RegionInterpolate : ImageInterpolated :
Method, GenParamName, GenParamValue : )
函数在区域RegionInterpolate内插值图像Image,
结果保存于ImageInterpolated。
Image的图像域与区域RegionInterpolate的差值指定了可用于插值的有效数据点,
而RegionInterpolate指定了应确定图像Image灰度值的点。
用参数Method确定了插值算法。到目前为止,只支持“thin_plate_splines”。
该方法在全局范围内进行插值,这意味着无论距离多远,所有的点都被视为插值点。
远点的影响与有关,r定义的两点距离。
如果在随后的步骤中在不同的点插值相同的图像Image,
那么create_scattered_data_interpolator可能更有效。
以下参数可以使用GenParamName和GenParamValue进行调整:
alpha
参数“alpha”是一个平滑因子。
对于'alpha' = 0,图像中的所有点都被精确地插值。
随着alpha值的增大,插值会使图像点平滑,
使得结果图像ImageInterpolated 的所有插值点都位于一个公共平面上。
默认值为0。限制:'alpha' >= 0
4.interpolate_scattered_data_points_to_image( : ImageInterpolated : Method, Rows,
Columns, Values, Width, Height, GenParamName, GenParamValue : )
函数在Rows, Columns中插入相应的度量值,并在ImageInterpolated中返回结果。
输出图像的大小由Width, Height定义,左上角为(0,0)。
为了在(Rows, Columns)的负坐标处插值,只需相应地平移所有输入点。
用参数Method确定了插值算法。
到目前为止,只支持“thin_plate_splines”。
该方法在全局范围内进行插值,这意味着无论距离多远,
所有的点都被视为插值点。
远点的影响与有关,r定义的两点距离。
与 interpolate_scattered_data_image,相比,
interpolate_scattered_data_points_to_image还支持Rows, Columns的亚像素坐标。
如果在后续步骤中使用相同的数据点(Rows, Columns,Values)插值不同的输出图像,
那么 create_scattered_data_interpolator可能更有效。
可以用GenParamName和GenParamValue调整以下参数:
alpha
参数“alpha”是一个平滑因子。
对于'alpha' = 0,所有传入的点(Rows, Columns,Values)都被精确地插值。
随着alpha值的增大,插值会使所有的点平滑,就像所有的插值点都在一个平面上一样。
默认值为0。限制:'alpha' >= 0
例程:
gen_image_surface_second_order (ImageData, 'real', 1, 1, 0, 0, 0, 1, 24, 24, 48, 48)
gen_circle (Circle, 12, 12, 6)
difference (ImageData, Circle, Region)
reduce_domain (ImageData, Region, ImageReduced)
dev_clear_window ()
dev_display (ImageReduced)
stop()
*仅选择边缘像素计算插值
dilation_circle (Circle, CircleDilation, 1.5)
intersection (CircleDilation, Region, RegionBorderData)
dev_clear_window ()
dev_display (ImageReduced)
dev_display (RegionBorderData)
stop()
*
*像素插值
reduce_domain (ImageData, RegionBorderData, ImageReducedBorder)
interpolate_scattered_data_image (ImageReducedBorder, Circle, ImageInterpolated,'thin_plate_splines', [], [])
paint_gray (ImageInterpolated, ImageData, ImageFilled)
dev_clear_window ()
dev_display (ImageFilled)
gen_contour_region_xld (RegionBorderData, Contours, 'border')
get_contour_xld (Contours, Row, Col)
create_scattered_data_interpolator ('thin_plate_splines', Row, Col, Row, [], [], ScatteredDataInterpolatorHandle)
interpolate_scattered_data (ScatteredDataInterpolatorHandle, Row, Col, ValueInterpolated)
interpolate_scattered_data_points_to_image (ImageInterpolated1, 'thin_plate_splines', Row, Col, ValueInterpolated, 640, 480, [], [])
clear_scattered_data_interpolator (ScatteredDataInterpolatorHandle)
|