matlab练习程序(DBSCAN)】的更多相关文章

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.…
DBSCAN全称Density-Based Spatial Clustering of Applications with Noise,是一种密度聚类算法. 和Kmeans相比,不需要事先知道数据的类数. 以编程的角度来考虑,具体算法流程如下: 1.首先选择一个待处理数据. 2.寻找和待处理数据距离在设置半径内的数据. 3.将找到的半径内的数据放到一个队列中. 4.拿队列头数据作为当前待处理数据并不断执行第2步. 5.直到遍历完队列中所有数据,将这些数据记为一类. 6.选择没有处理到的数据作为一…
静止背景下的卡尔曼多目标跟踪 最近学习了一下多目标跟踪,看了看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…
本练习程序是受到了这个老外博文的启发,感觉挺有意思,就尝试了一下.他用的是opencv,我这里用的是matlab. 过去写过透视投影,当时是用来做倾斜校正的,这次同样用到了透视投影,不过更有意思,是将一张图像贴到另一张图像上. 两个透视投影都需要先计算投影矩阵,倾斜校正那一篇是通过解线性方程组求的变换矩阵,而这一篇是通过奇异值分解求的变换矩阵. 为了对齐两张图像,还需要对投影后的图像做一次仿射变换,其实就是坐标平移. 这里做投影和仿射直接调用了matlab的系统函数,方便一些. 还是先介绍下如何…
最近总是对计算几何方面的程序比较感兴趣. 多圆求交点,要先对圆两两求交点. 有交点的圆分为相切圆和相交圆. 相切圆求法: 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向下为正,z向屏幕里面为正.相当于标准右手系绕x轴旋转了180度. 将三个点光源放在 r = [0.3,0,0.5];g = [0.3,-0.5*cos(pi/6),-0.5*sin(pi/6)];b = [0.3,0.5*cos(pi/6),-0.5*sin(pi/6)]; 这三个位置上,向四周发射光线,取光线到y-z平面的模的倒数作为光的强度. 图像如下: 程序如下:   clear all; close all; clc; r = [0.3,0,0.5]; g…
能够使用这样一条线遍历图像中所有的像素,不过这里没有这样做,而只是生成了这样一条曲线. 程序中h,w是最终图像的高和宽,n为希尔伯特曲线阶数. 这里如果n等于log2(h)或log2(w),则图像就全为白了,也算是正好遍历所有像素了. 当然,n很大的话,图像也是全为白的,不过,那样不算正好遍历吧. 代码中生成曲线的核心函数可以在这里找到. 生成图像如下: matlab代码如下: main.m clear all;close all;clc; h=; w=; n=; imgn=zeros(h,w)…
我只是感觉好玩,写了这样一段程序. 原理就是先随机生成两个点,然后根据这两个点画直线,最后在直线上的像素保留,没在直线上的像素丢弃就行了. 最后生成了一幅含有很多空洞的图像. 当然,对含有空洞的图像是可以用修复算法修复的. 我也尝试修复了一下,用的算法我过去也写过,可以看这里. 这一次就不贴修复代码了,那段程序中的输入图像img.mask和这里的输出图像img.mask是一模一样的. 原图: 采样后: 修复后: matlab代码如下: main.m: clear all; close all;c…