VisionPro:色彩区分
来自:blog.sina.com.cn/yangchao168
利用色彩来区分物体这类的项目没做过,总觉得很难,尤其是涉及到RGB和HSI等。看到VisionPro中有这种实例,觉得很有意思。
1)声明变量:
Private mTool as CogColorSegmenterTool
Private mImageFileTool as CogImageFileTool
Private mColorRangesInitialized as Boolean
2) 实例化mTool和mImageFileTool之后,加载图像并显示,接下来就是初始化Color Range并把它们添加到ColorCollection工具中。
实际区分所有的颜色很难,这里采用CogSimpleColor
Dim defaultColor as CogSimpleColor
defaultColor=new CogSimpleColor(CogImageColorSpaceConstants.RGB)
定义两种黄色
Dim colorRangeYellow1 as CogColorRangeItem
原始图像
colorRangeYwllow1=new CogColorRangeItem(defaultColor)
利用Norminal,Low/High tolerance 和softness来填充每个Plane
colorRangeYellow1.PlaneRange0.Update(229, -81, 26, 0)
colorRangeYellow1.PlaneRange1.Update(227, -100.2, 28, 0)
colorRangeYellow1.PlaneRange2.Update(49, -33.3, 36.7, 0)
给Segment Tool添加这种颜色
mTool.RunParams.ColorRangeCollection.Add(colorRangeYellow1)
接下来是第二种黄色
Dim colorRangeYellow2 As CogColorRangeItem colorRangeYellow2 = New CogColorRangeItem(defaultColor) colorRangeYellow2.PlaneRange0.Update(130, -29.8, 23.7, 0) colorRangeYellow2.PlaneRange1.Update(122, -28.1, 32.7, 0) colorRangeYellow2.PlaneRange2.Update(22, -11.8, 11.8, 0) mTool.RunParams.ColorRangeCollection.Add(colorRangeYellow2)
利用黄色区分的结果
定义3种黄色
Dim colorRangeRed1 As CogColorRangeItem colorRangeRed1 = New CogColorRangeItem(defaultColor) colorRangeRed1.PlaneRange0.Update(109, -28.4, 33.8, 0) colorRangeRed1.PlaneRange1.Update(34, -20.8, 17.8, 0) colorRangeRed1.PlaneRange2.Update(11, -8.7, 10.2, 0) colorRangeRed1.Selected = False mTool.RunParams.ColorRangeCollection.Add(colorRangeRed1)
默认选择黄色,所以对于红色的Selected属性设为False。
。。。
在初始化所有的颜色后
mColorRangesInitialized =true ‘可以作为后续的判断条件
3)颜色选择
如果选择黄色
mTool.RunParams.ColorRangeCollection.Item(0).Selected=true
利用红色区分的结果
mTool.RunParams.ColorRangeCollection.Item(1).Selected=true
如果选择红色,可以设定Item(2),(3),(4)为Selected。
4)区分
mTool.inputImage=InputImage
mTool.Run()
输出结果图像
If (mTool.RunStatus.Result.Equals(CogToolResultConstants.Accept)) Then CogDisplaySegmentImage.Image = mTool.Result ‘显示图像
Else CogDisplaySegmentImage.Image = Nothing ’结果有误 End If
利用黄红区分的结果