1、核心数据类 KxVector , KxMatrix 以及其操作为整个系统的核心
KxVector 以一维数组封装向量数据
KxMatrix 以二维数组封装矩阵数据
定义 对 KxVector,KxMatrix 的数学操作为全局函数
包括向量的加减乘除、向量连接、取对数、倒数等
矩阵的加减乘除、取对数、倒数等
以及矩阵与向量、向量与矩阵、矩阵与常数、向量与常数等的计算操作
(也 可以将操作封装到 向量 或者 矩阵里面,但当操作过多的时候,一个类的内容似乎过多以致感觉out of control?)
2、图像核心类 KxImage
应封装 图像的数据 以及 对图像的常规数据存取操作
这三个类应该是整个系统的核心。后面的所有操作与计算都基于这三个基本类。
后面开始按功能分类
1、边缘检测
abstract class KxEdgeMask // 边缘检测的模板
KxSobelMask extends KxEdgeMask // sobel 算子
KxPrewittMask extends KxEdgeMask // prewitt 算子
KxLogMask extends KxEdgeMask // LoG 算子
....等等
KxEdgeDetect
定义一个接口:edge( const KxImage,KxEdgeMask mask);
edge( const KxImage,const char* mask);
对外提供边缘检测服务时候,可采用 Facade ,也可以采用 Factory
2、颜色空间
abstract class ColorSpace( KxImage );
HSIColorSpace extends ColorSpace
YIQColorSpace extends ColorSpace
等等。直接在构造函数里面进行转换!
3、特征提取
特征向量类:KxFeature extends KxVector
这里面就复杂许多了。
细分如下:
A、颜色特征 KxColorFeature
B、灰度共生矩阵 KxGLCM
C、灰度-梯度 共生矩阵 KxGGLCM
D、灰度行程长度 KxGRLS
E、灰度差分统计 KxGDSM
。。。
4、识别策略
abstract class KxReocognizeStrategy
// 滑动窗口识别
KxMoveWindowingRecognize extends KxReocognizeStrategy
// 金字塔分析识别
KxPyramidAnalysisRecognize extends KxReocognizeStrategy
// 基于窗口合并的识别
KxWindowCombineRecognize extends KxReocognizeStrategy
5、识别算法:即分类器
abstract class KxClassfier
KxAdaBoost extends KxClassfier
KxRealBoost extends KxClassfier
KxCascadeAdaBoost extends KxClassfier
KxBayes exnteds KxClassfier
KxDecisionTree extends KxClassfier
6、显示策略
abstract class KxDispTargetResult
//显示图像效果: 在目标区域上画 矩形框
class KxDispTargetRectLine:public KxDispTargetResult
//显示图像效果: 改变目标区域颜色
class KxDispTargetColor:public KxDispTargetResult
//显示图像效果:修改背景区域颜色,目标区域颜色不变
class KxDispBgColor:public IDispTargetResul
7、参数的读取,保存
save to xml with specified f