09 2014 档案
摘要:三角形两角的角平分线就能确定内切圆。结果如下:matlab代码如下:clear all;close all;clc;p=rand(3,2); %(x,y)v12=(p(2,:)-p(1,:))/norm(p(2,:)-p(1,:)); %一个顶点两边的归一化向量v13=(p(3,:)-p...
阅读全文
摘要:三角形两边的垂直平分线就能确定外接圆。结果如下:matlab代码如下:clear all;close all;clc;p=rand(3,2); %(x,y)cen1=(p(1,:)+p(2,:))/2; %三角形一条边中点cen2=(p(2,:)+p(3,:))/2; ...
阅读全文
摘要:很简单的算法,这里是把每对线段都进行比较了。还有一种似乎先通过x和y排序再进行交点判断的,不过那种方法我还没看太明白。这里的方法如下:1.根据线段的端点求两条直线的交点。2.判断直线的交点是否在两条线段上。结果如下:matlab代码如下:clear all;close all;clc;n=20;p=...
阅读全文
摘要:原始算法是sphere,我这里简化为circle了。Ritter's求最小包围圆为线性算法,因为非常简单,所以应用非常广泛。该算法求出的圆比最优圆大概会大个5%到20%左右,求最优圆应该可以用Bouncing Bubble算法,以后有机会可以尝试一下。Ritter's算法如下:1.从点集中随机选出两...
阅读全文
摘要:Bresenham画线算图形学中最基础的知识了,可惜我并没有选修过图形学,所有还是有必要熟悉一下。上一篇用到的画线函数应该算是数值微分法,也是我最常用的一种方法,不过这种方法似乎并不是很好。这里的画线方法比上一种方法好。算法原理如下:过各行各列象素中心构造一组虚拟网格线。按直线从起点到终点的顺序计算...
阅读全文
摘要:我只是感觉好玩,写了这样一段程序。原理就是先随机生成两个点,然后根据这两个点画直线,最后在直线上的像素保留,没在直线上的像素丢弃就行了。最后生成了一幅含有很多空洞的图像。当然,对含有空洞的图像是可以用修复算法修复的。我也尝试修复了一下,用的算法我过去也写过,可以看这里。这一次就不贴修复代码了,那段程...
阅读全文
摘要:接着上一次的融合。融合算法方面的修改暂时先到这里吧。剩下的工作就是代码改写,我感觉可以出个1.0版了。最终我几乎用C来重写了,没用C++的面向对象特性。不过暂时还是没有改写完,但是也只剩两个函数需要添加了。还是先看下效果吧,顺便和enblend比较一下,这个是我能找到的最好的融合软件了。这里的效果:...
阅读全文
摘要:自从上次写了Hilbert图像置乱之后,就对图像置乱研究了一下,发现这里面也是有很多置乱算法的。Arnold也算一种比较主要的置乱算法,算法由以下变换公式产生:这里a和b是参数,n是迭代次数,N是图像的高或宽。有了正变换公式,我们还需要反变换公式,正好我最近在学Mathematica,反变换公式就是...
阅读全文
摘要:接着上一次的融合。更改了部分代码,程序能够支持多张图片融合了。上一次的效果:这一次的效果:两张图像上下边界的拐角处还是有明显的差别的。可以看出第二张图像上边界的拐角处还是有一些不好的地方。接下来就要处理这些地方了。
阅读全文
摘要:接着上一次的融合。对部分算法进行了修改,不过还是有两个主要算法没有添加。当然,如果要应付各种情况,何止还需要两个算法。先看看上一次的结果:这一次的结果:可以看出,两次在图像外层边界处差别还是很大的。效果变好了,不过,代码行数反而变少了。
阅读全文