一、绘制区域
*拿到窗口句柄
dev_get_window (WindowHandle)
绘制有角度的矩形 out:phi->(长半轴)的朝向(角度),单位为弧度。
draw_rectangle2 (WindowHandle, Row, Column, Phi, Length1, Length2)
生成有角度的矩形
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
绘制没有角度的矩形
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle1, Row1, Column1, Row2, Column2)
绘制圆
draw_circle (WindowHandle, Row3, Column3, Radius)
gen_circle (Circle, Row3, Column3, Radius)
绘制椭圆 phi1->长半轴的朝向(角度),单位为弧度 radius1->长半轴 radius2->短半轴
draw_ellipse (WindowHandle, Row4, Column4, Phi1, Radius1, Radius2)
gen_ellipse (Ellipse, Row4, Column4, Phi1, Radius1, Radius2)
绘制直线
draw_line (WindowHandle, Row11, Column11, Row21, Column21)
gen_region_line (RegionLines, Row11, Column11, Row21, Column21)
绘制任意区域
draw_region (Region, WindowHandle)
二、区域的形态学操作
腐蚀
erosion_circle (Region, RegionErosion, 3.5)
erosion_rectangle1 (RegionErosion, RegionErosion1, 11, 11)
膨胀
dilation_circle (RegionErosion1, RegionDilation, 3.5)
dilation_rectangle1 (RegionDilation, RegionDilation1, 11, 11)
开运算(非常重要):
改善区域质量(填充孔洞、平滑边界),而不是简单地扩展区域,同时尽量保持目标物体的整体形状和位置。
闭运算(非常重要):
消除图像中细小的、孤立的噪声点或前景像素,同时在一定程度上保持物体的整体形状和位置
三、区域之间的交集、并集、差集、补集等
*清空窗口
dev_clear_window ()
*绘制任意区域1、2
draw_region (Region1, WindowHandle)
draw_region (Region2, WindowHandle)
交集
intersection (Region1, Region2, RegionIntersection)
差集 区域1 减去 区域1与区域2的交集
difference (Region1, Region2, RegionDifference)
并集 区域1与区域2一同占据的所有区域
union2 (Region1, Region2, RegionUnion)
补集 区域取反,除了区域1以外的区域
complement (Region1, RegionComplement)
四、区域形状的变换
根据区域所在位置、角度、大小直接转变改区域的形状
shape_trans (Region1, RegionTrans, 'convex')
shape_trans (Region1, RegionTrans1, 'rectangle1')
shape_trans (Region1, RegionTrans2, 'rectangle2')
shape_trans (Region1, RegionTrans3, 'inner_circle')
shape_trans (Region1, RegionTrans4, 'outer_circle')
五、移动区域
move_region (Region1, RegionMoved, 50, 100)
六、仿射变换,移动和旋转区域(推荐)
移动区域
*生成移动变换矩阵
*Row1, Column1, Angle1, Row2, Column2, Angle2 相当于Column方向位移-100 (对应窗口往左位移100像素)
vector_angle_to_rigid(0,0,0,0,-100,0,HomMat2D)
affine_trans_region (Region1, RegionAffineTrans, HomMat2D,'false')
*Row方向移动100 (对应窗口往下位移100像素)
vector_angle_to_rigid (0,0,0,100,0,0, HomMat2D1)
affine_trans_region (Region1, RegionAffineTrans1, HomMat2D1, 'false')
角度变换
*获取旋转中心
area_center (Region1, Area, Row5, Column5)
*生成对应旋转变换矩阵
vector_angle_to_rigid (Row5, Column5,0,Row5, Column5,rad(90), HomMat2D2)
*使用变换矩阵旋转
affine_trans_region (Region1, RegionAffineTrans2, HomMat2D2, 'nearest_neighbor')
3015

被折叠的 条评论
为什么被折叠?



