日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例

發(fā)布時間:2024/7/23 ChatGpt 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Halcon學習筆記:1D Measuring一維測量_fuse.hdev燈絲測量示例

一.基本概念


基本流程為:

  • 獲取圖像
  • 對圖像進行灰度值標定
    (針對相機獲取的圖像灰度和輸入能量之間的非線性關(guān)系,獲得相機對輸入能量的線性函數(shù))
  • 排列感興趣區(qū)域或圖像
  • 校正圖像
  • 創(chuàng)建測量句柄
  • 進行測量
  • 將測量結(jié)果轉(zhuǎn)換到世界坐標系
  • 結(jié)果可視化
  • 釋放測量句柄。

二.典型相關(guān)算子:

  • 1.gen_rectangle2( : Rectangle : Row, Column, Phi, Length1, Length2 : )
    創(chuàng)建任意方向的一個矩形,控制輸入分別為矩形中心的行列坐標,矩形縱向與水平方向的夾角,長和寬的一半。

  • 2.gen_measure_rectangle2( : : Row, Column, Phi, Length1, Length2, Width, Height, Interpolation : MeasureHandle)
    產(chǎn)生測量句柄,準備提取和矩形主軸垂直的直邊緣。插值方法有:‘nearest_neighbor’, ‘bilinear’, 'bicubic’三種。

  • 3.measure_pairs(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
    抽取和矩形或者圓弧垂直的直線。
    MeasureHandle:測量句柄
    Sigma:進行高斯平滑的方差值。
    Threshold :邊緣的最小幅值。
    Transition:沿主軸方向dark-to-light定義為第一類邊緣,反之為第二類邊緣。
    Select (input_control) string → (string)
    RowEdgeFirst ;ColumnEdgeFirst ;AmplitudeFirst
    第一類邊緣點的行列坐標和幅度值。
    RowEdgeSecond ;ColumnEdgeSecond ;AmplitudeSecond
    第二類邊緣點的行列坐標和幅度值。
    IntraDistance :每個邊緣對之間的距離。
    InterDistance :連續(xù)邊緣對之間的距離。

  • 4.get_points_ellipse( : : Angle, Row, Column, Phi, Radius1, Radius2 : RowPoint, ColPoint)
    返回橢圓上某一點,該點與橢圓中線連線和橢圓長軸正方向成角為參數(shù)Angle。
    Row, Column, Phi, Radius1, Radius2:為橢圓的參數(shù)
    RowPoint, ColPoint:返回點的行列坐標。

  • 5.disp_arc( : : WindowHandle, CenterRow, CenterCol, Angle, BeginRow, BeginCol : )
    在窗口中顯示圓弧。從(BeginRow, BeginCol)點,順時針顯示,角度為Angle

  • 6.gen_measure_arc( : : CenterRow, CenterCol, Radius, AngleStart, AngleExtent, AnnulusRadius, Width, Height, Interpolation : MeasureHandle)
    產(chǎn)生圓弧測量句柄,提取和圓弧垂直的直線。
    AnnulusRadius:為沿著半徑方向測量寬度的一半。

  • 7.count_seconds( : : : Seconds)
    程序執(zhí)行時間測量算子。

Eg. count_seconds(Start)* program segment to be measuredcount_seconds(End)Seconds := End - Start
  • 8.measure_pos(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdge, ColumnEdge, Amplitude, Distance)
    提取和矩形或者弧垂直的邊緣線。

RowEdge, ColumnEdge:提取的邊緣線與測量弧線或測量矩形的交點坐標,為亞像素精度,改算子常和循環(huán)配合使用。
Distance:連續(xù)邊緣線之間的距離。

  • 9.distance_pp( : : Row1, Column1, Row2, Column2 : Distance)
    計算兩點之間的距離。

  • 10.create_funct_1d_pairs( : : XValues, YValues : Function)
    根據(jù)一系列的(x,y)坐標值創(chuàng)建一個函數(shù)。X坐標值會被升序排列。

  • 11.set_fuzzy_measure_norm_pair( : : MeasureHandle, PairSize, SetType, Function : )
    設(shè)置歸一化的隸屬度函數(shù)。
    PairSize:優(yōu)先的邊緣對寬度
    SetType:待選擇的模糊集合
    Function :隸屬度函數(shù)

  • 12.fuzzy_measure_pairs(Image : : MeasureHandle, Sigma, AmpThresh, FuzzyThresh, Transition : RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, RowEdgeCenter, ColumnEdgeCenter, FuzzyScore, IntraDistance, InterDistance)
    創(chuàng)建模糊測理論量句柄,提取和矩形或弧線垂直的直線。
    AmpThresh:最小的邊緣梯度閾值;
    FuzzyThresh:最小的模糊閾值;
    FuzzyScore:對所提取邊緣值的模糊評價;

  • 13.create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID)
    為匹配準備一個形狀模型。模型產(chǎn)生于多個圖像金字塔級數(shù),并儲存在內(nèi)存中。每個級數(shù)再進行多次旋轉(zhuǎn)。最高的金字塔級數(shù)最少需要四個特征點進行匹配。
    Template:定義域用來創(chuàng)建模板的輸入圖像
    NzmLevels: 金字塔的最大級別。
    AngleStart ;AngleExtent ;AngleStep :匹配旋轉(zhuǎn)開始的角度和終止的角度范圍,角度步長,單位弧度。
    Optimization:產(chǎn)生模板的優(yōu)化種類和方法。
    Metric :模板被識別的條件。
    Contrast:模板圖像物體和背景之間或物體各部分之間的灰度差異值。最小為2個元素的數(shù)組。
    MinContrast :最小灰度差異。
    ModelID : 模型句柄代碼。

  • 14.get_shape_model_contours( : ModelContours : ModelID, Level : )
    返回一個形狀模型的多邊形輪廓表示。

  • 15.hom_mat2d_identity( : : : HomMat2DIdentity)
    創(chuàng)建一個2D轉(zhuǎn)換的齊次變換矩陣—平移矩陣。

  • 16.hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate)
    增加一個平移量到其次變換矩陣HomMat2D中。

  • 17.affine_trans_contour_xld(Contours : ContoursAffinTrans : HomMat2D : )
    對多邊形輪廓進行2D映射。HomMat2D為齊次變換矩陣,應(yīng)用到輪廓的每一個點。

  • 18.wait_seconds( : : Seconds : )
    推遲程序執(zhí)行時間。

三、示例:fuse.hdev燈絲測量

main

* fuse.hdev: 測量保險絲的寬度 * dev_update_window ('off') dev_close_window () * **** * 1.取圖、顯示 * **** read_image (Fuse, 'fuse') get_image_size (Fuse, Width, Height) dev_open_window_fit_image (Fuse, 0, 0, Width, Height, WindowID) set_display_font (WindowID, 12, 'mono', 'true', 'false') dev_set_draw ('margin') dev_set_line_width (3) dev_display (Fuse) set_display_font (WindowID, 12, 'mono', 'true', 'false') disp_continue_message (WindowID, 'black', 'true') stop () * **** * 2.創(chuàng)建測量對象 * **** * -> 指定ROI Row := 297 Column := 545 Length1 := 80 Length2 := 10 Angle := rad(90) gen_rectangle2 (ROI, Row, Column, Angle, Length1, Length2) * -> 創(chuàng)建測量對象(準備提取垂直于矩形的直邊,MeasureHandle->檢測矩形的句柄) gen_measure_rectangle2 (Row, Column, Angle, Length1, Length2, Width, Height, 'bilinear', MeasureHandle) dev_display (ROI) disp_continue_message (WindowID, 'black', 'true') stop () * **** * 3.測量 * **** * 提取垂直于矩形或環(huán)形弧的直邊對 * RowEdgeFirst ;ColumnEdgeFirst ;AmplitudeFirst 第一類邊緣點的行列坐標和幅度值 * RowEdgeSecond ;ColumnEdgeSecond ;AmplitudeSecond 第二類邊緣點的行列坐標和幅度值。 * IntraDistance :每個邊緣對之間的距離。 * InterDistance :連續(xù)邊緣對之間的距離。 measure_pairs (Fuse, MeasureHandle, 1, 1, 'negative', 'all', RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance) disp_continue_message (WindowID, 'black', 'true') stop () * **** * 4.可視化結(jié)果 * **** for i := 0 to |RowEdgeFirst| - 1 by 1* 從一個多邊形(作為元組給出)生成一個XLD輪廓gen_contour_polygon_xld (EdgeFirst, [-sin(Angle + rad(90)) * Length2 + RowEdgeFirst[i],-sin(Angle - rad(90)) * Length2 + RowEdgeFirst[i]], [cos(Angle + rad(90)) * Length2 + ColumnEdgeFirst[i],cos(Angle - rad(90)) * Length2 + ColumnEdgeFirst[i]])gen_contour_polygon_xld (EdgeSecond, [-sin(Angle + rad(90)) * Length2 + RowEdgeSecond[i],-sin(Angle - rad(90)) * Length2 + RowEdgeSecond[i]], [cos(Angle + rad(90)) * Length2 + ColumnEdgeSecond[i],cos(Angle - rad(90)) * Length2 + ColumnEdgeSecond[i]])dev_display (Fuse)dev_display (ROI)dev_set_color ('cyan')dev_display (EdgeFirst)dev_set_color ('magenta')dev_display (EdgeSecond)dev_set_color ('blue')if (i == 0)set_tposition (WindowID, RowEdgeFirst[i] + 5, ColumnEdgeFirst[i] + 20)elseset_tposition (WindowID, RowEdgeFirst[i] - 40, ColumnEdgeFirst[i] + 20)endifwrite_string (WindowID, 'width: ' + IntraDistance[i] + ' pix') endfor disp_continue_message (WindowID, 'black', 'true') stop () * **** * 5.清楚測量對象 * **** close_measure (MeasureHandle) dev_update_window ('on') dev_clear_window ()

本例基本步驟:

  • 1.輸入灰度圖像
  • 2.gen_measure_rectangle2,劃定ROI
  • 3.measure_pairs.在ROI內(nèi)測量邊緣對

重要函數(shù)解析:

  • gen_rectangle2 (ROI, Row, Column, Angle, Length1, Length2)
    產(chǎn)生一個矩形,以便用于顯示gen_measure_rectangle2的處理范圍

  • gen_measure_rectangle2 (Row, Column, Angle, Length1, Length2, Width, Height, ‘bilinear’, MeasureHandle)
    產(chǎn)生的這個矩形框?qū)⒆鳛楦信d趣區(qū)域(即為測量對象創(chuàng)建)
    Prepare the extraction of straight edges perpendicular to a rectangle.

  • measure_pairs (Fuse, MeasureHandle, 1, 1, ‘negative_strongest’, ‘a(chǎn)ll’, RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
    第4個參數(shù)閾值比較重要


總結(jié)

以上是生活随笔為你收集整理的Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。