derivate_vector_field(VectorField : Result : Sigma, Component : )
derivate_vector_field将向量场的分量与高斯函数的导数进行卷积,并计算由此得到的各种特征。
derivate_vector_field只接受语义类型为“vector_field_relative”的向量字段。
向量场F(r,c)=(u(r,c),v(r,c))和optical_flow_mg中定义的一样,是高斯函数的参数。(平滑量)。
如果在Sigma中传递一个值,那么在列和行方向上的平滑量是相同的。
如果在Sigma中传递两个值,第一个值指定列方向的平滑量,第二个值指定行方向的平滑量。
Component 的可能值为:
curl
向量场的旋度。旋度的一个应用是分析光流场。打个比方,旋度是如果向量场是流体,小船会旋转多少。
divergence
向量场的散度。“divergence”的一个应用是分析光流场。打个比方,如果向量场是流体,散度就是源和汇的位置。
当在光度立体上下文中使用时,操作符derivate_vector_field提供了另外两个参数,
它们专门用于处理photometric_stereo返回的梯度场。
在这种情况下,我们将输入向量场解释为下垫面的梯度。
在下面的公式中,输入向量场记作
其中输入的第一个和第二个分量是曲面f(r,c)的梯度场。
式中f_rc表示梯度场第一分量在列方向上的一阶导数。
mean_curvature
当输入向量场 VectorField被解释为梯度场时,下垫面的平均曲率H。
使用“mean_curvature”的一个应用是处理photometric_stereo返回的向量场。
对向量场进行滤波后,甚至可以分割出微小的划痕或凸起。
gauss_curvature
当输入向量场 VectorField 被解释为梯度场时,下垫面的高斯曲率K。
使用' gauss_曲率'的一个应用程序是处理photometric_stereo返回的向量场。
对向量场进行滤波后,甚至可以分割出微小的划痕或凸起。
如果向量场的下表面是可展的,高斯曲率为零。
例程:
* 例程演示使用光度立体技术检查药品水泡的背面。4张图像是从药物背面拍摄,光线来自不同的方向。
dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
* 显示不同光照下的4图像
read_image (Images, 'photometric_stereo/blister_back_0' + [1:4])
for I := 1 to 4 by 1
select_obj (Images, ObjectSelected, I)
dev_display (ObjectSelected)
endfor
* 应用光度立体法测定反射率和表面梯度。
Tilts := [6.1,95.0,-176.1,-86.8]
Slants := [41.4,42.6,41.7,40.9]
ResultType := ['gradient','albedo']
photometric_stereo (Images, HeightField, Gradient, Albedo, Slants, Tilts, ResultType, 'poisson', [], [])
* 显示反射率图像
dev_display (Albedo)
stop ()
* 利用梯度场作为算子derivate_vector_field的输入,计算曲面的高斯曲率。
*在曲率图像中,缺陷通常很容易检测到。
derivate_vector_field (Gradient, GaussCurvature, 1, 'gauss_curvature')
* 检测缺陷:在曲率图像中分割平板区域
regiongrowing (GaussCurvature, Regions, 1, 1, 0.001, 250)
select_shape (Regions, TabletRegions, ['width','height'], 'and', [150,150], [200,200])
shape_trans (TabletRegions, TabletRegions, 'convex')
union1 (TabletRegions, TabletRegions)
erosion_circle (TabletRegions, TabletRegions, 3.5)
* 搜索平板的缺陷
reduce_domain (GaussCurvature, TabletRegions, ImageReduced)
abs_image (ImageReduced, ImageAbs)
threshold (ImageAbs, Region, 0.03, 255)
closing_circle (Region, RegionClosing, 10.5)
connection (RegionClosing, ConnectedRegions)
select_shape (ConnectedRegions, Defects, 'area', 'and', 10, 99999)
area_center (Defects, Area, Row, Column)
gen_circle (Circle, Row, Column, gen_tuple_const(|Row|,20.5))
*显示曲率图像中的缺陷
dev_set_draw ('margin')
dev_set_color ('red')
dev_set_line_width (2)
dev_display (GaussCurvature)
dev_display (Circle)
stop ()
*显示反照率图像中的缺陷
dev_set_draw ('margin')
dev_set_color ('red')
dev_display (Albedo)
dev_display (Circle)
例程检查药片的缺陷,执行结果0
|