zoukankan      html  css  js  c++  java
  • 图像处理笔记(二十):LAWS纹理滤波应用于缺陷检测

    LAWS纹理滤波

    texture_laws(Image, 原图像
    ImageTexture, 输出值,滤波后图像
    FilterType, 过滤器类型
    Shift, 灰度值转换,滤波后的灰度值可能会比较大,转换后的灰度值Gray=Gray/(Shift2),要根据滤波器选择合适的灰度值转换
    FilterSize) 过滤器大小,3, 7, 5可选
    过滤器类型帮助文档中有详细列举,
    各种大小的过滤器都是由leswruo这几个向量构成,文档中单个向量都有原型,对于组合出来的滤波器矩阵,就是两个向量的点积,例如5
    5大小的le滤波器:
    l = [1 4 6 4 1],
    e = [-1 -2 0 2 1]
    那么le就是:

    [le = egin{bmatrix} 1 \ 4 \ 6 \4 \1 end{bmatrix} egin{bmatrix} -1 & -2 & 0 & 2 & 1end{bmatrix} ]

    5*5的filter,记录一下,稍后研究一下每一种filter的作用。Filter
    使用LAWS做缺陷检测的步骤:

    1. 收集几张没有缺陷的图片,使用多种laws滤波作为特征,组合成多通道图片,作为训练样本;
    2. 创建高斯混合分类器,使用样本进行训练;
    3. 将测试图片与样本做相同处理后,使用高斯混合分类器做分类;
    4. 将分类后的区域与原区域做减法,减出来的部分就是不能被分类的部分,也就是有问题的部分;
    5. 筛选出面积较大的区域,可以适当选择开闭运算将区域修整一下。

    这里使用到的图像预处理:
    使用zoom_image_factor将图像的尺寸减小,可以降低运算时间;
    使用smooth_image对混合后的五通道图片做光滑处理

    模型的保存与读取:
    write_class_gmm
    read_class_gmm

    # 应用 
    ## 字符分割识别
    halcon中有一些已经训练好的ocr模板可供直接使用。
    使用已有模板做字符识别的主要步骤:
    1. 找出图像区域,将字符串做分割,分割成单个的字符;
    2. 读取已经训练好的模板'read_ocr_class_' ,这里有多个分类器可选;
    3. 使用 ‘do_ocr_multi_class_’ 对分割后的区域做字符识别或使用`do_ocr_single_class_` 对分割后的单个区域做字符识别。
    
    使用这种方式的局限性:必须找到字符区域并对字符做好分割,只能用于事先已经很了解测试图片的情况。已经定义好的模板不一定好用,自己训练可能更适合。
    测试的时候还发现一个特点,对于图像上字母是亮的,背景是暗的情况,识别到的结果一般都是错的,只有在__背景是亮的,字母是暗的__ 情况下,是被才是有效的。
    
    其实我们可以自己训练,怎么训练呢?
    [这是网上找到的一个例子](https://blog.csdn.net/ZHANG2012LIANG/article/details/50993173)
    由于一时半会儿弄不到那么多字母图片,所以没有尝试。待实现。
  • 相关阅读:
    json数组解析
    sparkschedule任务类
    elasticsearch的操作类
    删除hbase的region步骤和代码
    zookeeper持有者类
    zookeeper主节点竞争类
    剑指offer(61-66)编程题
    Codeforces Round #190 (Div. 2) B. Ciel and Flowers
    一些傍晚的感想
    Codeforces Round #307 (Div. 2) D. GukiZ and Binary Operations
  • 原文地址:https://www.cnblogs.com/yutou2016/p/11193147.html
Copyright © 2011-2022 走看看