5、图像分割(阈值)
- 读入一张图像并把它分为三通道。
read_image (Lena, 'F:/Halcon学习/4、群共享资料下载/lena原图/lena.jpg')
*分离三通道
decompose3 (Lena, Image1, Image2, Image3)
*把rgb图像转换为灰度图像
rgb1_to_gray (Lena, GrayImage)
- 在用灰度直方图助手时,它是对图形窗口当前的图片进行阈值化操作。若当前显示的为彩色图像,可以通过修改通道数来进来选择对那个通道进行阈值化操作。
- 阈值处理的算子的分类
全局阈值算法(如otsu算法)和局部阈值算法(如niblack).固定阈值和自适应阈值。
- 指定全局阈值进行分割:
这种阈值方法就是用灰度直方图插入代码时产生的阈值。
threshold (GrayImage, Regions, 8, 83)
- 自动阈值
*自动阈值操作
auto_threshold (GrayImage, Regions1, 7.6)
自动阈值会把图像分为几个部分,输入的图像必须为单通道图像,最后一个参数是表示Sigma用于对灰度进行高斯平滑。Sigma的选取可以打开灰度直方图助手进行效果观察。
Sigma调到7.6时,发现灰度直方图变得更加平滑了,只有三个波谷。
这时当auto_threshold()的第二个参数设置为7.6时候,它就以这三个波谷为分界,把图像分给4个region,效果如下:
注:Sigma平滑参数的作用是把灰度直方图变得更加平滑,而上面例子中灰度直方图只起了一个观察方灰度直方图与Sigma平滑参数关系的作用,而真正把图像分割的是auto_threshold()算子。
gen_rectangle1 (ROI_0, 43.2251, 74.0227, 140.273, 368.191)
reduce_domain (GrayImage, ROI_0, ImageReduced)
测试:通过上面标定完后,再次改变直线长度,直线的长度的单位就是标定的时已知长度的单位如下图。
read_image (DemoimaqPendulumImg0201, 'C:/ 01.gif')
rgb1_to_gray (DemoimaqPendulumImg0201, GrayImage)
(2)、按照第6中的方法设置并裁剪ROI区域,并对其进行阈值和连通域操作:
gen_rectangle1 (ROI_0, 43.2251, 74.0227, 140.273, 368.191)
reduce_domain (GrayImage, ROI_0, ImageReduced)
threshold (ImageReduced, Regions, 0, 96)
connection (Regions, ConnectedRegions)
效果:通过连通域操作后得到了141的独立的连通域,图形窗口中不同的颜色表示不同的连通域。
注:在执行连通域操作后得到的141个有3种颜色显示,而输出颜色也是这三种的一种。所以这样不好观察
筛选的效果。解决办法如下,把执行连通域操作后得到的141个独立的连通域设置成一种颜色(这种