基于MFC手绘图形实时去噪探究及应用.docVIP

基于MFC手绘图形实时去噪探究及应用.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MFC手绘图形实时去噪探究及应用

基于MFC手绘图形实时去噪探究及应用   摘 要:分析了离散点数据的一般处理方法,针对慢速手绘图形产生的边缘噪点问题,提出一种适用于实时生成图形的预处理算法,对采集的数据点进行实时筛选插值,以保证数据准确可靠。在MFC中进行实现,并将其应用于软件开发,测试表明该算法绘图效果改善极大,慢速手绘图形平滑且不失真 关键词关键词:离散点;MFC;GDI;插值;边缘噪点 DOIDOI:10.11907/rjdk.161468 中图分类号:TP317.4 文献标识码:A 文章编号:1672-7800(2016)008-0183-03 0 引言 无论是科学研究还是实际生产中,人们通过采集、测量或者实验会获得很多数据,通常情况下,这些数据都是离散的,很难直接从一大堆离散数据中找到它们的内在联系。随着计算机图形学的发展,离散数据的重建与可视化得到越来越广泛的研究与应用,主要是对数据进行插值、拟合形成曲线或曲面,用图形图像的方式表现出来。本文结合实际需求,针对手绘图形实时输出产生的噪点问题,提出一种新的研究方法,对干扰点进行处理,并在MFC中实现。实验证明,该方法能够很好地应用于手绘图形生成中 1 问题阐述 激光笔打在手绘板上进行绘图,采样画笔的采样频率固定不变,快速书写时点与点之间的?g隔大,采集的样点相对精确,所绘出的图像圆滑,可以被视觉所接受。但在实际操作中,手绘迅速程度无法保证,当笔触放慢时,点与点的间隔很小,相同时间段内,采集点的数量增多,若不对采集点进行处理,则导致绘出的图像产生边缘噪点 2 离散点处理技术 离散点是一些孤立的点集,每个元素之间都有一定的间距,在二维或者三维空间上无规律分布,复杂程度不一[1] 目前,国内外学者主要用3种技术对离散点进行处理,选择何种方法取决于数据的准确性,用逼近的方法处理带有一定误差的数据;用插值的方法处理非常准确的数据;若部分数据有误差,部分数据准确,则选用拟合的方法 上述过程将数据分为两部分,在阈值范围以内的不做处理,若将不合阈值的点全部删除,曲线会更加平滑,但直接删除的后果是数据的误差导致图像失真,因此,该部分暂留点进行分析后再加以精确,保证数据的可靠性 考虑到笔画的趋势问题,将点按照方位进行处理,以本次保留点为原点,下一保留点为终点,两点连线作为参考向量,计算其余点向量与之夹角,夹角越小,与用户绘制图形相关性越大,反之,夹角太大,则极有可能为干扰点 定义相邻保留点的中点坐标为(x,y),干扰点坐标为(xj,yj),w1=0.5,与参照线直线夹角余弦值为w2,若w2w1将本部分点再次删减,以距离加权的方式计算其余采集点的估计值remain,插入相应保留点位置 当前对已有离散点做好预处理,运用GDI的DrawCurve算法,通过一定的张力,将最终保留点连接为基数样条曲线,保证绘制的曲线平滑地经过每一个点,陡度上没有突然的变化和尖角,确保绘制的滑顺性 4 实现 4.1 平台 采用VS/MFC开发环境,MFC是VC++ 的核心,彻底封装Windows应用程序开发包的功能和结构,提供一个应用程序框架,并继承C++绘图方面的优点,结合图形设备接口GDI,处理所有Windows程序的图形输出。MFC提供了两种重要的类以支持GDI绘图,一是用于设置绘图属性和绘制图形的设备环境DC类,二是各种GDI绘图对象的绘图对象类[2] 4.2 双缓冲机制 Windows需要重画窗口时,会向窗口发出一个消息函数,应用程序将在消息响应函数中重绘,导致屏幕不停闪烁,绘图效率低,CPU占用率高,还有可能导致程序崩溃[3]。因此对于本次复杂绘图,采用后缓冲区的方式,将窗口内容拷贝到dc中,要显示的函数先绘制在内存虚拟dc上。为方便调用,dc作为一个全局的变量存在,当所有操作完成后,再将内容复制到屏幕,实质上只是在OnPaint里贴图,解决屏幕闪烁问题 主要实现代码如下: CPaintDC dc(this);CRect rect;GetClientRect(rect); //获取对话框长宽CDC dcBmp; //定义并创建一个内存设备环境 CBitmap MemBitmap; //定义一个位图对象dcBmp.CreateCompatibleDC(dc);//创建兼容性DC MemBitmap.CreateCompatibleBitmap(dc,rect.Width(),rect.Height());//建立一个与屏幕显示兼容的位图,将位图选入临时内存设备环境 4.3 数据 采集的离散点数据保存在bin文件中,每个点分别由X坐标、Y坐标、笔画计数组成,其中笔画用来判断两点是否相连,采集数据部分点的存储信息如图1所

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档