关于AOI硅片色差分选,参考相关论文后,做了halcon算法验证。
颜色分类一般用RGB色系作为判断标准,RGB色系对颜色的产生是理想的,但对颜色的描述并不理想。
HSV、HSI色系:
HSI 色系是通过色调H、饱和度S、以及亮度I来组合成颜色分布,色度的产生形式描述的更为清晰,能更好的与颜色分选的人工标准相匹配
HSV通道的色差试验:下面先将彩色图像分成RGB通道,再转成HSV色系通道,只看S通道的差别
- read_image (Image, './色差图.jpg')
- decompose3 (Image, ImageR, ImageG, ImageB)
- trans_from_rgb (ImageR, ImageG, ImageB, Hue, Saturation,Intensity, 'hsv')
复制代码
先在图中找一块看起来没有色差的区域,在这个区域内生成直方图数据,形成灰度直方图,AbsoluteHisto表示该灰度值出现的次数,RelativeHisto表示该灰度出现的频率,这里只用AbsoluteHisto
- gen_rectangle1 (Rectangle, 1377, 1120, 1397, 1127)
- gray_histo (Rectangle, Saturation, AbsoluteHisto,RelativeHisto)
- create_funct_1d_array (AbsoluteHisto, Function)
- smooth_funct_1d_gauss (Function, 2, SmoothedFunction)
- funct_1d_to_pairs (SmoothedFunction, XValues, YValues)
- gen_region_histo (HistoRegion1, YValues, 255, 255, 1)
复制代码
再到有色差缺陷的地方找一块地方,生成直方图数据、形成灰度直方图
- gen_rectangle1 (rectangle1, 1664, 855, 1684, 862)
- gray_histo (rectangle1, Saturation, AbsoluteHisto1,RelativeHisto1)
- create_funct_1d_array (AbsoluteHisto1, Function1)
- smooth_funct_1d_gauss (Function1, 2, SmoothedFunction1)
- funct_1d_to_pairs (SmoothedFunction1, XValues1, YValues1)
- gen_region_histo (HistoRegion2, YValues1, 255, 255, 1)
复制代码
求出两组图直方图灰度值的欧几里得距离 Diff := YValues - YValues1
**灰度相似度→欧几里得距离,范围[0,1],值越大表示越相似
gray_similarity:= (1/(1+sqrt(sum(Diff * Diff))))*10可以看到gray_similarity值很小,说明在S色系中缺陷的地方与标准的相似度很小。
根据这个灰度相似值的大小可以作为不同颜色与标准硅片颜色的判定值,从而删选出不同颜色品质的硅片。
最后验证:找一块没有色差的地方生成直方图和计算相似度
- gen_rectangle1 (Rectangle2, 1377, 1140, 1397, 1147)
- gray_histo (Rectangle2, Saturation, AbsoluteHisto2,RelativeHisto2)
- create_funct_1d_array (AbsoluteHisto2, Function2)
- smooth_funct_1d_gauss (Function2, 2, SmoothedFunction2)
- funct_1d_to_pairs (SmoothedFunction2, XValues2, YValues2)
- gen_region_histo (HistoRegion3, YValues2, 255, 255, 1)
- Diff1 := YValues - YValues2gray_similarity1:= (1/(1+sqrt(sum(Diff1 * Diff1))))*10
复制代码
可以看到相似度为0.8,在直方图中也能看出黄色和绿色两块没有色差的地方直方图基本重合。
红色有缺陷的地方离标准直方图的距离较远。
色差图
色差分析.hdev
(3.28 KB, 下载次数: 24)
|