主权项 |
一种基于机器视觉检测的电池尾端伤痕检测图像旋转方法,其特征在于具体步骤如下:S1:定义如下参数:当电池尾端图片中的两个黑色区域位于水平位置时,则该电池尾端图片为标准图片,待处理的电池尾端图片I大小为M×N,长度为W,高度为H,待处理的电池尾端图片以图片中心进行旋转到标准图片需要的旋转角度为θ,将I分为大小相同的上半部分图片I<sub>1</sub>和下半部分图片I<sub>2</sub>,其中上半部分图片I<sub>1</sub>中最小灰度值为V<sub>1</sub>,下半部分图片I<sub>2</sub>中最小灰度值为V<sub>2</sub>;对I<sub>1</sub>取灰度阈值M<sub>1</sub>,I<sub>1</sub>中像素位置(i<sub>1</sub>,j<sub>1</sub>)处的像素的灰度值为f<sub>1</sub>(i<sub>1</sub>,j<sub>1</sub>),对I<sub>2</sub>取灰度阈值M<sub>2</sub>,I<sub>2</sub>中像素位置(i<sub>2</sub>,j<sub>2</sub>)处的像素的灰度值为f<sub>2</sub>(i<sub>2</sub>,j<sub>2</sub>);S2:求取旋转角度:将I<sub>1</sub>中满足V<sub>1</sub>≤f<sub>1</sub>(i<sub>1</sub>,j<sub>1</sub>)≤M<sub>1</sub>的条件的对应像素位置(i<sub>1</sub>,j<sub>1</sub>)存入一个二维数组<img file="FDA0000821727110000011.GIF" wi="572" he="100" />中,对N<sub>1</sub>[2,n<sub>1</sub>]的第一行和第二行中的数值分别求平均值,得到I<sub>1</sub>中黑色特征区域位置坐标X<sub>u</sub>,Y<sub>u</sub>;将I<sub>2</sub>中满足V<sub>2</sub>≤f<sub>2</sub>(i<sub>2</sub>,j<sub>2</sub>)≤M<sub>2</sub>的条件的对应的像素位置(i<sub>2</sub>,j<sub>2</sub>)存入<img file="FDA0000821727110000012.GIF" wi="596" he="103" />中,对N<sub>2</sub>[2,n<sub>2</sub>]的第一行和第二行中的数值分别求平均值,得到I<sub>2</sub>中黑色特征区域位置坐标X<sub>d</sub>、Y<sub>d</sub>;在求旋转角度θ时,分如下两种情况;⑴若X<sub>u</sub>=X<sub>d</sub>,则θ=0°;⑵若X<sub>u</sub>≠X<sub>d</sub>,则利用公式(1)求得θ<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>θ</mi><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mfrac><mrow><msub><mi>Y</mi><mi>d</mi></msub><mo>+</mo><mi>H</mi><mo>/</mo><mn>2</mn><mo>-</mo><msub><mi>Y</mi><mi>u</mi></msub></mrow><mrow><msub><mi>X</mi><mi>d</mi></msub><mo>-</mo><msub><mi>X</mi><mi>u</mi></msub></mrow></mfrac></mrow>]]></math><img file="FDA0000821727110000013.GIF" wi="493" he="170" /></maths> ……(1)S3:图片旋转:利用以坐标原点为中心的图像旋转变换公式(2)完成图片的旋转;<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mfenced open = "(" close = ")"><mtable><mtr><mtd><mi>x</mi></mtd></mtr><mtr><mtd><mi>y</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open = "(" close = ")"><mtable><mtr><mtd><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mo>-</mo><mi>s</mi><mi>i</mi><mi>n</mi><mi>θ</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mi>s</mi><mi>i</mi><mi>n</mi><mi>θ</mi></mrow></mtd><mtd><mrow><mi>cos</mi><mi>θ</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mfenced open = "(" close = ")"><mtable><mtr><mtd><msub><mi>x</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>y</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mn>1</mn></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000821727110000014.GIF" wi="646" he="237" /></maths> ……(2)其中(x,y)为待处理的电池尾端图片上的任一点的坐标,(x<sub>1</sub>,y<sub>1</sub>)为经过θ旋转的该点的坐标。 |