光栅图形学作业
一、基本选题
基本选题为区域填充,顺便把画线给实现了。编程语言使用的是 python3,使用的第三方库为 opencv。
使用如下命令安装依赖包:
c++
sudo pip3 install -r requirements.txt
所有代码位于 main.py 中,使用命令 python3 main.py 即可运行。
–基本功能: 使用Bresenham算法画线
–允许OpenCV完成图像读写,禁止cv::line
–扩展效果:
•使用Kernel filter进行抗锯齿。
•使用SSAA进行抗锯齿。(允许cv::resize)
1.1 画线
实现画线的函数为 line(p1,p2)和 drawline(a,p1,p2,col),作用如下:
line(p1,p2):输入两个点坐标,默认 |p1x p2x| ≥ |p1y p2y|,返回一个从 p1 到 p2 需要着色的点的 listdrawline(a,p1,p2,col):输入图像矩阵 a、线段起点终点和需要着色的颜色,在 a 中画出该线段实现效果如图 1 所示。
图 1: 一个五角星
可以看到放大之后的毛刺效果,如图 2 所示。
图 2: 放大之后的线段
1.2 区域填充
实现函数为 colorize(a,p,bg,fg),具体为在矩阵 a 中,以点 p 为起始点,填充颜色 fg,默认去覆盖颜色 bg。使用队列实现,效果如图 3 所示。
图 3: 一个白白的五角星
可以看到毛刺效果并没有消失,如图 4 所示。
图 4: 放大之后的边缘
二、加分项
此处实现了反走样功能
2.1 反走样
反走样使用卷积操作使图像平滑,其中卷积核为
F= 161 2 4 21 2 1
我自己手写了一下卷积实现(代码中 91-95 行,已注释),经过测试,运行效率远不如 opencv 中的 filter2D 函数来得快。实现反走样之后的效果如图 5 所示。
图 5: 一个没有毛刺的五角星
可以看到边缘已经平滑,如图 6 所示。
图 6: 放大之后的边缘出于美观角度,最后在背景中又人为地加入了一些噪点,能够拥有更好的视觉效果。最终成品如图 7 所示。
图 7: 一个有背景的五角星
参考文献
- 网络教学中基于.NET的作业管理系统设计与实现(电子科技大学·朱彦敏)
- 建筑设计院图档管理系统的设计与实现(吉林大学·时淮龙)
- 基于B/S架构报表生成与图形化的研究与实现(合肥工业大学·高涵)
- 基于视频分享社交系统后台的设计与研发(中国地质大学(北京)·刘昌瑞)
- 电商场景下的复杂横幅广告参数化设计系统研究(浙江大学·王奇峰)
- GIS在空间信息门户中的研究与应用(中国地质大学(北京)·周柏贾)
- 《图像处理》专题学习网站设计与开发(华中师范大学·徐军)
- 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
- Linux环境下基于Web的图档管理系统的开发(山东科技大学·刘治国)
- LED光学设计信息集成共享服务平台研究与实现(五邑大学·梁国潮)
- 基于J2EE架构实时监控系统的应用研究(武汉理工大学·王献刚)
- 电商场景下的复杂横幅广告参数化设计系统研究(浙江大学·王奇峰)
- 基于C#.NET和MATLAB的茶叶甄别系统研究与开发(河北大学·邢国凯)
- 分布式应用系统的研究与开发(武汉理工大学·廖斌)
- 印刷公司内容管理平台的设计与实现(吉林大学·郎彩虹)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码导航 ,原文地址:https://bishedaima.com/yuanma/36038.html