图像处理笔记(十四)

今日计划:
进一步熟悉一下halcon怎么用,图像处理的理论学习暂停。
参考书籍:《Halcon学习教程》(王海勇)

  1. regiongrowing(Image, Regions, Row, Column, Tolerance, MinSize)
    用区域生长法对单通道图像做图像分割。
    首先用一个Row*Column的低通滤波器做一次平滑,当图像中只有极少的噪音并且矩形特别的小,这个平滑往往可以被忽略。
    当两个点之间的灰度值之差比Tolerance小,那么这两个点会被划分到同一个区域,只有区域面积大于MinSize的区域会被输出。

什么样的图像会适合这个算子做区域分割呢?希望被划分在一起的区域内的灰度值非常接近,希望不被划分在一起的区域灰度变化突出

  1. compactness
    区域的紧密度:

[compactness = frac {L^2}{4F pi} ]

其中,L表示区域的长度(周长),F表示一个封闭区域的面积。圆的紧密度为1或者接近1,拉长的图形大于1.

  1. threshold
    可以通过观察灰度直方图确定想要设置的阈值,灰度直方图中有插入代码选项,可以直接插入已经设置好阈值的代码。

  2. hsv三通道表示的图像
    H:色相,表示颜色,0-360
    S:饱和度,纯度,0-1
    V:明度,明亮程度,0-1
    RGB三通道转HSV三通道:trans_from_rgb(ImageR, ImageG, ImageB, ImageH, ImageS, ImageV, 'hsv')
    运用场景:提取具有某一种颜色特征的区域,但是仅通过RGB某一通道无法区分时,可以考虑将图像转换成hsv通道,再进行阈值处理。
    无法区分的场景很有可能是背景的颜色比较深,在分解的rgb图像上背景与前景具有类似的值。
    例如:

想要从上面的图中找出红色的药丸,RGB分解后发现红色的药丸与背景色几乎一致,难以区分,这时候可以使用hsv通道分解。

  1. gen_region_line
    画线,画出来的线有宽度的,并不是一般意义上的线,其实是一个区域,使用这样的方式画出来的线,求两条线的交点时,很可能会发现不止有一个点,会有一组点(并不绝对)

  2. skeleton
    可以获取区域的骨架
    原来直接有算子可以获取骨架的啊,之前我还自己做了。。。

原文地址:https://www.cnblogs.com/yutou2016/p/11152949.html