缺陷处理手法 https://blog.csdn.net/m0_55976972/article/details/133559713

一、预处理+分割(二值化)blob +特征检测
*区域的特征总结
*area':区域的面积
*'row':求区域最小不带方向的外接矩形的中心行坐标
*'column':求区域最小不带方向的外接矩形的中心列坐标
*'row1':求区域最小不带方向的外接矩形的左上角行坐标
*'column1':求区域最小不带方向的外接矩形的左上角列坐标
*'row2':求区域最小不带方向的外接矩形的右下角行坐标
*'column2':求区域最小不带方向的外接矩形的右下角列坐标
*width':求区域最小不带方向的外接矩形的宽
*'height':求区域最小不带方向的外接矩形的高
*ratio' 高宽比 'height'/width
*'circularity':圆度
*compactness' 紧密度 = 周长的平方/(4*面积*π)
*'contlength':周长
*'convexity':凸性
*'rectangularity':矩形度
*'ra':椭圆长半轴
*'rb':椭圆短半轴
*‘phi':椭圆角度
*anisometry: 各项异性 =椭圆长半轴/椭圆短半轴
*bulkiness:'蓬松度 =π*长半轴*短半轴/区域面积 ---针对较长,面积小的,蓬松度大
*'struct_factor:'结构因子 =各向异性*蓬松度-1
*'outer_radius':最小外接圆的半径
*'inner_radius':最大内接圆半径
*'inner_width':最大内接矩形的宽 不带方向
*'inner_height':最大内接矩形的高 不带方向
*'dist_mean': 区域边界到重心平均距离
*'dist_deviation:'区域边界到重心标准差
*'roundness':圆度
*'num_sides':多边形的边数
*'connect_num':连通数
*'holes_num':孔洞数 -----封闭的孔洞数
*'area_holes':孔洞面积
*'max_diameter':最大直径
*'orientation':角度
*'euler_number':欧拉数 =连通数-孔洞数
*'rect2_phi': 区域求最小外接矩形-带方向角度
*'rect2_len1':区域求最小外接矩形-带方向半宽
*'rect2_len2':区域求最小外接矩形-带方向半高

灰度膨胀(灰度闭运算)---增加亮像素比例----(局部极大值) gray_closing_shape

灰度腐蚀(灰度开运算)---增加暗像素比例----(局部极小值)gray_opening_shape

二、差分思想-定位(转标准位置 跟随)
1.创建差分模型 create_variation_model

a标准

b鲁棒(抗干扰能力)(训练的图像可以有几张不良)

c直接 不用训练与prepare_direct_variation_model搭配使用

2.训练 train_variation_model (多张图转标准位置后训练,得到一个平均图像)

3.获得标准图 get_variation_model (均值图像,边缘图)

4.设置参数 prepare_variation_model (绝对最小阈值,相对最小阈值)

---值越大,要求越高(容易出现检测不出来清空)

---值越小,要求低(容易出现误判)

5.差分比较 compare_variation_model

注意:无缺陷图,比较后输出的是圈杠(计数的话是1),所以对其区域可以做处理

1.开运算 2.面积筛选

6.清除差分模型 clear_variation_model

自己实现差分思想

difference:求俩区域差集,利用差分思想实现缺陷检测

1.创建模板匹配

2.二值化拉出一个标准区域(例如字符检测中字符),用作差分比较

3.查找模板,做区域跟随

4.区域形状转换,抠图,二值化一系列操作,提取出与标准区域一致的区域

5.求标准区域,每张图跟随的区域俩者的差集

6.判断差集,计数

三、测量拟合的方式
四、频域角度来分析
傅里叶变换-----得到频谱图
1)空间域到频域变换的算子
fft_image 快速傅里叶变换(正变换) fft_image_inv快速傅里叶变换(逆变换)
fft_generic (傅里叶变换的正变换 逆变换)rft_generic
2)学会看懂大致频谱图
1.频谱图中每一个点代表的不是像素,而是频率(段),这点的亮度表示的是该频率的含 量大小(振幅)
如果亮点越宽,说明该频段含量丰富
2 频谱图中频谱中心是低频成分,从中心往四周频率逐渐变大,低频成分代表图像灰度变换不剧烈的地方
高频成分代表图中灰度变换剧烈的地方
3 频谱图中如果某个方向有亮点或者亮线,说明这个方面有变化的边(线)
4 频谱图是上下左右对称
空间域的卷积=频域乘积
3)频域处理方式
1 手动

2 滤波器 convol_fft 频域乘法

低通滤波器(直通gen_lowpass) 中间部分为1 ,其他为0,参数值2越小,图像越平滑(值越小,中间部分越小,频谱图中心是低频成分,所以更平滑)

高通滤波器(直通 gen_highpass)中间部分为0,其他为1.突出边缘轮廓(即变化剧烈的部分)

参数2值越大,图像高频部分要求越高(展示更剧烈的部分)

差分滤波器sub_image

高斯滤波器 gen_gauss_filter 平滑系数越小,原斑越大

正弦带通滤波器 gen_sin_bandpass-划痕) 系数越大,原斑越大

4)理解频域

频域是从信号的角度来分析,利用傅里叶变换将空间域的图像,转到频域来分析

五、光度立体法
原理:表面法向量重建 平面上的凹凸 金属上的字
实现:photometric_stereo 光度立体重建 配合 derivate_vector_field 计算曲率图
slant:光轴与光源主投射方向的角度

Tilts 光的主投射方向在平面内投影线与水平向右的角度

六、机器学习
原理:mlp 多层神经感知Multi Layer Perceptron-浅度学习 欠拟合 增加样本


第一套 :

create_ocr_class_mlp 创建分类器

参数:

特征名称(输入层)

输出名称(输出层)

隐式节点数(中间层,该值越大,训练速度相对慢,准确度高,注意不能过拟合)

特征值预处理: 填写none normalization(归一化) 后面参数无效

append_ocr_trainf 添加样本 ----字符名称:数组与创建的输出名称一致

trainf_ocr_class_mlp 训练(本质调节权重系数)

权重系数:值越小,迭代次数多

误差阈值:输出误差,每次迭代的误差

do_ocr_single_class_mlp 识别

clear_ocr_class_mlp 清除

write_ocr_class_mlp 保存分类器

read_ocr_class_mlp 读分类器


第二套:

create_class_mlp 创建分类器

输入层特征个数 中间层隐式节点数 输出种类数

add_sample_class_mlp 添加样本

train_class_mlp 训练

classify_class_mlp 识别
clear_class_mlp 清除模型
write_class_mlp 保存分类器

read_class_mlp 读

第三套:

create_class_mlp 创建分类器

add_samples_image_class_mlp 添加样本

train_class_mlp 训练

classify_image_class_mlp 识别
clear_class_mlp 清除模型
write_class_mlp 保存分类器

read_class_mlp 读分类器
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_55976972/article/details/133559713

posted @ 2024-06-06 10:05  QuincyYi  阅读(17)  评论(0编辑  收藏  举报