形态学相关算子
腐蚀:利用n*n的结构元素扫描图像的每一个像素,结构元素原点与扫描像素覆盖,进行“与”运算,如果都为1,则结果图像的该像素为1,否则为0。(收缩图像)
膨胀:利用n*n的结构元素扫描图像的每一个像素,结构元素原点与扫描像素覆盖,进行“与”运算,如果都为0,则结果图像的该像素为0,否则为1。(扩大图像)
腐蚀是求局部最小值的操作,结构元沿着图像逐像素滑动,计算结构元覆盖的区域的像素点的最小值,并把这个最小值赋值给结构元原点覆盖的像素点,这种操作可以将图像中小于结构元的细节部分滤除掉。
膨胀操作则与腐蚀相反,结构元覆盖的区域会被拓展。
region边界应用:
原图 - 腐蚀后 = 内边界
原图 - 膨胀后 = 外边界
1.gen_disc_se
功能:创建椭圆形结构元素,用于图像的腐蚀膨胀
2.gray_erosion
功能:使用结构元素对图像做腐蚀操作
3.gray_dilation
功能:使用结构元素对图像做膨胀操作
4.erosion_circle
功能:使用圆形结构元素对区域region做腐蚀操作
5.erosion_rectangle1
功能:使用矩形结构元素对区域region做腐蚀操作
6.dilation_circle
功能:使用圆形结构元素对区域region做膨胀操作
7.dilation_rectangle1
功能:使用矩形结构元素对区域region做膨胀操作
8.erosion1
功能:使用结构元素对区域region做迭代腐蚀操作
9.erosion2
功能:使用结构元素对区域region做迭代腐蚀操作(可设置结构元素原点)
10.dilation1
功能:使用结构元素对区域region做迭代膨胀操作
11.dilation2
功能:使用结构元素对区域region做迭代膨胀操作(可设置结构元素原点)
12.minkowski_add1
功能:使用结构元素对区域region做闵可夫斯基加法操作
13.minkowski_add2
功能:使用结构元素对区域region做闵可夫斯基加法操作(可设置结构元素原点)
如果结构元素对称,则闵可夫斯基加法与膨胀效果一样
如果结构元素不对称,则闵可夫斯基加法与膨胀效果不一样
14.minkowski_sub1
功能:使用结构元素对区域region做闵可夫斯基减法操作
15.minkowski_sub2
功能:使用结构元素对区域region做闵可夫斯基减法操作(可设置结构元素原点)
如果结构元素对称,则闵可夫斯基减法与腐蚀效果一样
如果结构元素不对称,则闵可夫斯基减法与腐蚀效果不一样
16.hit_or_miss
功能:对区域region做击中与击不中区域计算
****************************开运算****************************
先腐蚀后膨胀,用来消除小物体,分离物体,平滑较大物体的边界,扩大暗背景,收缩亮前景。
1.opening
功能:使用结构元素对区域region做开运算
2.opening_circle
功能:使用圆形结构元素对区域region做开运算
3.opening_rectangle1
功能:使用矩形结构元素对区域region做开运算
4.gray_opening
功能:使用灰度值结构元素对图像做开运算
5.gray_opening_rect
功能:使用矩形灰度值结构元素对图像做开运算
6.gray_opening_shape
功能:使用多边形灰度值结构元素对图像做开运算
****************************闭运算****************************
先膨胀后腐蚀,用来填充物体内部细小孔洞,连接邻近物体,平滑边界,扩大亮前景,收缩暗背景。
1.closing
功能:使用结构元素对区域region做闭运算
2.closing_circle
功能:使用圆形结构元素对区域region做闭运算
3.closing_rectangle1
功能:使用矩形结构元素对区域region做闭运算
4.gray_closing
功能:使用灰度值结构元素对图像做闭运算
5.gray_closing_rect
功能:使用矩形灰度值结构元素对图像做闭运算
6.gray_closing_shape
功能:使用多边形灰度值结构元素对图像做闭运算
****************************顶帽(礼帽)变换****************************
顶帽运算往往用来分离比邻近点亮一些的斑块。(顶帽变换结果 = 原始图像 - 开运算结果)
当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取。
dev_close_window () read_image(Image, 'E:/MyHalcon/yzm.png') dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display (Image) rgb1_to_gray (Image, GrayImage) threshold (GrayImage, Regions, 0, 223) gen_ellipse (Ellipse, 200, 200, 0, 3, 2) top_hat (Regions, Ellipse, RegionBottomHat) difference (Regions, RegionBottomHat, ImageSub) dev_clear_window () dev_display(RegionBottomHat) disp_message (WindowHandle, '顶帽结果', 'window', 12, 12, 'black', 'true') disp_continue_message (WindowHandle, 'black', 'true') stop() dev_clear_window () dev_display(ImageSub) disp_message (WindowHandle, '与原图求差异,提取前景', 'window', 12, 12, 'black', 'true')
1.原图
2.阈值图
3.顶帽变换结果
4.提取前景
1.top_hat
功能:区域region顶帽变换操作
2.gray_tophat
功能:灰度图像做顶帽变换操作,通过gen_disc_se生成灰度结构元素
3.bottom_hat
功能:区域region底帽(黑帽)变换操作
4.gray_bothat
功能:灰度图像做底帽变换操作
底帽变换结果 = 闭运算结果 - 原始图像
适用于在较亮的背景中求暗的像素点
5.morph_hat
功能:区域region形态帽变换操作(闭运算-开运算)