自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(129)
  • 资源 (8)
  • 收藏
  • 关注

转载 opencv Remap 图像的映射

重映射是什么意思?把一个图像中一个位置的像素放置到另一个图片指定位置的过程.为了完成映射过程, 有必要获得一些插值为非整数像素坐标,因为源图像与目标图像的像素坐标不是一一对应的.我们通过重映射来表达每个像素的位置  :这里  是目标图像,  是源图像,  是作用于  的映射方法函数.让我们来思考一个快速的例子. 想象一下我们有一个图像  ,

2015-07-31 20:27:05 3266

转载 opencv 霍夫圆检测

霍夫圆变换霍夫圆变换的基本原理和上个教程中提到的霍夫线变换类似, 只是点对应的二维极径极角空间被三维的圆心点x, y还有半径r空间取代.对直线来说, 一条直线能由参数极径极角  表示. 而对圆来说, 我们需要三个参数来表示一个圆, 如上文所说现在原图像的边缘图像的任意点对应的经过这个点的所有可能圆是在三维空间有下面这三个参数来表示了,其对应一条三维空间的曲线. 那么与二维的

2015-07-31 20:24:52 8114 1

原创 C/C++中的函数中的void和void* 理解

C/C++中的void和void*一、voidvoid关键字表示“空类型”的概念。但是,这里的“空类型”不表示“任意类型”,而是表示不存在的意思,也就是说C/C++不允许你写语句void a,不存在类型为void的东西.void表示“不存在”的意思,可以从void的两个应用中加以体现:1、void作为函数的返回值类型时,表示函数返回值不存在,即函数没有返回值。例如:

2015-07-31 20:22:04 8789

转载 opencv 霍夫线变换

霍夫线变换霍夫线变换是一种用来寻找直线的方法.是用霍夫线变换之前, 首先要对图像进行边缘检测的处理,也即霍夫线变换的直接输入只能是边缘二值图像.它是如何实现的?众所周知, 一条直线在图像二维空间可由两个变量表示. 例如:在 笛卡尔坐标系: 可由参数:  斜率和截距表示.在 极坐标系: 可由参数:  极径和极角表示对于霍夫变换, 我们将用 极坐标系 来

2015-07-31 20:09:25 524

原创 opencv copyto函数

copyTo最一般的用法是src.copyTo(dst),将src复制到dst矩阵中。后面一个参数可以表示复制的部分,如上面的代码src.copyTo( dst, detected_edges); 是将src中detected_edges矩阵对应的非零部分(即边缘检测结果)复制到dst中。所以最终显示的边缘和原图颜色一样,也可以直接显示detected_edges矩阵(黑白)。

2015-07-31 20:06:22 23044 2

转载 OpenCV函数 Canny 检测边缘

OpenCV函数 Canny 检测边缘.原理Canny 边缘检测算法 是 John F. Canny 于 1986年开发出来的一个多级边缘检测算法,也被很多人认为是边缘检测的 最优算法, 最优边缘检测的三个主要评价标准是:低错误率: 标识出尽可能多的实际边缘,同时尽可能的减少噪声产生的误报。高定位性: 标识出的边缘要与图像中的实际边缘尽可能接近。最小响应: 

2015-07-31 19:55:42 4679

转载 OpenCV函数 Laplacian 算子实现

OpenCV函数 Laplacian 实现 Laplacian 算子 的离散模拟。原理前一节我们学习了 Sobel 算子 ,其基础来自于一个事实,即在边缘部分,像素值出现”跳跃“或者较大的变化。如果在此边缘部分求取一阶导数,你会看到极值的出现。正如下图所示:如果在边缘部分求二阶导数会出现什么情况?你会发现在一阶导数的极值位置,二阶导数为0。所以我

2015-07-31 19:54:40 3340

转载 opencv sobel导数

如何使用OpenCV函数 Sobel 对图像求导。如何使用OpenCV函数 Scharr 更准确地计算  核的导数。原理Note 以下内容来自于Bradski和Kaehler的大作: Learning OpenCV .上面两节我们已经学习了卷积操作。一个最重要的卷积运算就是导数的计算(或者近似计算).为什么对图像进行求导是重要的呢

2015-07-31 19:51:15 1160

转载 opencv图像边界的填充

填充图像边界的两种方法:BORDER_CONSTANT: 使用常数填充边界 (i.e. 黑色或者 )BORDER_REPLICATE: 复制原图中最临近的行或者列。源码部分给出更加详细的解释。源码本程序做什么?装载图像由用户决定使用哪种填充方式。有两个选项:常数边界: 所有新增边界像素使用一个常数,程序每0.5秒会产生一个随机

2015-07-31 19:50:09 7911 1

转载 opencv 线性滤波器

用OpenCV函数 filter2D 创建自己的线性滤波器。原理Note 以下解释节选自Bradski and Kaehler所著 Learning OpenCV 。卷积高度概括地说,卷积是在每一个图像块与某个算子(核)之间进行的运算。核是什么?核说白了就是一个固定大小的数值数组。该数组带有一个 锚点 ,一般位于数

2015-07-31 19:37:47 377

转载 opencv 图像阈值分割图像

最简单的图像分割的方法。应用举例:从一副图像中利用阈值分割出我们需要的物体部分(当然这里的物体可以是一部分或者整体)。这样的图像分割方法是基于图像中物体与背景之间的灰度差异,而且此分割属于像素级的分割。为了从一副图像中提取出我们需要的部分,应该用图像中的每一个像素点的灰度值与选取的阈值进行比较,并作出相应的判断。(注意:阈值的选取依赖于具体的问题。即:物体在不同的图像中有可能会有不

2015-07-31 19:17:09 5845

转载 opencv图像金字塔

原理Note 以下内容来自于Bradski和Kaehler的大作: Learning OpenCV 。当我们需要将图像转换到另一个尺寸的时候, 有两种可能:放大 图像 或者缩小 图像。尽管OpenCV 几何变换 部分提供了一个真正意义上的图像缩放函数(resize, 在以后的教程中会学到),不过在本篇我们首先学习一下使用 图像金字塔 来做图像

2015-07-31 19:16:03 388

原创 opencv 其他形态学变换

如何使用OpenCV函数 morphologyEx 进行形态学操作:开运算 (Opening)闭运算 (Closing)形态梯度 (Morphological Gradient)顶帽 (Top Hat)黑帽(Black Hat)原理Note 以下内容来自于Bradski和Kaehler的大作 Learning OpenCV 。前一节我们讨

2015-07-31 19:11:25 491

原创 opencv 图像的腐蚀与膨胀

形态学操作就是基于形状的一系列图像处理操作。通过将 结构元素 作用于输入图像来产生输出图像。最基本的形态学操作有二:腐蚀与膨胀(Erosion 与 Dilation)。 他们的运用广泛:消除噪声分割(isolate)独立的图像元素,以及连接(join)相邻的元素。寻找图像中的明显的极大值区域或极小值区域。通过以下图像,我们简要来讨论一下膨胀与腐蚀操作(译者注:注意这张图像中

2015-07-31 19:03:07 912

原创 opencv简单滤波

归一化块滤波器:OpenCV函数 blur 执行了归一化块平滑操作。for ( int i = 1; i MAX_KERNEL_LENGTH; i = i + 2 ) { blur( src, dst, Size( i, i ), Point(-1,-1) ); if( display_dst( DELAY_BLUR ) != 0 ) { return 0;

2015-07-31 18:53:42 350

原创 图像的模糊化(像素偏移)

clear all;close all;clc;img=imread('lena.jpg');[h w]=size(img);imgn=img;n=4;for i=1:h for j=1:w offsetx=n*rand()-n/2; offsety=n*rand()-n/2; x=floor(i+offsetx);

2015-07-28 22:15:25 2755 1

转载 图像不断的腐蚀

clear all;close all;clc;img=imread('5.jpg');[m n]=size(img);m=double(m);n=double(n);Min=double(min(img(:))); %不断腐蚀的结果是像素全为最小值%Max=double(max(img(:))); %不断膨胀的结果是像素全为最大值w = strel('square

2015-07-28 22:08:47 458

原创 径向基概率神经网络的实例(实现预测,分类)

[filename, pathname] = uigetfile('ST30.xls');file=[pathname filename];x=xlsread(file);[filename, pathname] = uigetfile('NST30.xls');file=[pathname filename];y=xlsread(file);p=[x;y]; p=p'; T=

2015-07-28 21:49:39 3688 1

原创 BP神经网络预测实例

BP神经网络的预测,根据输出层的是线性函数,这样可以拟合出输出和输入之间的函数关系,从而实现输入新的值时,可以预测值,实例:clear;p0=[11.9850 12.1121 12.2389 12.3626 12.4810 12.5768 12.6743 12.7627 12.8453 12.9227 12.9905 13.0756];for i =1:7 p(:

2015-07-28 21:39:46 17682 1

原创 Elman神经网络的实例(预测结果,函数回归)

[filename, pathname] = uigetfile('17_1_P.xls');file=[pathname filename];x=xlsread(file);p=[x(:,1),x(:,2),x(:,3),x(:,4),x(:,5),x(:,6);]' t= x(:,7)',[filename, pathname] = uigetfile('17_1_Ptest.xl

2015-07-28 21:35:55 6204 3

原创 支持向量回归(SVR)对函数的拟合近似

%% 1D Regression example%close allclear alltic%-------------------creating and plotting data----------------n=50;x=linspace(0,3,n)';xx=linspace(0,3,n)';xi=x;yi=cos(exp(x));y=cos(exp(xx));

2015-07-28 21:16:03 5522 4

原创 支持向量机的分类

%% SVM Classification 2D examplesclear allclose allclcn = 100; sigma=0.3;[Xapp,yapp,xtest,ytest]=datasets('gaussian',n,0,sigma);%产生n个高斯分布的随机样本数据Xapp=single(Xapp);[Xapp]=normalizemeanst

2015-07-28 21:12:10 866

原创 快速排序中运用插入排序算法

#include #include #include #include #define K 3void PrintArr(int *pnArr, int nLen){ for (int i = 0; i < nLen; i++) { printf("%d ", pnArr[i]); } printf("\n");}void Swa

2015-07-28 20:55:12 426

原创 随机快速排序

在快速排序中每次对数组的分界操作Partition都是以数组的末位点作为分界点(key),这样就带来了一个问题——当待排序数组是一个已排好序的数组时,快速排序的执行时间是O(n平方),在执行 时间上比较耗时,于是就有了随机快速排序的思想。  在随机快速排序中,每次对数组的分界操作Partition都是在数组中随机寻找一个元素作为分界点(key),这样就避免了上诉问题,随机排序的平均在执行时

2015-07-28 20:46:03 421

转载 快速排序算法

快速排序算法的描述算法导论,第7章快速排序时基于分治模式处理的,对一个典型子数组A[p...r]排序的分治过程为三个步骤:1.分解:A[p..r]被划分为俩个(可能空)的子数组A[p ..q-1]和A[q+1 ..r],使得A[p ..q-1] 2.解决:通过递归调用快速排序,对子数组A[p ..q-1]和A[q+1 ..r]排序。3.合并。 快速排

2015-07-28 20:36:06 484

转载 最大堆排序

最大堆排序1.堆  堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:  Key[i]=Key[2i+1]&&key>=key[2i+2]  即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。  堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,满足 Key[i]2.堆排序的思

2015-07-28 20:03:28 543

转载 归并排序

归并排序算法        “归并”一词的中文含义就是合并、并入的意思,而在数据结构中的定义是将两个或两个以上的有序表组合成一个新的有序表。        归并排序(Merging Sort)就是利用归并的思想实现的排序方法。它的原理是假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,再两两归并,……,如此重复,直至得到一个长度为n的有序序列为止,

2015-07-28 18:08:51 404

转载 递归算法详细分析

递归主要的是每次递归一次,就创建一个存储空间,就是栈,因为函数调用时,当调用完函数时,接下来回运行函数下面的语句,对于递归来说,每个栈中都调用了函数,当递归结束后,得运行函数后面的语句,就是指在每个栈中都要运行函数后面的语句,直到栈为空为止,这里有一个简单的程序,可用于说明递归。程序的目的是把一个整数从二进制形式转换为可打印的字符形式。例如:给出一个值4267,我们需要依次产生字符

2015-07-28 17:20:22 380

原创 自组织神经网络的实现

1、可以调用MATLAB工具箱里的函数创建竞争性神经网络:  主要进行分类:newc(p,s,KLR,CLR)   --------------------------------------p表示输入的范围,s-------------------------------表示神经元的个数                KLR表示Kohonen学习速率,--------------

2015-07-28 10:54:39 1643

转载 协方差和协方差矩阵

协方差的定义 对于一般的分布,直接代入E(X)之类的就可以计算出来了,但真给你一个具体数值的分布,要计算协方差矩阵,根据这个公式来计算,还真不容易反应过来。网上值得参考的资料也不多,这里用一个例子说明协方差矩阵是怎么计算出来的吧。记住,X、Y是一个列向量,它表示了每种情况下每个样本可能出现的数。比如给定则X表示x轴可能出现的数,Y表示y轴可能出现的。注意这里是关键,给定了4

2015-07-27 22:40:44 458

原创 原地随机排列数组

在循环中,随机选择一个地址,跟目前的地址进行交换,达到排序的目的:#include #include #include #include void PrintArr(int *pnArr, int nLen){ for (int i = 0; i < nLen; i++) { printf("%d ", pnArr[i]); } pr

2015-07-27 17:02:08 336

原创 随机排列问题

随机排列数组:1)PERMUTE-BY-SORTING(A)为数组的每个元素赋一个随机的优先级,然后根据优先级对数组A进行排序。PERMUTE-BY-SORTING(A)1 n ← length[A]2 for i ← 1 to n3 do P[i] = RANDOM(1, n3)4 sort A, using P as sort ke

2015-07-27 16:54:34 416

原创 雇佣问题

考虑一个雇佣问题:你是一个老板,向猎头公司委托寻找一个秘书职位,猎头每天为你推荐一个应聘者,而你对他进行面试。你的目标是,任 用所有应骋者中资质最好的。但由于秘书职位不能空缺,在每次面试完后,都要立即给面试者结果,所以只要当天的面试者资质比现任秘书好,你就解雇现任的秘 书,而重新雇佣当天的应骋者。下面给出面试n个人的伪代码:HIRE_ASSISTANT(n) {1

2015-07-27 16:43:26 608

原创 插入排序

有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,这样一直将所有的数进行排序。1.插入排序, 从第二个数开始,先将第二个数做一个副本放在一旁(变量中)。2.第二个数同前一个数比较,小于则用前一个数覆盖第二个数, 然后将副本放在前一个数前面3.再将第三个数做一个副本取出,第三

2015-07-27 15:48:20 443

原创 基于小波变换到图像融合

%导入待融合图像1 load bustX1=X;map1=map;subplot(131);image(X1);colormap(map1);title('原始图像1');axis square%导入待融合图像2 load maskX2=X;map2=map; %对灰度值大于100的像素进行增强,小于100的像素进行减弱 for i=1:256 for j=1:

2015-07-27 15:07:38 6256 2

原创 图像去噪 使用dct变换进行去噪

因为噪声往往是高频部分,可以将图像转换到频域,进行高频处理:把高频部分虑掉.%读取图像X=imread('wangshi.jpg'); X=rgb2gray(X);%读取图像尺寸[m,n]=size(X); %给图像加噪Xnoised=imnoise(X,'speckle',0.01); %输出加噪图像figure(1); imshow(Xnoised);%DCT变换

2015-07-27 15:02:17 10685 1

原创 SVM分类的一个例子

SVM分类的过程:1、选定训练集和测试集------------------->数据的预处理---------------------------------》训练SVM----------------------------------》预测测试集------------------------》分类的正确率close all;clear;clc;format compac

2015-07-27 14:34:26 4223

原创 图像分割(大律法 OSTU法)

详细代码:clc;clear all;close all;I=imread('lena.jpg');%调用函数方法 graythresh()level=graythresh(I);bw=im2bw(I,level);imshow(bw);%详细的代码imax=max(max(I));imin=min(min(I));T=double(imin:imax);[m n]=

2015-07-27 14:17:10 4856

原创 图像的阈值分割(迭代法选择阈值)

迭代法阈值选择算法是对双峰法的改进,他首先选择一个近似的阈值T,将图像分割成两个部分,R1和R2,计算出区域R1和R2的均值u1和u2,再选择新的阈值T=(u1+u2)/2;重复上面的过程,知道u1和u2不在变化为止,详细过程的代码:clc;clear all;close all;I=imread('lena.jpg');%设置初始阈值 去最大值和最小值

2015-07-27 13:58:35 41908 7

原创 图像的频域变换

图像的频域变换,变换后会是图像处理起来更加方便,  图像的正交变换,正交变换可以减少图像数据 的相关性,获取图像的整体特点,有利于较少的数据量表示原始图像, 离散傅里叶变换: 一维傅里叶变换:对于有限长序列f(x)(x=0,1,2...N)  定义一维傅里叶变换,二维傅里叶变换:图像的傅里叶变换,图像的大部分都是灰度变

2015-07-27 12:33:48 981

随机一致采样算法C++ 代码

随机一致采样算法C++ 代码,用于随机一直采样的详细过程

2015-09-07

径向对称变换

径向对称变换,用于检测人眼的瞳孔区域的中心,亮暗两种区域的检测对称的性质

2015-09-07

ASM 模型对人脸的特征点的检测

ASM 模型对人脸的特征点的检测,可以检测出人脸特征点,可以进行视频的中特征点的处理,,,表情识别啥的,,还可以添加上去三角剖分

2015-09-07

随机一致抽样例子代码详解

随机一致抽样例子代码详解,很好的理解随机一致抽样的过程,结合原理

2015-09-06

径向基函数插值的代码

径向基函数插值的代码,用于一维 二维三维数据的插值

2015-09-05

高斯回归过程代码

高斯回归过程代码,用于得到自变量和因变量之间的关系

2015-07-22

图像多分辨率金字塔代码

图像多分辨率金字塔代码,对图像进行高斯滤波,然后进行上下采样, 得到图像的多分辨率金字塔

2015-07-16

模式识别的几种方法

主要讲述几种模式识别的方法在实际中的不同运用

2014-07-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除