12:图像处理—Blob分析+边缘提取

框架思路

利用blob分析进行图像处理,提取目标进行填充,生成外接圆,最后得到中心点,显示结果


主程序

复制代码
read_image(Image, './1')

*方法一:Blob分析(稳定)**************************************************************************************
threshold (Image, Regions, 152, 255)
opening_circle(Regions, RegionOpening, 13.5)
fill_up(RegionOpening, RegionFillUp)
connection(RegionFillUp, ConnectedRegions)
select_shape_std(ConnectedRegions, SelectedRegions, 'max_area', 70)
area_center(SelectedRegions, Area, Row, Column)

if(Area<1500000)
    return()
endif

*区域转圆形方法一
* smallest_circle(SelectedRegions, Row1, Column1, Radius)
* gen_circle_contour_xld(ContCircle, Row1, Column1, Radius, 0, 6.28318, 'positive', 1)

*区域转轮廓方法二
dev_set_draw('margin')
shape_trans(SelectedRegions, RegionTrans, 'outer_circle')
gen_contour_region_xld(RegionTrans, Contours, 'border')
fit_circle_contour_xld(Contours, 'algebraic', -1, 0, 0, 3, 2, Row1, Column1,Radius, StartPhi, EndPhi, PointOrder)
gen_circle_contour_xld (ContCircle, Row1, Column1, Radius, 0, rad(360), 'positive', 1)

*圆中心
gen_cross_contour_xld(Cross, Row1, Column1, 56, 0.785398)

*显示结果
dev_set_draw('margin')
dev_display(Image)
dev_set_color('red')
dev_display(Cross)
dev_set_color('red')
dev_display(ContCircle)
stop()


*方法二:边缘提取**************************************************************************************************
dev_set_colored(12)
dev_clear_window ()
dev_display (Image)
threshold (Image, Regions, 115, 255)
connection(Regions, ConnectedRegions)
select_shape_std(ConnectedRegions, SelectedRegions, 'max_area', 70)
fill_up(SelectedRegions, RegionFillUp)
closing_circle(RegionFillUp, RegionClosing, 53.5)

shape_trans(RegionClosing, RegionTrans, 'outer_circle')

dilation_circle(RegionTrans, RegionDilation, 15)
erosion_circle(RegionTrans, RegionErosion, 15)
difference(RegionDilation, RegionErosion, RegionDifference)
reduce_domain(Image,  RegionDifference, ImageReduced)
dev_clear_window()
dev_display(ImageReduced)

edges_sub_pix(ImageReduced, Edges, 'canny', 2, 40, 80)
* segment_contours_xld(Edges, ContoursSplit, 'lines_circles', 5, 4, 2)

union_cocircular_contours_xld(Edges, UnionContours, 2.5, 2.1, rad(15), 130, 130, 130, 'true', 1)

length_xld(UnionContours, Length)

tuple_sort_index(Length, Indices)

count_obj(UnionContours, Number)

select_obj(UnionContours, ObjectSelected,Indices[Number-1]+ 1)

fit_circle_contour_xld(ObjectSelected, 'algebraic', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)

gen_cross_contour_xld(Cross, Row, Column, 156, rad(0))

gen_circle_contour_xld(ContCircle, Row, Column, Radius, rad(0),rad(360), 'positive', 1)

*显示结果
dev_set_draw('margin')
dev_display(Image)
dev_set_color('green')
dev_display(Cross)
dev_set_color('red')
dev_display(ContCircle)
dev_get_window(windowhandle)
disp_message(windowhandle,'1', 'window', 10, 10, 'black', 'true')
stop()
相关推荐
星轨初途27 分钟前
LeetCode 热题 100——day11 滑动窗口最大值
数据结构·c++·算法·leetcode·职场和发展
gbase_lmax1 小时前
深度递归与广度递归(DFS,BFS)实现
算法·深度优先·宽度优先
西柚研究生1234562 小时前
论文分析15:跨层特征交互的多尺度无人机小目标检测算法
人工智能·算法·目标检测
rannn_1119 小时前
【力扣hot100】链表专题|160、206、234、141、142
java·算法·leetcode·链表·面试·开发
数模竞赛Paid answer9 小时前
2026年华东杯数学建模B题医药物流安排问题解题全过程文档及程序
算法·数学建模·数据分析·华东杯
不会代码的小猴10 小时前
21. 泛型编程上
开发语言·c++·笔记·算法
AI备案指南-满满11 小时前
大模型与算法备案全流程详解:从零到通过的完整指南
人工智能·算法·备案·大模型备案·算法备案
江畔柳前堤11 小时前
LLM 训练核心机制深度解析:Warmup、Cosine Decay 与 Perplexity 的完整知识体系
网络·人工智能·深度学习·算法·机器学习·语音识别
一只旭宝11 小时前
细讲C加加【9】C++ std::function与std::bind详解|仿函数、绑定器、类成员绑定、占位符、成员偏移指针
开发语言·c++·算法
良木林11 小时前
子串 - LeetCode hot 100
算法·leetcode·职场和发展