matlab练习程序(随机直线采样)】的更多相关文章

我只是感觉好玩,写了这样一段程序. 原理就是先随机生成两个点,然后根据这两个点画直线,最后在直线上的像素保留,没在直线上的像素丢弃就行了. 最后生成了一幅含有很多空洞的图像. 当然,对含有空洞的图像是可以用修复算法修复的. 我也尝试修复了一下,用的算法我过去也写过,可以看这里. 这一次就不贴修复代码了,那段程序中的输入图像img.mask和这里的输出图像img.mask是一模一样的. 原图: 采样后: 修复后: matlab代码如下: main.m: clear all; close all;c…
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.…
高级软件工程第二次作业:利用程序随机构造N个已解答的数独棋盘,代码如下: package SudokuGame; /** * 解决这个问题使用的是回溯+剪枝的算法 * 基本思想:不断地将每个格子可填入的数字减少,如果当前格子没有数字可填入,就回溯到上一格 * 实现算法:首先初始化数独,将数独的第一行以随机数字填入,从第二行开始的每个格子都从1开始找可以填入的最小的数字, 在没有数字可填时,就开始回溯. 此算法在回溯的同时将不可能的结果排除,不会陷入死循环 */ import java.io.Fi…
点云处理有时因为数据量太大,我们需要对其进行下采样. 这里的方法是先将点云填入固定大小的三维网格中,然后每个网格中选一个点生成新的点云. 新点云即为下采样后的点云. 这里使用斯坦福兔子作为测试点云. 小兔子pcd下载地址. 原始点云: 采样后点云: matlab代码如下: clear all; close all; clc; pc = pcread('rabbit.pcd'); pcshow(pc); pc_point = pc.Location; xlimit = pc.XLimits; yl…
随机游走类似布朗运动,就是随机的向各个方向走吧. 虽然代码没什么技术含量,不过产生的图像实在太漂亮了,所以还是贴上来吧. 产生的图像: matlab代码如下: clear all;close all;clc n=; %游走的步数.也是图像中像素个数,有些位置可能重复,所以白像素小于等于n x=; %初始x坐标 y=; %初始y坐标 pix=zeros(n,); %游走产生的像素坐标 neighbour=[- -;- ;- ; -; ; -; ; ]; %当前像素邻域 :n r=floor(+*r…
RRT快速搜索随机树英文全称Rapid-exploration Random Tree,和PRM类似,也是一种路径规划算法. 和PRM类似,算法也需要随机撒点,不过不同的是,该算法不是全局随机撒点,而是一次撒一个点,然后判断当前搜索树与随机点距离,然后找到搜索树距离随机点最近的节点,向该随机点方向扩展.这里随机点有一定的概率是终点,所以搜索树最终是能够到达终点的. 算法流程如下: 1. 首先确定地图与起始结束点位置,设置搜索树,这里定义了一个随机点列表和一个随机点索引前驱列表代表搜索树. 2.…
视频制作软件中一般都会有相邻帧切换的特效,我过去用过vagas好像就有很多切换特效. 我想这个也算是其中一种吧,虽然我不确定实际中到底有没有这种切换. 实际上我只是下班后太无聊了,写着玩的,没什么高深的东西. 从lena图转换为rice图的效果如下: matlab代码如下: clear all;close all;clc; img=imread('lena.jpg'); img2=imread('rice.png'); [h w]=size(img); imshow(img,[]); flag=…
又是计算几何,我感觉最近对计算几何上瘾了. 当然,工作上也会用一些,不过工作上一般直接调用boost的geometry库. 上次写过最小包围圆,这次是最小包围矩形,要比最小包围圆复杂些. 最小包围矩形可不一定是个直立的矩形,也可能像下图一样是倾斜的. 求法如下: 1.求多边形凸包,这里凸包直接调用系统函数了,细节可以参考这里,虽然当时写的不怎么样. 2.将凸包两个相邻的点连线作为矩形一条边. 3.寻找凸包上距离已得到的边最远的点,过该点做平行线,得到矩形第二条边. 4.将凸包上点向已求得的边投影…
最近总是对计算几何方面的程序比较感兴趣. 多圆求交点,要先对圆两两求交点. 有交点的圆分为相切圆和相交圆. 相切圆求法: 1.根据两圆心求直线 2.求公共弦直线方程 3.求两直线交点即两圆切点. 相交圆求法: 1.求公共弦方程直线. 2.公共弦直线方程和其中一个圆方程联立求解即可. 公共弦直线方程就是两圆方程的差. 结果如下: matlab代码如下: main.m: clear all;close all;clc; n=; cic=rand(n,); %(x,y,r) hold on; :n-…