一,抠图
1, dev_get_window (WindowHandle)// 获取窗口句柄
* draw_rectangle2 (WindowHandle, Row, Column, Phi, Length1, Length2)// 绘制仿射矩形
* gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)//显示roi区域
*Image 裁剪的图片
*Rectangle 裁剪的形状
*ImageReduced 裁剪之后的图片
* reduce_domain (Image, Rectangle, ImageReduced) //裁剪区域
* dev_clear_window ()// 清空窗体
* dev_display (ImageReduced) //展示裁剪区域
二,区域轮廓
1,找区域的轮廓信息
read_image (Image, 'brik')
get_image_size (Image, Width, Height) //获取图片大小
*dev_open_window (0, 0, Width, Height, 'black', WindowHandle1)
//打开指定大小的窗体
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) //
打开窗体适应这个图片大小
dev_display (Image)

2,圆形开运算 先腐蚀后膨胀, 先减少部分小的噪声,再整体对区域进行放大
*RegionOpening 开运算之后的图
*3.5 开运算的半径
opening_circle (SelectedRegions, RegionOpening, 3.5)

3,改变区域形状
shape_trans (RegionOpening, RegionTrans, 'rectangle1') //将填充后的区域转换为外接矩形(最小外接矩形)
reduce_domain (Image, RegionTrans, ImageReduced) //按照形状进行裁剪
threshold (ImageReduced, Region1, 80, 255)
boundary (Region1, RegionBorder, 'inner') // 内轮廓
boundary (RegionBorder, RegionBorder1, 'outer') //外轮廓
三,保存图片
1,图片保存
read_image (Image, 'printer_chip/printer_chip_01') //读取图片
dev_get_window (WindowHandle)
dev_disp_text ('hello', 'window', 'top', 'left', 'black', [], [])
【1】,导出窗体 并且窗体上其他标注信息一同导出
*参数1 窗口句柄
*参数2 导出的格式 默认的格式'postscript' 后缀名是.ps,一种资源类型 ,也可以保存成其他格式
*参数3 保存文件名称和路径 相对路径
dump_window (WindowHandle, 'postscript', '1')
dump_window (WindowHandle, 'bmp', '2')
【2】,把窗体转成图片格式
dump_window_image (Image1, WindowHandle)
【3】,保存圆图片
第 1 个参数:要保存的图像
第 2 个参数:保存格式(tiff/png/jpg)
第 3 个参数:质量 / 压缩(0 = 无损)
第 4 个参数:保存的文件名
write_image (Image, 'tiff', 0, '3')
【4】,保存窗体转成的图片
write_image (Image1, 'tiff', 0, '4')
2,生成棋盘格图片
【1】,参数1 生成棋盘格的区域
参数34 生成区域的大小
参数5/6 生成格子的大小
gen_checker_region (RegionChecker, 511, 511, 32, 32)
【2】,把区域转成二值化的图片格式
BinImage 输出的二值化图片
255 是前景颜色
*0 是背景颜色
region_to_bin (RegionChecker, BinImage, 255, 0, 512, 512)
【3】,裁剪指定区域的图像
read_image (Image2, 'monkey')
裁剪的是 100, 100(坐标),
28, 128(宽度和高度) 的部分
crop_part (Image2, ImagePart, 48, 154, 37, 20)
//绘制椭圆,分割区域
draw_ellipse (WindowHandle, Row, Column, Phi, Radius1, Radius2)
gen_ellipse (Ellipse, Row, Column, Phi, Radius1, Radius2)
reduce_domain (Image2, Ellipse, ImageReduced)
四,阈值分割和其他算子
1,快速阈值分割方式 :该算子不会逐步检查每个像素点,从20*20这个范围内查找中心像素值,如果中间像素,灰度值在128-255范围 ,可以认为这个范围就是一个连通区域,体现快速阈值分割
fast_threshold (Image, Region, 128, 255, 20)
2,对图片使用均值处理
参数10 和10 结构图的大小, 值越大 越模糊,
mean_image (Image, ImageMean, 10, 10)
3,动态阈值分割 传递俩张图片,使用俩张图片进行阈值处理
参数1 原始图片
参数2 图像处理之后的图像,中值滤波、均值滤波、高斯滤波等处理之后的图片
参数3 输出区域
参数4 偏移值 原始图减去处理之后的图偏移范围
参数5 提取亮的部分
dyn_threshold (Image, ImageMean, Region, 10, 'light')
4,anisometry 外接矩形长轴和短轴的比例
select_shape (ConnectedRegions, SelectedRegions, ['area','anisometry'], 'and', [150,1], [9999,2])
5,填充形状
填充选中区域内部的孔洞(把空心变成实心)
fill_up (SelectedRegions, RegionFillUp)
将填充后的区域转换为外接矩形(最小外接矩形)
shape_trans (RegionFillUp, RegionTrans, 'rectangle2')
orientation_region (SelectedRegions, Phi) // 获取角度
length:=30
area_center (RegionTrans, Area, Row, Column)// 获取区域中心点
dev_get_window (WindowHandle)
boundary (RegionTrans, RegionBorder, 'inner')//找轮廓
dev_display(Image)
dev_display (RegionBorder)
disp_arrow (WindowHandle, Row, Column, Row-length*sin(Phi),//绘制箭头 Column+length*cos(Phi), 1)
五,腐蚀、膨胀、打开、关闭 (图形预处理)
1,圆形的腐蚀:
3.5腐蚀区域的半径
erosion_circle (Region, RegionErosion, 3.5)
2,形态学膨胀
dilation_circle (RegionErosion, RegionDilation, 3.5)
3,打开运算 先腐蚀后膨胀
opening_circle (Region, RegionOpening,3.5)
4,关闭运算 先膨胀再腐蚀
closing_circle (Region, RegionClosing, 11.5)
5,gen_circle (Circle, 200, 200, 3.5)
参数1 传入的区域
参数2 结构图 可以使用gen_circle等绘制出来结构图
参数3 输出的区域
参数4 形态学操作迭代次数,1 形态学操作一次
dilation1 (Region1, Circle, RegionDilation1, 1)
*dilation_circle (Region1, RegionDilation2, 3.5)// 等同于上面这俩句所实现的功能
六,顶帽和底帽
1,创建一个SE结构图
byte 创建一个结构转成byte类型的图片
100 、100 结构图的大小
最后一个参数 结构图中间灰度值
gen_disc_se (SE, 'byte',100, 100, 255)
2,获取像素点灰度值 原图中心点灰度值
get_grayval (Image, Width/2, Height/2, Grayval)
3,对原始图片进行开运算 结构图是顶帽的结构图
gray_opening ( Image,SE, ImageOpening)
get_grayval (ImageOpening,Width/2, Height/2, Grayval2)
4,顶帽:顶帽之后的图= 原始图片-gray_opening(打开运算之后的图)
顶帽使用的场景:提取图像当中的微小的亮斑(如医学上影像中病灶、工业检测中亮的缺陷)
参数1 输入图片
参数2 输入结构图
参数3 经过顶帽之后的处理图
gray_tophat (Image, SE, ImageTopHat)
获取顶帽之后的图中心点的灰度值
get_grayval (ImageTopHat, Width/2, Height/2, Grayval1)
5,底冒
底帽之后的图= 原始图片-gray_closing(闭运算之后的图)
底帽使用的场景:提取图像当中的微小的暗斑(如医学上影像中肿瘤、工业检测中暗的缺陷)
