实验目的
了解定位图像中关键点的过程。该过程主要涉及到四个算子。draw_Region绘制ROI,reduce_domain修改图像的定义域;用critical_points_sub_pix在ROI区域中提取关键点;使用gen_cross_contour_xld标记关键点。
实验程序
*critical_points.dev: locate saddlepoint markers in an image
*
init_hdevelop ()
*****
*step: acquire image
*****
read_image (Image, 'F:/HDevelopWorkSpase/MTVimages/ROI_1-2.jpg')
init_visualization (Image, 3, 'blue', 'margin', Width,Height, WindowHandle)
init_font (WindowHandle,'Courier', 4)
stop ()
*****
*step: draw region
*****
write_string (WindowHandle, 'Drawwith the mouse the region of interest')
dev_set_color ('white')
draw_region(Region, WindowHandle)
dev_display (Region)
stop ()
*****
*step: create ROI
*****
reduce_domain(Image, Region,ImageReduced)
stop ()
*****
*step: process image withinROI
*****
critical_points_sub_pix(ImageReduced, 'facet', 1.5, 8, _, _, _,_, RowSaddle, ColSaddle)
dev_clear_window ()
dev_display (ImageReduced)
dev_set_color ('yellow')
for i := 0 to |RowSaddle|-1 by1
endfor
stop ()
reset_hdevelop ()
实验结果
在该例子中,我们主要熟悉红色部分的四个运算子的使用。
1.draw_region ( : Region : WindowHandle : )(参见ReferenceHDevelop.pdf P346)
该算子实现交互式的绘制一个闭合区域。使用鼠标左键绘制,右键结束绘制,并自动生成一个闭合区域。值得注意的是,输出的目标区域的灰度值未定义。
该算子可能的前继算子:open_window
可能的后继算子有:reduce_domain,disp_region, set_colored, set_line_width, set_draw
功能类似的算子有:draw_circle,draw_ellipse, draw_rectangle1,draw_rectangle2。
更多相关算子参见:draw_polygon,reduce_domain, fill_up, set_color。
Example:
read_image(Image,’fabrik’)
disp_image(Image,WindowHandle)
draw_region(Region,WindowHandle)
reduce_domain(Image,Region,New)
regiongrowing(New,Segmente,5,5,6,50)
set_colored(WindowHandle,12)
disp_region(Segmente,WindowHandle).
2.reduce_domain (Image, Region : ImageReduced : : )
该算子实现缩减图像的定义域。将图像的定义域由全图改变到一个指定的区域。从而形成一幅新的图像ImageReduced,ImageReduced定义域由Image的定义域与指定区域(Region)重合部分确定。但是ImageReduced与Image的尺寸一样。
可能的前继算子:get_domain
功能类似的算子:change_domain,rectangle1_domain, add_channels
更多相关算子参见:full_domain,get_domain, intersection
3.critical_points_sub_pix ( Image : : Filter, Sigma,Threshold : RowMin, ColMin,RowMax, ColMax, RowSaddle,ColSaddle )
(参见ReferenceHDevelop.pdf P950)
该算子实现亚像素精度的图像关键点检测。这些关键点包括局部极大极小值和鞍点。输入图像的每个点都用一个二次多项式近似,然后求该二次多项式的极值与鞍点。如果输入点的海赛矩阵的所有特征值的绝对值都大于阈值Threshold,那么该点定义为关键点。这些特征值对应着灰度曲面的曲率。如果所有的特征值都大于零,则该点是局部极小值;如果所有的特征值都小于零,则该点是局部极大值;若特征中有正有负,则该点为鞍点。
可能的后继算子:gen_cross_contour_xld,disp_cross
功能类似的算子:local_min_sub_pix,local_max_sub_pix, saddle_points_sub_pix
更多相关算子参见:local_min,local_max, plateaus, plateaus_center, lowlands, lowlands_center
4. gen_cross_contour_xld ( : Cross : Row, Col, Size,Angle : ) (参见ReferenceHDevelop.pdf P1393)
该算子在输入点生成一个十字形轮廓。Row、Col表示输入点的行列坐标,Size表示两交叉线的长度,Angle表示十字形的旋转角度(0°与45°)。
可能的前继算子:points_foerstner, points_harris, critical_points_sub_pix, local_max_sub_pix, local_min_sub_pix, saddle_points_sub_pix
功能类似的算子:disp_cross
联系客服