缺陷处理手法 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