博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
边缘检测———拟合圆
阅读量:4991 次
发布时间:2019-06-12

本文共 1658 字,大约阅读时间需要 5 分钟。

转自微信公众号:机器视觉那些事

****关注公众号>>>>: 机器视觉那些事儿 ****

****精彩继续......****

*读入图片

read_image (Image, 'cicle.bmp')

*计算图片大小,并以原图尺寸显示

get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window_fit_size (0, 0, Width, Width, -1, -1, WindowHandle)
dev_display (Image)

*01. 设置ROI感兴趣区域

gen_circle (ROI, 257.633, 324.833, 187.017)
* gen_rectangle1 (ROI, 50, 50, 470, 470)
reduce_domain (Image, ROI, ImageReduced)

*02. 二值化处理,并打散连接区域,选取目标区域

threshold (ImageReduced, Regions, 23, 255)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 57706.4, 86146.8)

*03. 将目标区域进行膨胀处理

dilation_circle (SelectedRegions, RegionDilation, 10)

*04. 将目标区域进行腐蚀处理

erosion_circle (SelectedRegions, RegionErosion, 4)
*填充孔洞
fill_up (RegionErosion, RegionFillUp)

*05. 将膨胀后的区域和腐蚀后的区域进行减操作,并进行抠图处理,目的为了得到有边缘的真实图像

difference (RegionDilation, RegionFillUp, RegionDifference)
union1 (RegionDifference, RegionUnion)
reduce_domain (ImageReduced, RegionUnion, ImageReduced1)

*06. 使用canny算子提取亚像素轮廓

edges_sub_pix (ImageReduced1, Edges, 'canny', 1, 20, 40)

*07. 根据得到的真实边缘,进步处理和计算所需的线、弧、圆等

segment_contours_xld (Edges, ContoursSplit, 'lines_circles', 5, 4, 2)
select_contours_xld (ContoursSplit, SelectedContours, 'contour_length', 8, 1000, -0.5, 0.5)
union_adjacent_contours_xld (SelectedContours, UnionContours3, 10, 1, 'attr_keep')
fit_circle_contour_xld (UnionContours3, 'algebraic', -1, 0, 0, 3, 2, Row1, Column1, Radius1, StartPhi, EndPhi, PointOrder)
gen_circle (Circle, Row1, Column1, Radius1)

*显示结果

dev_set_line_width (2)
dev_set_draw ('margin')
dev_display (Image)
dev_display (Circle)

 

 

转载于:https://www.cnblogs.com/yangmengke2018/p/9625691.html

你可能感兴趣的文章
简单理解Socket
查看>>
Hortonworks HDP Sandbox定制(配置)开机启动服务(组件)
查看>>
DHCP Option 60 认识
查看>>
浅析连续子向量,子数组和(一维,二维)问题
查看>>
C/C++中各种类型int、long、double、char表示范围(最大最小值)
查看>>
Linux环境下Eclipse + Tomcat + MySQL 配置J2EE开发环境的方法
查看>>
机器学习实战:第九章 树回归
查看>>
while(~scanf("%d %d",&a,&b))和while(scanf("%d %d",&a,&b)!=EOF)
查看>>
使用vs code开发纸壳CMS并启用Razor智能提示
查看>>
动态投资回收期Pt小于计算期n
查看>>
Python模拟登入豆瓣网,并爬取小组信息
查看>>
初识Jsp,JavaBean,Servlet以及一个简单mvc模式的登录界面
查看>>
@import与link的区别与选择
查看>>
ORA-14411 该 DDL 不能与其他 DDL 并行运行处理办法
查看>>
C#筛法求出范围内的所有质数
查看>>
程序员常用的几款软件
查看>>
noi2014 起床困难综合症
查看>>
.NET ->> 分享一个字符串模糊匹配指数的方法
查看>>
HDU2907凸包+凹面
查看>>
BZOJ 1600: [Usaco2008 Oct]建造栅栏
查看>>