在自然或人造系统中,从场景背景中提取对象是一个常见的挑战。本文将探讨一种名为 AINECC 的个人项目,该项目采用一种新颖的方法来处理计算机视觉理论,并在智能进化系统中实现。该项目的目标是,通过连接到网络摄像头的低成本机械臂,能够自动将棋盘上的棋子放置到棋盘上的正确位置。
颜色模型是一种数学方法,用于描述电子传感器捕获的光的颜色。不同的颜色模型适用于不同的用途,研究人员通常寻求获得最佳的颜色准确性。在 AINECC 项目中,颜色模型将线性颜色范围 RGB 转换为正切曲线 RGB,使其适应范围 Real(0,1)。
颜色模型的转换公式如下:
xc = aTan(x/(y*z))/(Pi/2)
其中,x、y、z 分别代表 RGB 的分量值。
通常,通过将 RGB 值转换为 HSV(色调、饱和度、亮度)来获取对象的颜色,其中色调提供颜色值。然而,从对象中提取均匀颜色而不受到光照影响的最佳方法可能是处理每个像素向量 RGB:R(rx,ry,rz), G(gx,gy,gz), B(bx,by,bz)。这是一个非常困难的任务,许多其他研究都在处理这个问题。
通常,当 RGB 值较低或接近白色时,色调提取会受到噪声的影响。该项目尝试通过反转照明水平来解决这个问题,同时保持颜色水平的正确方向。
源代码完全基于 OpenCV 库 2.0,包括图像和视频捕获。OpenCV 在管理相机设置或视频格式方面可能显得较弱,但在捕获或提取图像或帧方面非常简单,并且在处理捕获的图像方面非常强大。
该代码在 MFC(Microsoft Foundation Classes)平台下开发,并使用 OpenCV(Open Computer Vision Library)。应用程序有一个主对话框,该对话框有三个窗口:源、颜色模型和边缘检测。
1. 测试配置参数(或与之互动) 2. 点击 [Open Video] 3. 实时调整颜色模型和边缘参数 4. 点击 [Close Video] 或 [Exit] 以关闭或退出应用程序
在源窗口下方有一些参数,涉及“相机”或“图像”配置:
点击 [Open Video] 后,应用程序本身开始运行。代码“封装”在函数 “OnBnClickedButtonOpenVid” 内。为了保持其运行,使用了循环 “While(1)”。
在该函数内部,跳转到 3 个算法:
ainGetColor8U( IplImage* srcCo8Uarr, IplImage* dstCo8Uarr, int code);
ainGetDifer8U( IplImage* srcDifArr, IplImage* dstDifArr, int code);
aiSobel8UC3( CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size CV_DEFAULT(3));
捕获的图像样本。