read_image(Image, 'fabrik') threshold(Image, Region, 128, 255) connection (Region, ConnectedRegions) *變換區域的形狀(凸包性等) shape_trans(ConnectedRegions, RegionTrans, 'convex') *區域篩選 select_shape(ConnectedRegions, ConnectedRegions, 'area', 'and', 100, 99999) *平行於主軸的最小矩形 smallest_rectangle1 (ConnectedRegions, Row1, Column1, Row2, Column2) *任意方向的最小矩形(複雜但快速的方法) smallest_rectangle2(ConnectedRegions, Row, Column, Phi, Length1, Length2) *最小外接圓 smallest_circle(ConnectedRegions, Row3, Column3, Radius) gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2) gen_rectangle2 (Rectangle1, Row, Column, Phi, Length1, Length2) gen_circle(Circle, Row3, Column3, Radius) count_obj(Rectangle,Number2) count_obj (Circle, Number3) *把第二個參數裏的所有區域合併到第一個參數的每一個區域中 union2 (Rectangle,Circle,RegionUnion1) connection (RegionUnion1, ConnectedRegions1) count_obj(ConnectedRegions1, Number1) *把所有ROI合併成一個區域 union1 (Circle, RegionUnion) count_obj(RegionUnion, Number) *計算每個輸入區域的補集 complement (RegionUnion, RegionComplement) *第一個參數中的每一個區域與第二個參數中的區域進行相交 intersection(Circle,Rectangle,RegionIntersection) *去掉第二個參數與第一個參數共有的區域(在第一個區域中出現但不在第二個區域中) difference(Rectangle,ConnectedRegions,RegionDifference) draw_rectangle1(3600, Row11, Column11, Row21, Column21) gen_rectangle1 (Rectangle2, Row11, Column11, Row21, Column21) *求Region指定特徵值 region_features (Rectangle2,'area', Value) *裁剪圖像(兩種方法) add_channels(Rectangle2, Image, GrayRegions) crop_domain (GrayRegions, ImagePart) reduce_domain (Image,Rectangle2, ImageReduced) crop_domain(ImageReduced, ImagePart1) *對灰度值進行線性變換(g' := g * Mult + Add) scale_image(Image,ImageScaled,1,20) min_max_gray(Rectangle2, ImageScaled, 0, Min, Max, Range) *把灰度值拉昇到0-255 scale_image_max(ImageScaled, ImageScaleMax) min_max_gray (Rectangle2, ImageScaleMax, 0, Min1, Max1, Range1) 算子釋義: shape_trans(Region : RegionTrans : Type : ) 參數Type的可選項如下: convex:凸包性 ellipse:與輸入區域有相同的矩和區域的橢圓 outer_circle:最小外接圓 inner_circle:最大內接圓 rectangle1:平行於座標軸的最小外接矩形 rectangle2:最小外接矩形 inner_rectangle1:平行於座標軸的最大內接矩形 inner_rectangle2:輸入區域的骨架點擁有同輸入區域的重心點最小的距離 PS:如果Type是outer_circle,最終的圓形區域不是完全覆蓋輸入區域,因爲內部算法原理 是由算子smallest_circle和gen_circle完成的。由smallest_circle計算的半徑能夠小到1/sqrt(2)-0.5個像素。 同時,由gen_circle生成的圓在雙方向上由0.5個像素轉換。因此,當加入雙方的影響, 原因區域可能要超出返回圓形區域至多1個像素
Halcon 基本算子釋義
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.