章节目录
前言
本章主要介绍计算机图形学中,二维的图案是如何仿人类视觉用大脑识别出物体范围,对其外部轮廓的分析,获取形状边界。
一、计算机异形图形如何识别?
二维异形图形存在无数种图案和可能,这对于人类大脑识别是非常快捷,但转化为计算机自动识别却是一项难度极大的学术问题。异形图形的识别目前已多种方式,本章主要介绍机器扫描法和轮廓识别技术及相关存储和使用。
1.机器扫描法
机器扫描法是采用扫描仪的方式将需要识别的图形按顺序的全部扫描一遍。将图形中的所有信息进行记录和分类,获取图形的主体信息。
这里会出现一个问题,当一个图形信息量非常巨大时,采用机器扫描法对硬件设备的性能要求极高,对应要求硬件成本和扫描时间都会极大的提升,所以引入了一个叫视觉拉远模糊识别技术,它是将图形降低轮廓清晰度的技术,此处不作详细介绍。
2.轮廓识别技术
轮廓识别技术是使用现成的方式进行图形的外部轮廓识别,再进行机器扫描法,通常这里不需要对图形有很高的精度要求的情况时,可以直接使用上下左右四边进行扫描获取最外层的轮廓后续去排版即可,能够极大的提高在扫描时所消耗的资源。
以下为识别轮廓时关键例子:
/// <summary>
/// 获取上方的边缘坐标
/// </summary>
/// <param name="dataList"></param>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
public static CoordinateInfo GetYMinEdgeByX(HashSet<MatrixIndex> dataList, int x, int y)
{
int w = 0, h = 0, mw = x, mh = y;
CalculateCursor(ref mw, ref mh, ref w, ref h);
var ydataList = dataList.Where(m => m.W ==