图像处理笔记(二十):LAWS纹理滤波应用于缺陷检测
LAWS纹理滤波
texture_laws(Image, 原图像
ImageTexture, 输出值,滤波后图像
FilterType, 过滤器类型
Shift, 灰度值转换,滤波后的灰度值可能会比较大,转换后的灰度值Gray=Gray/(Shift2),要根据滤波器选择合适的灰度值转换
FilterSize) 过滤器大小,3, 7, 5可选
过滤器类型帮助文档中有详细列举,
各种大小的过滤器都是由leswruo这几个向量构成,文档中单个向量都有原型,对于组合出来的滤波器矩阵,就是两个向量的点积,例如55大小的le滤波器:
l = [1 4 6 4 1],
e = [-1 -2 0 2 1]
那么le就是:
\[
le = \begin{bmatrix} 1 \\ 4 \\ 6 \\4 \\1 \end{bmatrix} \begin{bmatrix} -1 & -2 & 0 & 2 & 1\end{bmatrix}
\]
5*5的filter,记录一下,稍后研究一下每一种filter的作用。Filter
使用LAWS做缺陷检测的步骤:
- 收集几张没有缺陷的图片,使用多种laws滤波作为特征,组合成多通道图片,作为训练样本;
- 创建高斯混合分类器,使用样本进行训练;
- 将测试图片与样本做相同处理后,使用高斯混合分类器做分类;
- 将分类后的区域与原区域做减法,减出来的部分就是不能被分类的部分,也就是有问题的部分;
- 筛选出面积较大的区域,可以适当选择开闭运算将区域修整一下。
这里使用到的图像预处理:
使用zoom_image_factor将图像的尺寸减小,可以降低运算时间;
使用smooth_image对混合后的五通道图片做光滑处理
模型的保存与读取:
write_class_gmm
read_class_gmm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 分割线 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
应用
字符分割识别
halcon中有一些已经训练好的ocr模板可供直接使用。
使用已有模板做字符识别的主要步骤:
- 找出图像区域,将字符串做分割,分割成单个的字符;
- 读取已经训练好的模板'read_ocr_class_' ,这里有多个分类器可选;
- 使用 ‘do_ocr_multi_class_’ 对分割后的区域做字符识别或使用
do_ocr_single_class_对分割后的单个区域做字符识别。
使用这种方式的局限性:必须找到字符区域并对字符做好分割,只能用于事先已经很了解测试图片的情况。已经定义好的模板不一定好用,自己训练可能更适合。
测试的时候还发现一个特点,对于图像上字母是亮的,背景是暗的情况,识别到的结果一般都是错的,只有在__背景是亮的,字母是暗的__ 情况下,是被才是有效的。
其实我们可以自己训练,怎么训练呢?
这是网上找到的一个例子
由于一时半会儿弄不到那么多字母图片,所以没有尝试。待实现。
图像处理笔记(二十):LAWS纹理滤波应用于缺陷检测的更多相关文章
- python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码
python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...
- python3.4学习笔记(二十五) Python 调用mysql redis实例代码
python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...
- python3.4学习笔记(二十二) python 在字符串里面插入指定分割符,将list中的字符转为数字
python3.4学习笔记(二十二) python 在字符串里面插入指定分割符,将list中的字符转为数字在字符串里面插入指定分割符的方法,先把字符串变成list然后用join方法变成字符串str=' ...
- python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法
python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数 ...
- (C/C++学习笔记) 二十四. 知识补充
二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...
- (C/C++学习笔记) 二十二. 标准模板库
二十二. 标准模板库 ● STL基本介绍 标准模板库(STL, standard template library): C++提供的大量的函数模板(通用算法)和类模板. ※ 为什么我们一般不需要自己写 ...
- (C/C++学习笔记) 二十. 文件和流
二十. 文件和流 ● 文件的概念 文件(file) 一. C/C++语言将文件作为字节序列(sequence of characters)来对待,但从编码角度,或说从对字节信息的解释来看,文件分为:文 ...
- Java基础学习笔记二十五 MySQL
MySQL 在dos中操作mysql 连接mysql命令: mysql -uroot -p密码 ,连接OK,会出现mysql> 对数据库的操作 创建一个库 create database 库名 ...
随机推荐
- 【Jenkins持续集成(二)】Windows上安装Jenkins教程
一.前言 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件. Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java ...
- 【linux】【gitlab】gitlab安装、备份、恢复、升级、内存消耗问题
前言 GitLab:GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务.功能:Gitlab 是一个提供代码托管.提交审核和问题跟踪的代码管理平 ...
- asp.net 开源工作流-流程属性-流程关键字段
关键词:工作流快速开发平台 工作流流设计 业务流程管理 Java工作流引擎 asp.net 开源工作流 net开源工作流引擎 开源工作流系统 定义:业务关键字段也叫流程实例的摘要字段,他提取流程 ...
- 如何编写出高质量的 equals 和 hashcode 方法?
什么是 equals 和 hashcode 方法? 这要从 Object 类开始说起,我们知道 Object 类是 Java 的超类,每个类都直接或者间接的继承了 Object 类,在 Object ...
- pt-archiver归档数据 源库和目标库是否会出现不一致
背景 归档的表在源库和目标库都要存在 pt-archiver归档表的场景有:不删原表数据,非批量插入目标库:不删原表数据,批量插入目标库:非批量删除原表数据,非批量插入目标库:批量删除原表数据,批量插 ...
- svn报错Item is not readable svn解决方案
解决: 配置目录权限时如: [/]tangtx=rwyangcx=rwweishq=rw 结果组用户分别在根目录下可以正常show log,而在其子目录中show log都会提示 Item is no ...
- 遇到不支持的 Oracle 数据类型 USERDEFINED
以前都是sql查询mdb空间数据没有什么问题,今天在用sql方式查询Oracle中的空间数据时候,出现错误.它不支持geometry.空间数据都带有shape属性.只要不查询shape字段就没问题.但 ...
- redis查找大key
redis中查找出比较大的key 下面直接上代码 (请在测试机上测试) #!/usr/bin/env python import sys import redis def check_big_key( ...
- html 试题试卷(包含latex)下载成word - - java
html 试题试卷(包含latex)下载成word 主要目的: 分享将带latex的html格式的试题试卷以word的格式下载,并且加一些灵活的排版样式 接受群众的检阅,获得反馈 骗取打赏,或者git ...
- MySQL 数据库删除表中重复数据
采集数据的时候,由于先期对页面结构的分析不完善,导致采漏了一部分数据.完善代码之后重新运行 Scrapy,又采集了一些重复的数据,搜了下删除重复数据的方法. N.B. 删除数据表的重复数据时,请先备份 ...