图像处理笔记(十五)

上一个笔记里面有一个错误:
regiongrowing算子没有使用一个Row*Column的平滑滤波器处理图像,这个尺寸是一个用来判断两个点是否属于同一区域的模板。
文档上建议在使用这个算子之前做一下平滑滤波。

补充一个使用hsv图像识别图像中的红色药丸的例子:

read_image(Image, 'blister_mixed_11')
decompose3(Image, Image1, Image2, Image3)
trans_from_rgb(Image1, Image2, Image3, ImageResult1, ImageResult2, ImageResult3, 'hsv')
threshold(ImageResult1, Region1, 0, 50)
connection(Region1, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 100, 999999)
union1(SelectedRegions, RegionUnion)
reduce_domain(Image, RegionUnion, ImageReduced)

decompose3(ImageReduced, Image11, Image21, Image31)
threshold(Image21, Region, 0, 60)
connection(Region, ConnectedRegions1)
select_shape(ConnectedRegions1, SelectedRegions1, 'area', 'and', 1000, 99999)

  1. 近似计算图像的内外边界:
    内边界使用原图像减去适度腐蚀后的图像;
    外边界使用适度膨胀后的图像减去原图像。

  2. 闵可夫斯基加减法
    当结构元对称时,与膨胀或腐蚀的效果是一致的;
    当结构元不对称时,与膨胀或腐蚀的效果不一致,区别在于膨胀或腐蚀需要先对结构元做原点对称。
    相关算子:minkowski_sub1,minkowski_add1

  3. 再看击中击不中
    这个点在之前看的时候被我跳过去了。
    在halcon中有算子hit_or_miss可以来看某个区域是否击中击不中,例子:

read_image(Characters, 'characters')
* 创建一个椭圆形结构元,长短轴半径分别是25和20
* 这个结构元被用来做击中
gen_ellipse(Ellipse1, 45, 40, rad(90), 25, 20)
* 获取结构元半径
boundary(Ellipse1, RegionBorder1, 'outer')
* 再创建一个椭圆形结构元,这个结构元被用来做击不中
gen_ellipse(Ellipse2, 45, 40, rad(90), 40, 35)
boundary(Ellipse2, RegionBorder2, 'outer')
rgb1_to_gray(Characters, GrayImage)
threshold(GrayImage, Region3, 180, 255)
* 当满足第一个结构元击中并且第二个结构元击不中的情况下,结构元圆心组成了区域RegionHitMiss
hit_or_miss(Region3, RegionBorder1, RegionBorder2, RegionHitMiss, 45, 40)

击中要求结构元完全被区域包含;击不中要求结构元与区域没有交集。

  1. 开闭运算
    halcon中有直接给出开闭运算的算子,可以不必自己做一次腐蚀再做一次膨胀。
    算子名称opening和closing相关。

  2. 复习一下顶帽变换和底帽变换
    顶帽变换:较暗的背景中求较亮的像素
    halcon:top_hat,gray_tophat
    底帽变换:较亮的背景中求较暗的像素
    halcon:bottom_hat, gray_bothat

  3. select_shape_std
    选择指定特征的区域,可以指定特征为'max_area',直接选择出面积最大的区域

  4. gen_recetangle2(Rectangle, Row, Column, Phi, Lenght1, Length2)
    画一个矩形,矩形的中心再(Row, Column),矩形的宽是Length1的__两倍__ (水平方向长度),矩形的高是Length2的 两倍 (竖直方向长度),
    矩形绕着中心旋转Phi的弧度。
    角度转弧度:rad(90),表示 (pi / 2)

小结:
今天系统的运用了一下Region相关的算子,笔记只记录一些需要注意的事项,算子远远不止这么多。明天计划把xld,图像运算,边缘分析相关的算子过一遍。

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