- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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所
您可能关注的文档
最近下载
- 工程水文及水利计算 小流域设计洪水计算、由暴雨资料推求设计洪水、由流量资料推求设计洪水、准备知识 设计洪水分析计算.doc VIP
- 2019款林肯航海家_汽车使用手册用户操作图解驾驶指南车主车辆说明书电子版.pdf
- 财务管理培训之财务基础知识培训课件.pptx VIP
- 慢性阻塞性肺疾病PPT课件共29张PPT).pptx VIP
- 河北高职单招考试二类单招联考文化试题.docx VIP
- 宅经.pdf VIP
- 金川公司社招技能操作人员考试题.pdf
- 暴雨洪水计算表格.xls VIP
- 年产8万吨乙酸乙酯生产车间的设计论文.docx VIP
- 2026届高考语文复习默写专题训练---看图填诗句类默写.docx
文档评论(0)