二维测量--轮辋和轮胎的检查

对应示例程序:
rim.hdev

目标:提取圆孔以及包含印记字符的区域

思路为:
      1.读取图像,窗口初始化
      2.先定位圆孔的位置和测量直径:
         a.分割提取出灰度较低的区域 再根据圆度和面积筛选出较小的圆孔
         b.之后 膨胀一次 腐蚀一次 求二者之间的差值图像进行目标区域的定位
         c.根据上述定位区域 截取ROI图像 再进行边缘检测 和椭圆拟合 得到 圆孔的直径等相关测量参数
      3.定位字符区域:
         a.将图像进行局部阈值分割,再根据面积,椭圆半径等参数的筛选,定位出字符区域
         b.上面提取的图像 有干扰 不太好区分 就把他合并成一个区域 先闭操作进行放大 再根据面积筛选出包含ROI的不规则区域
         b.将不规则区域进行凸包操作
         d.将与之前的阈值图 进行交集计算 抠出ROI
      总结:这个例程其实主要用到的就是Blob分析的手法。

图像:
                                                                       原图在这里插入图片描述
                                                                    圆孔的定位和测量结果图在这里插入图片描述
                                                                     包含干扰区域的字符图像

在这里插入图片描述
                                                                       闭操作结果图

在这里插入图片描述
                                                                       凸包图

在这里插入图片描述

                                                                       结果图

在这里插入图片描述

代码:

* Set the display parameters and read the image
//初始化  设置窗口  读入图像
dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 768, 576, 'black', WindowID)
set_display_font (WindowID, 16, 'mono', 'true', 'false')
read_image (Rim, 'rim')
dev_display (Rim)
disp_continue_message (WindowID, 'black', 'true')
stop ()

//Blob分析:  
//阈值分割提取出灰度较低的区域  再根据圆度和面积筛选出较小的圆孔
//之后 膨胀一次 腐蚀一次  求二者之间的差值图像进行目标区域的定位
//根据上述定位区域  截取ROI区域  再进行边缘检测  和椭圆拟合  得到 圆孔的直径等相关测量参数

* To find the holes, we first segment the dark regions
*为了找到洞,我们首先对暗区域进行分割
threshold (Rim, Dark, 0, 128)
dev_display (Rim)
dev_set_color ('green')
dev_set_draw ('fill')
dev_display (Dark)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* Determine all connected components
connection (Dark, DarkRegions)
* Select regions with circular shape and an area larger than 50 pixel
select_shape (DarkRegions, Circles, ['circularity','area'], 'and', [0.85,50], [1.0,99999])
dev_display (Rim)
dev_set_colored (12)
dev_display (Circles)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* To extract a region that contains just the edges of the circles
* use dilation and erosion.
dilation_circle (Circles, ROIOuter, 8.5)
erosion_circle (Circles, ROIInner, 8.5)
difference (ROIOuter, ROIInner, ROI)
union1 (ROI, ROIEdges)
dev_display (Rim)
dev_set_draw ('margin')
dev_set_line_width (3)
dev_set_color ('green')
dev_display (ROIEdges)
disp_continue_message (WindowID, 'black', 'true')
stop ()

//边缘检测
* Reduce the region of interest (domain) to the extracted
* regions containing the edges.
reduce_domain (Rim, ROIEdges, RimReduced)
* Extract subpixel precise edges
edges_sub_pix (RimReduced, Edges, 'canny', 4, 20, 40)
* Select only the contours with length larger than 30 pixels
select_contours_xld (Edges, RelEdges, 'length', 30, 999999, 0, 0)
dev_display (Rim)
dev_set_colored (12)
dev_display (RelEdges)
disp_continue_message (WindowID, 'black', 'true')
stop ()

//拟合圆
* Fit an ellipse to the extracted edges
fit_ellipse_contour_xld (RelEdges, 'ftukey', -1, 2, 0, 200, 3, 2, Row, Column, Phi, Ra, Rb, StartPhi, EndPhi, PointOrder)
display_ellipses (Rim, Row, Column, Phi, Ra, Rb, WindowID)
* dev_display (Rim)
* disp_ellipse (WindowID, Row, Column, Phi, Ra, Rb)
* disp_arrow (WindowID, Row - Ra * sin(Phi), Column + Ra * cos(Phi), Row + Ra * sin(Phi), Column - Ra * cos(Phi), 1)
* disp_arrow (WindowID, Row + Ra * sin(Phi), Column - Ra * cos(Phi), Row - Ra * sin(Phi), Column + Ra * cos(Phi), 1)
* Phi2 := Phi + 1.57
* disp_arrow (WindowID, Row - Rb * sin(Phi2), Column + Rb * cos(Phi2), Row + Rb * sin(Phi2), Column - Rb * cos(Phi2), 1)
* disp_arrow (WindowID, Row + Rb * sin(Phi2), Column - Rb * cos(Phi2), Row - Rb * sin(Phi2), Column + Rb * cos(Phi2), 1)
* dev_set_color ('yellow')
* for I := 1 to |Row| by 1
*     disp_message (WindowID, 'd: ' + Diameter[I - 1], 'image', Row[I - 1] - (Ra[I - 1] * 1.5), Column[I - 1] - 70, 'yellow', 'false')
* endfor
disp_continue_message (WindowID, 'black', 'true')
stop ()
///接下来 进行字符的定位

//Blob分析:
//将图像进行局部阈值分割,再根据面积,椭圆半径等参数的筛选,定位出字符区域
* Next, the goal is to find the characters in the image.
* Extract small regions with low gray value.
gauss_filter (Rim, RimGauss, 11)  //高斯滤波
dyn_threshold (Rim, RimGauss, SmallAndDarkerRegion, 5, 'dark')  //局部阈值分割图像
dev_display (Rim)
dev_set_draw ('fill')
dev_set_color ('green')
dev_display (SmallAndDarkerRegion)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* Compute connected components
connection (SmallAndDarkerRegion, SmallAndDarker)
* Select all regions with an area between 40 and 400 pixels
select_shape (SmallAndDarker, CharCandidates, 'area', 'and', 40, 400)
* From these regions, select those that can be enclosed by
* a given elliptic region.
select_shape (CharCandidates, PossibleChar, ['ra','rb'], 'and', [10,5], [20,30])  //根据椭圆的半径 进行筛选
dev_display (Rim)
dev_set_colored (12)
dev_display (PossibleChar)
disp_continue_message (WindowID, 'black', 'true')
stop ()


//上面提取的图像 有干扰 不太好区分  就把他合并成一个区域 先闭操作进行放大  再根据面积筛选出包含ROI的不规则区域
//之后 将不规则区域进行凸包操作 
//最后 将与之前的阈值图 进行交集计算  抠出ROI


* Extract connected regions containing all the character
union1 (PossibleChar, ROI)
closing_circle (ROI, CharRegion, 17.5)
connection (CharRegion, CharBlocks)
dev_display (Rim)
dev_set_draw ('margin')
dev_display (CharBlocks)
disp_continue_message (WindowID, 'black', 'true')
stop ()
* Select the region that has an area of at least 400 pixel
select_shape (CharBlocks, CharRegion, 'area', 'and', 400, 99999)
* Transform the region into its enclosing rectangle
shape_trans (CharRegion, ROIChar, 'rectangle2')   //将区域转换成一个矩形
dev_display (Rim)
dev_set_color ('green')
dev_display (ROIChar)
disp_continue_message (WindowID, 'black', 'true')
stop ()
display_ellipses (Rim, Row, Column, Phi, Ra, Rb, WindowID)
* Extract all character candidate regions
* that lie in the extracted rectangle region.
intersection (CharCandidates, ROIChar, Characters)  //计算区域的交集  其实就是定位字符区域
* Show the extracted characters
dev_set_colored (12)
dev_display (Characters)


//下面就是 进行可视化的优化    开个小窗口 把字符摆正显示
* Fit the smallest surrounding rectangle and get its orientation
smallest_rectangle2 (ROIChar, RowChar, ColumnChar, PhiChar, Length1Char, Length2Char)
* Rotate the image and regions so that the characters are parallel to the lower image border
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, rad(180) - PhiChar, RowChar, ColumnChar, HomMat2DRotate)
affine_trans_region (Characters, CharRotated, HomMat2DRotate, 'constant')
affine_trans_image (Rim, RimRotated, HomMat2DRotate, 'weighted', 'false')
dev_open_window (0, 800, 192, 144, 'black', WindowChar)
* For zooming in, extract a rectangle containing the characters
union1 (CharRotated, CharRotatedAll)
smallest_rectangle1 (CharRotatedAll, Row1, Column1, Row2, Column2)
ZoomHeight := Row2 - Row1 + 1
ZoomWidth := Column2 - Column1 + 1
ZoomFactor := min([768 / ZoomWidth,576 / ZoomHeight])
ZoomRow := (Row1 + Row2) / 2
ZoomColumn := (Column1 + Column2) / 2
dev_set_part (ZoomRow - 576 / ZoomFactor / 2, ZoomColumn - 768 / ZoomFactor / 2, ZoomRow + 576 / ZoomFactor / 2 - 1, ZoomColumn + 768 / ZoomFactor / 2 - 1)
dev_display (RimRotated)
dev_set_draw ('fill')
dev_set_colored (12)
dev_display (CharRotated)

用到的几个算子:
    dyn_threshold --局部阈值分割图像
    select_shape --根据参数筛选图像
    shape_trans–转变区域的形状# 学习目标:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: GB/T20234-2015是关于轮胎轮辋接触区域的测量方法和评定准则的国家标准。该标准规定了适用于汽车、摩托车、工程机械、农用车辆和拖拉机等各种车辆的轮胎轮辋接触区域的测量方法和评定准则。 该标准主要包括测量方法和评定准则两个方面,其测量方法可以通过标准的测试来实现,如用转台测力仪测量接触区域的压力分布等。而评定准则则是针对接触区域的能指标进行评价,比如接触面积、应力分布等。 该国家标准的制定有助于提高轮胎轮辋接触区域的质量和安全能,保证车辆行驶过程中的安全和稳定,为车辆部门提供行业规范和技术支持。此外,该标准还可以促进国内轮胎轮辋接触区域测试仪器和设备的发展,推动国内测试仪器和设备的技术升级和提高。 ### 回答2: GB/T20234-2015是一项关于建筑保温材料通用技术要求的标准,标准包括建筑外墙保温系统、建筑内墙保温系统、建筑顶保温系统、地下室和地下管道保温系统的要求。该标准适用于各种建筑材料,不仅保证了建筑的保温能,还对人体健康和环境保护进行了考虑。 该标准强调了保温材料的能、质量和安全,如保温材料的抗压强度、耐候、稳定、吸水率、防火能等方面都有详细的规定。同时还对保温材料的生产、储存、运输、施工等环节提出了具体的要求,确保保温系统的整体质量。此外,标准还对建筑保温材料的检测方法和评价标准进行了详细的规定。 该标准的出台,标志着我国建筑保温领域的规范化程度提高了,产品质量得到了保障,建筑保温材料市场的秩序也将得到进一步规范。同时,该标准的实施将对环境保护和人体健康起到积极的推动作用。 ### 回答3: GB/T20234-2015是指《钢材产品品种及代码》国家标准,是由中国国家标准化管理委员会发布的。该标准规定了用于钢材产品的分类、命名、编码等标准,以便于不同领域的人员区分和识别各种钢材产品,为生产、销售和使用提供方便。 GB/T20234-2015标准中,对钢材产品按其化学成分、结构、加工能、机械能等方面进行了分类,并为每一类别确定了专属的符号代码。这些代码可以让厂家、分销商、工程师和用户更容易地识别和选择适合其需求的钢材产品。 既然作为一个国家标准,那么,它对于国内钢铁行业和相关生产、销售、使用等领域都有重要的影响。具体地说,该标准对以下几个方面产生了积极的影响: 1. 促进行业标准化。GB/T20234-2015标准的出台,标志着我国钢铁行业进一步推进了规范化、标准化的发展。该标准的实施可以规范产品标注和质量认证,提升产品质量和安全,降低贸易壁垒,扩大国内外市场,促进产业升级。 2. 便于产品识别。准确的编码和标注可以让用户、生产商和销售商方便地识别和区分不同种类的钢材产品。这不仅方便了行业内各个环节的管理,还避免了选购、使用和维护过程中的误解和混乱。 3. 增强产品竞争力。具备符合标准的产品可以提高在国际市场上的竞争力,同时可以促进国内企业扩大市场份额。这要求我国钢铁企业必须按照标准要求生产、加工和销售,提高产品质量和品牌信誉度。 以上就是GB/T20234-2015标准的影响及意义,它对于规范标准化、提升产品质量和品牌信誉度、与国际市场接轨等方面都具有重要的作用。因此,我们应该认真遵守并实行这个标准,将其推广到更广泛的领域,为提高我国钢铁行业发展水平做出更大贡献。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值