脚本宝典收集整理的这篇文章主要介绍了【2021亚太赛】A题第一问 图像数据预处理与实现过程,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
内容比较齐全的原版思路: https://blog.csdn.net/weixin_43935696/article/details/121555038?spm=1001.2014.3001.5501 第一次梳理与勘误: https://bLOG.csdn.net/QQ_44319167/article/details/121637986
之前比赛由于时间原因,使用了Photoshop进行了图片的预处理,感觉这样不是很妥,因此进行了如下的工作
图片1是属于比较标准的图片,但是却有一些毛刺,会影响到最后的精确计算,所以给它执行和图2相同的预处理步骤
* 读取文件
read_image (Image, 'Pic1_1.bmp')
dev_close_window()
get_image_size(Image, Width, Height)
dev_oPEn_window_fIT_size(0, 0, Height, Height, -1, -1, WindowHandle)
dev_display(Image)
* 灰度处理
rgb1_to_gray (Image, GrayImage)
* 预处理的一些步骤
invert_image (GrayImage, ImageInvert)
emphasize (GrayImage, ImageEmphasize, Width, Height, 1)
scale_image (GrayImage, ImageScaled1, 0.5, 0)
scale_image (GrayImage, ImageScaled2, 1, 100)
* scale_image (GrayImage, ImageScaled3, 1, -100)
* 直方图
* equ_histo_image (ImageScaled2, ImageEquHisto)
* binary_threshold (GrayImage, Region, ';max_separability', 'light', UsedThreshold)
* 亚像素边缘检测
Edges_sub_pix (ImageScaled2, Edges, 'canny', 2, 25, 100)
* 二次筛选处理
select_contours_xld (Edges, SelectedContours, 'contour_length', 50, 3000, -0.5, 0.5)
union_adjacent_contours_xld (SelectedContours, UnionContours, 20 ,20, 'attr_keep')
* select_contours_xld (UnionContours, SelectedContours2, 'contour_length', 500, 10000, -0.5, 0.5)
* select_contours_xld (UnionContours, SelectedContours2, 'contour_length', 500, 3000, -0.5, 0.5)
* union_adjacent_contours_xld (SelectedContours2, UnionContours, 20 ,1, 'attr_keep')
* edges_sub_pix (ImageEquHisto, Edges, 'canny', 2, 20, 120)
见图1-1的预处理过程流程图
将注释改掉
read_image (Image, 'Pic1_3.bmp')
dev_close_window()
get_image_size(Image, Width, Height)
dev_open_window_fit_size(0, 0, Height, Height, -1, -1, WindowHandle)
dev_display(Image)
* 灰度处理
rgb1_to_gray (Image, GrayImage)
* 进一步预处理的一些步骤
invert_image (GrayImage, ImageInvert)
emphasize (GrayImage, ImageEmphasize, Width, Height, 1)
scale_image (GrayImage, ImageScaled1, 0.5, 0)
* scale_image (GrayImage, ImageScaled2, 1, 100)
* scale_image (GrayImage, ImageScaled3, 1, -100)
* 直方图
equ_histo_image (GrayImage, ImageEquHisto)
* binary_threshold (GrayImage, Region, 'max_separability', 'light', UsedThreshold)
* 亚像素边缘检测
edges_sub_pix (ImageEquHisto, Edges, 'canny', 2, 20, 120)
* 二次筛选处理
select_contours_xld (Edges, SelectedContours, 'contour_length', 50, 3000, -0.5, 0.5)
union_adjacent_contours_xld (SelectedContours, UnionContours, 20 ,1, 'attr_keep')
select_contours_xld (UnionContours, SelectedContours2, 'contour_length', 500, 10000, -0.5, 0.5)
* select_contours_xld (UnionContours, SelectedContours2, 'contour_length', 500, 3000, -0.5, 0.5)
* union_adjacent_contours_xld (SelectedContours2, UnionContours, 20 ,1, 'attr_keep')
* edges_sub_pix (ImageEquHisto, Edges, 'canny', 2, 20, 120)
edges_sub_pix (GrayImage, Edges2, 'canny', 2, 20, 80)
之后我们用第一问的方法即可求出轮廓的像素长度
以上是脚本宝典为你收集整理的【2021亚太赛】A题第一问 图像数据预处理与实现过程全部内容,希望文章能够帮你解决【2021亚太赛】A题第一问 图像数据预处理与实现过程所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。