*彩图阈值分割:
•彩图转灰图:rgb1_to_gray ()
•从彩图当中提取3个通道的图像:decompose3 ()
•合并两个通道的算子:compose2()
•合并三个通道的算子,又合并为之前的彩图:compose3()
•获取图像是有几个通道组成的:count_channels ()
•通过索引值提取通道对应的图像:access_channel ()
•展示图像:dev_display()
*// 读取一张照片 read_image (Image1, 'claudia') *// 彩图转灰图 rgb1_to_gray (Image1, GrayImage) *// 从彩图当中提取3个通道的图像 decompose3 (Image1, Image11, Image2, Image3) *// 合并多个通道的图像 compose2 (Image11, Image2, MultiChannelImage)//compose2合并两个通道的算子 compose3 (Image11, Image2, Image3, MultiChannelImage1)//compose3合并三个通道的算子,又合并为之前的彩图 *// 展示合并之后的图像 dev_display (MultiChannelImage1) *// 获取图像是有几个通道组成的 count_channels (MultiChannelImage1, Channels)//3 *// 通过索引值提取通道对应的图像 access_channel (Image1, Image4, 3)*腐蚀和膨胀:
•圆形的腐蚀 :erosion_circle ()
•形态学膨胀:dilation_circle ()
•形态学开运算(先腐蚀后膨胀):opening_circle ()
•形态学闭运算(先膨胀后腐蚀):closing_circle ()
*// 获取照片 read_image (Image, 'pcb_layout') *// 阈值分割 threshold (Image, Region, 0, 128) *// 圆形的腐蚀 半径是3.5 erosion_circle (Region, RegionErosion, 3.5) *// 形态学膨胀 dilation_circle (Region, RegionDilation, 3.5) *// 形态学开运算(先腐蚀后膨胀) opening_circle (Region, RegionDilation, 3.5) *// 形态学闭运算(先膨胀后腐蚀) closing_circle (RegionDilation, RegionClosing, 3.5)*顶帽和底帽:
•创建一个顶帽的参考图:gen_disc_se()
•获取某个点灰度值的算子:get_grayval()
•灰度顶帽变换:gray_tophat()
•灰度开运算:gray_opening ()
•灰度底帽变换:gray_bothat ()
•灰度闭运算:gray_closing()
* ============================================== *// 顶帽(gray_tophat) & 底帽(gray_bothat) 原理验证 *// 顶帽公式:ImageTopHat = Image - ImageOpening (开运算) *// 底帽公式:ImageBottomHat = ImageClosing (闭运算) - Image * ============================================== *// 清空窗体 dev_clear_window () *// 获取照片 read_image (Image, 'printer_chip/printer_chip_01') *// 获取图片大小 get_image_size (Image, Width, Height) *// 显示图片 dev_display (Image) *// 创建一个顶帽/底帽的参考图(结构元素) *// byte: 图像的类型,字节类型 *// 21, 21: 参考图的大小 *// 10: 圆盘的半径 *// 255: 参考图的颜色灰度值 gen_disc_se (SE, 'byte', 21, 21, 255) *// ============ 顶帽操作验证 ============ *// 对图像进行顶帽操作 *// 参数1 目标图像进行顶帽处理 *// 参数2 结构图 可以通过gen_disc_se创建一个结构图 *// 参数3 顶帽之后的图像 gray_tophat (Image, SE, ImageTopHat) *// 灰度的开运算 gray_opening (Image, SE, ImageOpening)//21*21 *// 计算差值图像:Image - ImageOpening sub_image (Image, ImageOpening, ImageDiff1, 1, 0) *// 显示顶帽操作结果 dev_display (ImageTopHat) *// 显示差值 dev_display (ImageDiff1) *// ============ 底帽操作验证 ============ *// 对图像进行底帽操作 gray_bothat (Image, SE, ImageBotHat) *// 闭运算(用于验证) gray_closing (Image, SE, ImageClosing) *// 计算差值图像:ImageClosing - Image sub_image (ImageClosing, Image, ImageDiff2, 1, 0) *// 显示底帽操作结果 dev_display (ImageBotHat) *// 显示差值 dev_display (ImageDiff2) *// ============ 灰度值验证 ============ *// 选择中心点进行验证 Row := Height/2 Col := Width/2 *// 获取各个图像的灰度值 get_grayval (Image, Row, Col, Grayval_Original) get_grayval (ImageOpening, Row, Col, Grayval_Opening) *// ============ 应用示例 ============ *// 顶帽应用:提取亮的小物体(比如芯片上的标记) *// 通过顶帽增强原始图像中的亮细节 add_image (Image, ImageTopHat, ImageEnhanced1, 1, 0) *// 底帽应用:提取暗的小物体(比如缺陷) *// 通过底帽增强原始图像中的暗细节 add_image (Image, ImageBotHat, ImageEnhanced2, 1, 0)*求边界轮廓:
•裁剪图像:reduce_domain()
•找外边界轮廓:boundary (, , 'outer')
*// 获取图片//--------------------- read_image (Image, 'fabrik') *// 阈值//--------------------- threshold (Image, Region, 80, 110) *// 连通//--------------------- connection (Region, ConnectedRegions) *// 面积筛选//--------------------- select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 40000, 99999) *// 形态学处理//--------------------- *// 打开运算 先腐蚀后膨胀, *// 参数1 对目标区域进行开运算 *// 参数2 开运算之后的 *// 参数3 腐蚀形状的半径 opening_circle (SelectedRegions, RegionOpening, 3.5) *// 形状变换的算子 把开运算之后的图像进行变换成其他形状//--------------------- *// 'rectangle1' 转换的形状类型 矩形 shape_trans (RegionOpening, RegionTrans, 'rectangle1') *// 裁剪图像 根据形状变换之后的矩形来去裁剪//--------------------- reduce_domain (Image, RegionTrans, ImageReduced) *// 阈值//--------------------- threshold (ImageReduced, Region1, 80, 255) *// 找内边界轮廓//--------------------- boundary (Region1, RegionBorder, 'inner') *// 找外边界轮廓//--------------------- boundary (Region1, RegionBorder2, 'outer')希望对大家有所帮助, 感谢大家的关注和点赞。