使用多边形绘制图像(MATLAB)

上一篇博客介绍了实现的原理以及自己的使用JS实现的版本,其实在一开始自己并不是使用JS使用,而使用MATLAB,最后实现的效果不是很好(运行时间还是相对较长),但是自己还是从中学到了诸如MATLAB程序优化等方面的知识。

一开始使用了Matlab,因为感觉MATLAB比较擅长矩阵运行,可能在图像的操作上有优势,但是用起来后傻眼了,MATLAB可以将多边形绘制到figure,但是没有办法取得绘制出来的图像的像素信息,这样子的话我就没有办法和原图像进行比较,已确定当前的适应度值是多少,程序也就没有办法再进行下去。

当时想到的解决办法就是利用矩阵,自己在矩阵上画图,这样就复杂了很多:
1. 首先先要要根据两个点,在矩阵上连接成一条直线(这儿要用到一点图形学上的方法);
2. 然后将各条线组合成一个多边形,并将多边形围成的区域着色(这一步还好,不用在去学习图形学的知识了(^_^),直接使用imfill函数就好了);
3. 最后一步,要将各个多边形图像层叠起来,形成一个图像,这里要理解alpha(透明度)的概念,并理解有透明度的图像在叠加时像素的计算方式(其中f指前景,b指背景,α为alpha值,参见维基百科):

使用多边形绘制图像(MATLAB)_第1张图片

这样才算基本完成了绘制图像( ̄o ̄) . z Z,而其他地方的逻辑基本跟JS版本的相同。

代码地址 github

MATLAB程序优化

未完待续

你可能感兴趣的:(MATLAB,有意思)