1.local_max(Image : LocalMaxima : : )
函数从图像Image 中提取所有灰度值大于邻值的像素。
结果保存于LocalMaxima 。
领值可以通过 set_system(::'neighborhood',<4/8>).设置。
2.local_min(Image : LocalMinima : : )
和上面函数类似,函数从图像Image 中提取所有灰度值小于邻值的像素。
以上两函数例程:
read_image (Image, 'particle')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowID)
dev_display (Image)
dev_set_color ('green')
get_system ('neighborhood', Information)
set_system ('neighborhood', 4)
local_max (Image, LocalMaxima)
local_min (Image, LocalMinima)
set_system ('neighborhood', Information)
3.local_max_sub_pix(Image : : Filter, Sigma, Threshold : Row, Column)
local_max_sub_pix从具有亚像素精度的图像中提取局部最大值。
为了做到这一点,在每个点的输入图像是近似于关于X,Y的一个二次多项式,
然后多项式检查局部极大值。偏导数是建立多项式所必需的,
它可以用各种高斯导数计算,也可以用基于滤波器的刻面模型计算,取决于Filter。
在第一种情况下,Sigma决定高斯核的大小,
而在第二种情况下,在处理输入图像之前,由Sigma决定大小的高斯对其进行平滑处理。
因此,“小面”导致更快的提取,代价是略微不准确的结果。
当黑森矩阵的特征值都小于-Threshold时,一个点被认为是局部最大值。特征值对应于灰度值曲面的曲率。
参数
Image 输入的图像
Filter 偏导数的计算方法。有 'facet', 'gauss'
Sigma 高斯函数的Sigma 。如果Filter 是“facet”,Sigma可能是0.0,以避免平滑输入图像。
Threshold海森矩阵特征值的最小绝对值。
Row,Column检测到的极大值的行列坐标。
例程:
CornerRow := 341
CornerCol := 206
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_set_part (0, 0, 512, 512)
* 计算输入图像上的corner_response过滤器的响应,并提取过滤器响应的局部最大值。
read_image (Image, 'fabrik')
corner_response (Image, FilterResponse, 3, 0.04)
local_max_sub_pix (FilterResponse, 'facet', 1.5, 1.1, Row, Col)
gen_cross_contour_xld (Crosses, Row, Col, 6, 0.785398)
* 在滤波器响应图像中显示提取的局部最大值。
dev_display (FilterResponse)
dev_set_color ('red')
dev_display (Crosses)
4.local_min_sub_pix(Image : : Filter, Sigma, Threshold : Row, Column)
和上面函数类似,local_min_sub_pix从Image 中提取具有亚像素精度局部极小值。
例程:
CornerRow := 341
CornerCol := 206
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_set_part (0, 0, 512, 512)
read_image (Image, 'fabrik')
local_min_sub_pix (Image, 'facet', 1.5, 1.1, Row, Col)
gen_cross_contour_xld (Crosses, Row, Col, 6, 0.785398)
dev_display (Image)
dev_set_color ('red')
dev_display (Crosses)
5.saddle_points_sub_pix(Image : : Filter, Sigma, Threshold : Row, Column)
saddle_points_sub_pix以亚像素精度从图像Image 中提取鞍点,
即,其中沿一个方向的图像强度最小,同时沿另一个方向的图像强度最大。
为了做到这一点,在每个点的输入图像被近似为X,Y的一个二次多项式,然后多项式检查鞍点。
偏导数是建立多项式所必需的,它可以用各种高斯导数计算,也可以用基于滤波器的刻面模型计算,由Filter决定。
在第一种情况下,Sigma决定高斯核的大小,
而在第二种情况下,在处理输入图像之前,由Sigma决定大小的高斯对其进行平滑处理。
因此,“facet”导致更快的提取,代价是略微不准确的结果。
如果黑森矩阵的两个特征值的绝对值都大于 Threshold ,
但它们的符号不同,则一个点被认为是鞍点。
特征值对应于灰度值曲面的曲率。
saddle_points_sub_pix特别适用于检测角点,在角点处,
不同强度的字段连接在一起,就像棋盘上的黑白字段一样。
它们的高对比度和形状便于定位和确定这些角的精确位置。
例程:
read_image (Image, 'landmarks')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
* *saddle_points_sub_pix仅适合间通道图像,得转换成灰度图
rgb1_to_gray (Image, GrayImage)
Sigma := 1.5
Threshold := 12
saddle_points_sub_pix (GrayImage, 'facet', Sigma, Threshold, Row, Col)
gen_cross_contour_xld (Crosses, Row, Col, 12, 0.785398)
dev_display (GrayImage)
dev_set_color ('red')
dev_display (Crosses)
|