Comehaitao
技术员
技术员
  • 最后登录2020-07-03
  • 发帖数40
  • 金币146枚
  • 贡献勋章0枚
阅读:363回复:19

跟随测量角度

楼主#
更多 发布于:2020-07-03 16:18
* This program shows how to detect the edges of a diamond
* with subpixel accuracy and calculate the angle between them.
*
* In contrast to the example measure_diamond.hdev,
* this example uses a metrology model to measure the edges.
*
* First, the top of the diamond is roughly segmented
* to align the metrology objects.
* Then, the metrology model is applied and returns the
* parameters of the fitted lines.
* Finally, the angle between the two lines is computed.
*
* Display initializations
dev_update_off ()
dev_close_window ()
read_image (Image, '1.bmp')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (Image)
get_image_size (Image, Width, Height)
*
* Create the metrology model data structure
create_metrology_model (MetrologyHandle)
* The image size is set in advance to speed up the
* first call of apply_metrology_model.
set_metrology_model_image_size (MetrologyHandle, Width, Height)
* Define the parameters of the metrology line objects
LineRow1 := [155,155]
LineColumn1 := [400,400]
LineRow2 := [290,290]
LineColumn2 := [230,570]
Tolerance := 50
*
LineBeginRowArr:=[]
LineBeginColArr:=[]
LineEndRowArr:=[]
LineEndColArr:=[]


* Create two metrology line objects and set parameters
draw_line (WindowHandle, Row1, Column1, Row2, Column2)
draw_line (WindowHandle, Row11, Column11, Row21, Column21)
LineBeginRowArr[0]:=Row1
LineBeginRowArr[1]:=Row11
LineBeginColArr[0]:=Column1
LineBeginColArr[1]:=Column11


LineEndRowArr[0]:=Row2
LineEndRowArr[1]:=Row21
LineEndColArr[0]:=Column2
LineEndColArr[1]:=Column21


add_metrology_object_line_measure (MetrologyHandle, LineBeginRowArr, LineBeginColArr, LineEndRowArr, LineEndColArr, Tolerance, 1, 10, 20, [], [], Index1)
draw_rectangle1 (WindowHandle, Row12, Column12, Row22, Column22)
* Create region of interest for the alignment
*gen_rectangle1 (Rectangle, LineRow1[0] - 40, LineColumn1[0] - 50, LineRow1[0] + 20, LineColumn1[0] + 50)
gen_rectangle1 (Rectangle, Row12, Column12, Row22, Column22)
* Change the reference coordinate system in which the
* metrology model is given to be situated at the top of the diamond
reduce_domain (Image, Rectangle, ImageReduced)
*threshold (ImageReduced, Region, 128, 255)
*get_region_points (Region, Rows, Columns)


* Matching 01: Create the shape model
create_shape_model (ImageReduced, 5, rad(0), rad(360), rad(0.8202), ['none','no_pregeneration'], 'use_polarity', [49,105,4], 3, ModelID)
* Matching 01: Get the model contour for transforming it later into the image
get_shape_model_contours (ModelContours, ModelID, 1)
*
* Matching 01: Get the reference position
area_center (Rectangle, ModelRegionArea, RefRow, RefColumn)
vector_angle_to_rigid (0, 0, 0, RefRow, RefColumn, 0, HomMat2D)
affine_trans_contour_xld (ModelContours, TransContours, HomMat2D)
*
* Matching 01: Display the model contours
dev_display (Image)
dev_set_color ('green')
dev_set_draw ('margin')
dev_display (Rectangle)
dev_display (TransContours)
find_shape_model (ImageReduced, ModelID, rad(0), rad(360), 0.5, 1, 0.5, 'least_squares', [5,1], 0.75, Row, Column, Angle, Score)
*
* Matching 01: Transform the model contours into the detected positions
for I := 0 to |Score| - 1 by 1
    hom_mat2d_identity (HomMat2D)
    hom_mat2d_rotate (HomMat2D, Angle[I], 0, 0, HomMat2D)
    hom_mat2d_translate (HomMat2D, Row[I], Column[I], HomMat2D)
    affine_trans_contour_xld (ModelContours, TransContours, HomMat2D)
    dev_set_color ('green')
    dev_display (TransContours)
endfor


set_metrology_model_param (MetrologyHandle, 'reference_system', [Row,Column,Angle])
write_metrology_model (MetrologyHandle,'F:/1')
*
* Main loop


draw_rectangle1 (WindowHandle, Row13, Column13, Row23, Column23)
gen_rectangle1 (Rectangle1, Row13, Column13, Row23, Column23)
for I := 1 to 5 by 1
    read_image (Image, 'diamond/diamond_' + I$'02')
    * Roughly segment the diamond's position
   * reduce_domain (Image, Rectangle, ImageReduced)
   * threshold (ImageReduced, Region, 128, 255)
    * Extract the top of the diamond
   * get_region_points (Region, Rows, Columns)
    *
    * Use the top of the diamond to align the metrology model in
    * the current image
    *
    reduce_domain (Image, Rectangle1, ImageReduced1)
    find_shape_model (ImageReduced1, ModelID, rad(0), rad(360), 0.5, 1, 0.5, 'least_squares', [5,1], 0.75, Row, Column, Angle, Score)
    align_metrology_model (MetrologyHandle, Row, Column, Angle)
  
本部分内容设定了隐藏,需要回复后才能看到
喜欢0

最新打赏:0人

我姓杨,却不是你的信
助理工程师
助理工程师
  • 最后登录2020-08-04
  • 发帖数181
  • 金币1041枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
  • 追星一族
沙发#
发布于:2020-07-03 16:37
????????????????
热心市民小丁
初学者
初学者
  • 最后登录2020-08-07
  • 发帖数27
  • 金币88枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
板凳#
发布于:2020-07-03 23:13
没有介绍,有点离谱,哈哈
Siberia
技术员
技术员
  • 最后登录2020-08-08
  • 发帖数57
  • 金币505枚
  • 贡献勋章0枚
地板#
发布于:2020-07-04 10:41
???????????
cwhcwh
技术员
技术员
  • 最后登录2020-08-08
  • 发帖数311
  • 金币152枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
4楼#
发布于:2020-07-04 11:18
不知是啥?  这是?做什么测试?
落叶缤纷飞
初学者
初学者
  • 最后登录2020-08-08
  • 发帖数110
  • 金币53枚
  • 贡献勋章0枚
  • 社区居民
5楼#
发布于:2020-07-07 13:29
???????????
sai71622
技术员
技术员
  • 最后登录2020-08-08
  • 发帖数190
  • 金币222枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
6楼#
发布于:2020-07-10 23:21
???????????????
stonenb
助理工程师
助理工程师
  • 最后登录2020-08-08
  • 发帖数488
  • 金币1326枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
7楼#
发布于:2020-07-12 11:42
同瞅瞅,同好奇。。。
1203288419
初学者
初学者
  • 最后登录2020-07-27
  • 发帖数135
  • 金币88枚
  • 贡献勋章0枚
8楼#
发布于:2020-07-15 15:56
???????????????
wzj230101
技术员
技术员
  • 最后登录2020-08-08
  • 发帖数107
  • 金币318枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
9楼#
发布于:2020-07-20 22:36
看看。。。。。。。。。。
喏喏心木木兮
初学者
初学者
  • 最后登录2020-07-29
  • 发帖数17
  • 金币94枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
10楼#
发布于:2020-07-21 11:22
给大家翻译一下:
该程序显示了如何以亚像素精度检测钻石的边缘并计算它们之间的角度。
*
*与示例measure_diamond.hdev相比,此示例使用度量模型来测量边缘。
*
*首先,将钻石的顶部粗略地分割以对齐度量对象。
*然后,应用度量模型并返回拟合线的参数。
*最后,计算两条线之间的角度。
wb_001
助理工程师
助理工程师
  • 最后登录2020-08-07
  • 发帖数312
  • 金币1095枚
  • 贡献勋章0枚
  • 社区居民
11楼#
发布于:2020-07-21 13:47
????????????????
liu2634103210
技术员
技术员
  • 最后登录2020-08-07
  • 发帖数113
  • 金币399枚
  • 贡献勋章0枚
  • 社区居民
  • 忠实会员
12楼#
发布于:2020-07-21 14:53
????????????????
Zhangjianbo
技术员
技术员
  • 最后登录2020-08-06
  • 发帖数107
  • 金币230枚
  • 贡献勋章0枚
13楼#
发布于:2020-07-26 22:58
看看。。。。。。。。。。
Tornado
技术员
技术员
  • 最后登录2020-08-08
  • 发帖数104
  • 金币243枚
  • 贡献勋章0枚
  • 社区居民
14楼#
发布于:2020-07-28 16:46
????????????????
上一页
游客

返回顶部
支付

欢迎打赏,请选择打赏金额

  • 1元
  • 6元
  • 10元
  • 66元
  • 100元

支付即代表同意《本站支付协议》 有疑问请联系客服