matlab练习程序(多圆交点)】的更多相关文章

matlab练习程序(SUSAN检测) SUSAN算子既可以检测角点也可以检测边缘,不过角点似乎比不过harris,边缘似乎比不过Canny.不过思想还是有点意思的. 主要思想就是:首先做一个和原图像等大的目标图像.然后用一个圆形的模板,用模板去遍历原图像每个像素,把模板内的每个像素都和模板中心像素比较,如果灰度小于一个阈值,那么就对目标图像当前和原图像相同位置的像素加一,直到结束.目标图像中在原图像是角点的位置就会取局部极小,所以做一个反向的相减.img=max(img)-img,if img…
matlab练习程序(HOG方向梯度直方图)http://www.cnblogs.com/tiandsp/archive/2013/05/24/3097503.html HOG(Histogram of Oriented Gradient)方向梯度直方图,主要用来提取图像特征,最常用的是结合svm进行行人检测. 算法流程图如下(这篇论文上的): 下面我再结合自己的程序,表述一遍吧: 1.对原图像gamma校正,img=sqrt(img); 2.求图像竖直边缘,水平边缘,边缘强度,边缘斜率. 3.…
最近总是对计算几何方面的程序比较感兴趣. 多圆求交点,要先对圆两两求交点. 有交点的圆分为相切圆和相交圆. 相切圆求法: 1.根据两圆心求直线 2.求公共弦直线方程 3.求两直线交点即两圆切点. 相交圆求法: 1.求公共弦方程直线. 2.公共弦直线方程和其中一个圆方程联立求解即可. 公共弦直线方程就是两圆方程的差. 结果如下: matlab代码如下: main.m: clear all;close all;clc; n=; cic=rand(n,); %(x,y,r) hold on; :n-…
很简单的算法,这里是把每对线段都进行比较了. 还有一种似乎先通过x和y排序再进行交点判断的,不过那种方法我还没看太明白. 这里的方法如下: 1.根据线段的端点求两条直线的交点. 2.判断直线的交点是否在两条线段上. 结果如下: matlab代码如下: clear all;close all;clc; n=; p=rand(n,); %(x1,y1,x2,y2)线段两端点 :n pbar=p(i,:); pbar=reshape(pbar,[,]); line(pbar(,:),pbar(,:))…
原始算法是sphere,我这里简化为circle了. Ritter's求最小包围圆为线性算法,因为非常简单,所以应用非常广泛. 该算法求出的圆比最优圆大概会大个5%到20%左右,求最优圆应该可以用Bouncing Bubble算法,以后有机会可以尝试一下. Ritter's算法如下: 1.从点集中随机选出两个点作为直径对圆进行初始化. 2.判断下一个点p是否在圆中,如果在则继续本步骤,如果不在则进行步骤3. 3.使用p作为新圆的一个边界点,另一个边界点为距离p最远的圆上的点,使用这两个点作为直径…
最近对图像坐标的变换很感兴趣啊,这次是将一张图像变换为圆形. 变换原理就是按变换前后像素到圆心的距离按比例缩减就行了. 改变x,y方向上的系数,应该还可以变换为椭圆,不过我还没有尝试. 注意我这里相当于缩小图像了,所以用的是正向插值,如果想生成一个大圆,还是需要逆向插值的. 原图如下: 处理后效果: matlab代码如下: clear all;close all;clc; img=imread('lena.jpg'); [h w]=size(img); imshow(img); imgn=zer…
变换使用的模板必须是单连通的,而且模板中心必须在模板内,如果在模板中打个结或是月牙形,这里的程序就处理不了了. 虽然非单连通模板也有办法处理,不过不是这里要讨论的. 这里用到的方法和矩形变换为圆那片文章中用的方法几乎一样,变换前后像素按比例缩减,不过在判断弧度和图像边界到模板中心距离时略有不同. 变换为圆时弧度可以直接计算出来,而变换为任意形状只能算出一个最小相似值. 至于图像边界到模板中心距离只能分八种情况判断了,处理圆时可以根据对称性简化程序,这里似乎没有什么好办法简化. 变换细节上,那篇文…
这个程序我最初是用FreeImage写的,这两天改成了matlab,再不贴上来,我就要忘了. 看到一篇文章有这样的变换,挺有意思的,就拿来试了一下,文章点此. 全景图到穹顶图变换,通俗的说就是将全景图首尾相接做成一个圆环的样子. 先看下面这张图: 下面的矩形就是我们要处理的全景图,上面的矩形是变换后的图像.下面图像的底边对应穹顶图的内圆,顶边对应穹顶图的外圆,当然,反过来也是可以的. 程序流程: 1.定义穹顶图内圆和外圆的半径,变换后的像素就填充在这个内外半径的圆环中. 2.遍历穹顶图,当所处理…
还是计算几何, 多边形的核可以这样理解:这个核为原多边形内部的一个多边形,站在这个叫核的多边形中,我们能看到原多边形的任何一个位置. 算法步骤如下: 1.根据原多边形最大和最小的x,y初始化核多边形,就是个矩形. 2.计算多边形当前处理的点的凹凸性. 3.用当前点与其后继点构成直线,判断当前点的前驱点在该直线的左边或右边. 4.用该直线将原核多边形分为两个部分,选择其中一个部分作为处理下一个点将用到的核,选择的依据有以下两点: 1)如果当前点为凸点,那么选择的核与3步中前驱点的所在方向相同. 2…
静止背景下的卡尔曼多目标跟踪 最近学习了一下多目标跟踪,看了看MathWorks的关于Motion-Based Multiple Object Tracking的Documention. 官网链接:http://cn.mathworks.com/help/vision/examples/motion-based-multiple-object-tracking.html?s_tid=gn_loc_drop 程序来自matlab的CV工具箱Computer Vision System Toolbo…