算子介绍:
一、gray_projections算子
①gray_projections(Region, Image, Mode,HorProjection, VertProjection)
Region:待处理区域
Image:待投影的灰度图
Mode:计算投影的方式,有’simple’、 ‘rectangle’,‘simple’
HorProjection:水平方向投影
VertProjection:竖直方向投影
②功能介绍
计算水平和垂直灰度值投影。
二、create_funct_1d_array算子
①create_funct_1d_array( YValues ,Function)
YValues :函数的x点的值
Function:函数值
②功能介绍
根据y值序列创建函数。
三、smooth_funct_1d_gauss算子
①smooth_funct_1d_gauss( Function, Sigma , SmoothedFunction)
Function:待平滑的函数
sigma:平滑因子
SmoothedFunction:平滑后的函数
②功能介绍
对原函数进行高斯平滑
四、tuple_max算子
①tuple_max(tuple,max)
tuple:元组
max:元组中的最大值
Tip:灰度投影可理解为记录每行、列的灰度平均值的数组,不同mode算法不同。将灰度投影所得到的每行(列)灰度值,作为点的x (y)坐标,生成一组点区域。从而将灰度投影获得的结果可视化,后续可直接对生成的区域进行处理。由于待检测的线缺陷列存在灰度突变,因此,根据求得的灰度投影值平滑出图像理论上的灰度分布函数,求取各行(列)灰度理论值与实际值的差值,可以获取灰度突变处在图像上的索引。
五、代码
*读取图像
read_image(Image,'img.png')
*截取图像
crop_part(Image,Region,10,10,90,90)
*灰度投影
gray_projections(Region,Image,'simple',HorProjection,VertProjection)
*创建竖直方向的一维函数
create_funct_1d_array(VertProjection,Function)
*积分曲线平滑
smooth_funct_1d_gauss(Function,2,SmoothedFunction)
*把平滑后结果中的最大值取出来,注意这里需要从3开始取,这个function输出值的前3位不是我们的数据
filterData1:=SmoothedFunction[3:|SmoothedFunction|-1]
*取最大值
tuple_max(filterData1,filterDataMax)
原图
截图
输出结果
来源:CSDN
作者:忘·月
链接:https://blog.csdn.net/ETNthrough/article/details/104446285