可视计算概论课程Lab1

前言

Lab1作为让大家认识计算机可视化的入门级别Lab,许多方法都是比较片面的应用,而不深究其中的原理下面就做一个Lab1的report,或者说是回顾。

Image Dithering

引言

这一部分主要需要你实现四个函数,分别为Uniform Random, Blue Noise, Ordered和Error Defuse。
请添加图片描述请添加图片描述

Uniform Random

这里主要就是调用C++标准库函数random和cime,从而生成均匀分布在(-1, 1)之间的随机数,然后对每一个像素其RGB三色通道加上这样一个随机数再去转换,可以做到让Error更平均,虽然看上去有些地方的Error显然增大了,但平均下来会好很多,失真的情况会有所缓解。

请添加图片描述

Blue Noise

这个主要是采取了与上述噪音不同的“蓝噪音”,其具体生成方式较为复杂,可以参考连接
请添加图片描述

Ordered

从某种意义上来说,这种方法有点作弊的嫌疑,因为这其实是用了更高的分辨率,不过方法本身是好的。就是根据排列规则,将灰度分为10类,然后每一类用(3x3)的像素表达原先的一个像素。
请添加图片描述

Error Defuse

我们知道每一次近似都会产生误差,而当一个地方产生的误差较多就会出现比较明显的失真现象,该方法就是将每个地方的误差分配到之后要计算的像素中,使得看上去总体来说好了一点。
请添加图片描述

Image Filtering

引言

这个其实就是感受图片卷积的方法,这一部分你需要实现两个功能——Blurring, Edge。
请添加图片描述

Blur

这个我做的是取平均值,即输出图片的每个像素,是原图中该像素周围3x3像素的平均值,边缘的时候进行补0。

请添加图片描述

Edge Detection

边缘检测主要就是利用那些特殊的卷积块,进行卷积,从而计算得出这个地方是不是边缘,这里需要对横边和竖边进行平方和,以确定所有的边,其实也可以调参,但是好像不太需要?
请添加图片描述

Image Inpainting

这一部分可以理解为抠图plus,将一张图片完美融合到另一张图片中,这里用的方法其具体的计算过程助教完成了,(数学技巧高超),我们需要确定是边界条件。这里的边界条件由于我们是想保持物体本身的样子,所以我们需要将A-B设为边界,而不是A。

请添加图片描述

Line Drawing

这个没什么好说的,就是采用上课讲的方法进行划线。

请添加图片描述

Triangle Drawing

与上述方法同理,我的想法是先画出边,再将每条边内部填充成三角形。

请添加图片描述

Image Supersampling

这个的想法是,先将一张图片放大(长宽各到原来的rate倍),然后再采用卷积的方式取平均值恢复到原图。

这里的放大令人震惊,本来以为采用插值,但最后却是emm,简单的算了一下,感觉有点算了重复像素的感觉,不过效果好像不错,不太理解为什么这个与插值像等价。

rate=1

这个有明显的走样,可以看到领带处一言难尽。
请添加图片描述

rate=5

与上一张照片对比,可以看到反走样效果显著。
请添加图片描述

Bezier Curve

这个没什么好说的,就是画一条贝塞尔曲线,这里用的方法为暴力算,其实感觉还好。

其实一开始做我还想着能不能在多项式的基础上进行计算,后来发现,这样是不行的,因为C++精度有限,大数+小数会将小数吞掉,结果画出来是一条直线,errr,或许如果精度能够实现高一点这样的计算方式会更优,毕竟只需要加法。

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值