图像处理笔记(二十):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 库名 ...
随机推荐
- 【数据结构】Hash表
[数据结构]Hash表 Hash表也叫散列表,是一种线性数据结构.在一般情况下,可以用o(1)的时间复杂度进行数据的增删改查.在Java开发语言中,HashMap的底层就是一个散列表. 1. 什么是H ...
- C语言入门-循环
一.循环 输入一个数字,输出该数字有几位 #include <stdio.h> int main() { int x; int n = 0; scanf("%d" , ...
- SpringBoot启动zipkin-server报错Error creating bean with name ‘armeriaServer’
目前,GitHub 上最新 release 版本是 Zipkin 2.12.9,从 2.12.6 版本开始有个较大的更新,迁移使用 Armeria HTTP 引擎. 从此版本开始,若直接添加依赖的 S ...
- Spring Boot(二) 配置文件
文章导航-readme 一.配置Spring Boot热部署 技术的发展总是因为人们想偷懒的心理,如果我们不想每次修改了代码,都必须重启一下服务器,并重新运行代码.那么可以配置一下热部署.有了 ...
- java-newInstance()和new()
public <T> T genericMethod(Class<T> tClass)throws InstantiationException , IllegalAccess ...
- python教程 - 猿说python
一.简介 知识改变命运,程序改变世界.互联网时代潜移默化的改变着我们的生活,伴随技术的进步,我想下一个时代应该属于人工智能和机器学习,属于python. pytho ...
- 使用springboot最新版本mysql-Connector连接数据库时报错解决
在连接数据库时,使用了最新版本的mysql-Connector,即6.0以上版本 1.报错如下: Loading class `com.mysql.jdbc.Driver'. This is depr ...
- RocketMQ 源码学习笔记————Producer 是怎么将消息发送至 Broker 的?
目录 RocketMQ 源码学习笔记----Producer 是怎么将消息发送至 Broker 的? 前言 项目结构 rocketmq-client 模块 DefaultMQProducerTest ...
- Kafka 学习笔记之 Kafka0.11之producer/consumer(Scala)
Kafka0.11之producer/consumer(Scala): KafkaConsumer: import java.util.Properties import org.apache.kaf ...
- Linux修改屏幕分辨率至2K
使用命令:cvt,与 xrandr 使用cvt命令查看分辨率配置: Modeline后边分别是 modeName 以及 详细的配置 linklee@linklee-270E5G-270E5U:~$ c ...