一、四步移相原始数据
镜面加载前,对其进行四步移相,得到四幅图,分别记为:
before_1,before_2,before_3,before_4
镜面加载后,对其进行四步移相,得到四幅图,分别记为:
after_1, after_2, after_3, after_4
一共有八张,使用opencv变为灰度图。
二、进行四步移相
四步移相公式:
在整个过程中,图像数据的值域非常关键。判断I1-I3和I4-I2的正负,可以把原本【-pi/2,pi/2】的数据细化到【-pi,pi】
理由如下:
注意:
1、opencv读到图的每个像素值是ubyte类型,所以公式中每一项都一定要强制转化为int类型,否则减法算出来有负数,它就溢出了!!!导致结果错误。
2、四步移相后,值域从【0,255】映射到了【-pi,pi】,这一点一定要记住,Imshow的时候要用公式把值域从【-pi,pi】映射到【0,255】。公式如下:
最后把加载前后的两张相位图进行相减,展示,效果如下图:
三、正余弦滤波
普通的高斯滤波、均值滤波等都不适合,使用正余弦滤波,步骤原理如下:
但是在实现过程中,有很多坑。
注意:
在滤波过程中,一定要注意值域变化!!!
最后放一个ksize=3,迭代40次的图。迭代次数有待商榷,这里只是给一个例子。
四、缺陷识别
被测件的内部缺陷隐藏在条纹图中,对其进行缺陷识别。
剪切散斑干涉缺陷检测