- 博客(13)
- 资源 (2)
- 收藏
- 关注
转载 在OpenCV中自适应确定canny算法的分割门限
在OpenCV中用canny算子进行边缘检测速度很快,不过有点不爽的就是高低阈值需要输入。在matlab中,如果不指定阈值的话,由函数自适应确定,因此仿照matlab中的做法,对canny函数进行了修改,以便当用户没有指定高低阈值时,由函数自适应确定阈值。我在OpenCv原码库中增加了一个函数,用于确定高低阈值。view plaincopy to clipboardprint?
2012-01-08 21:04:43 653
原创 仿射变换
图像旋转IplImage *rotateImage(const IplImage *src, float angleDegrees){ // Create a map_matrix, where the left 2x2 matrix // is the transform and the right 2x1 is the dimensions. float m[6];
2012-01-04 18:35:03 759
转载 CV_IMAGE_ELEM读取某点的像素
可以使用opencv定义的宏来提取象素值假设灰度图像image,存取其i行j列的象素可以这样:CV_IMAGE_ELEM(image, uchar,y, x)如果是彩色图像就是CV_IMAGE_ELEM(image, uchar,y, 3*x)CV_IMAGE_ELEM(image, uchar,y, 3*x+1)CV_IMAGE_ELEM(image, uchar,y, 3*
2012-01-04 12:56:23 17050 4
原创 霍夫变换直线检测
#include "stdafx.h"#include "highgui.h"#include "cv.h"#include "cxcore.h"void main(int argc,char** argv) { IplImage *srcRGB = cvLoadImage("text.jpg",1); cvNamedWindow("src"
2011-12-29 22:58:15 2636 1
原创 opencv读取RGB直方图
// text.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "highgui.h"#include "cv.h"#include "cxcore.h"#include //#include using namespace
2011-12-29 11:01:43 3200
转载 C++中new和delete的用法
new和delete运算符用于动态分配和撤销内存的运算符new用法: 1. 开辟单变量地址空间 1)new int; //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a. 2)int *a = new in
2011-12-08 21:23:53 401
原创 算术编码
它的基本原理是:将待编码的信息数据看作是多个符号组成的符号序列,将被编码信息数据的符号序列表示成实数0和1之间的一个间隔(Interval)。无论信息有多长,其输出仅仅是一个数,而且是一个介于0和1之间的二进制小数。信息越长,编码表示它的间隔越小,表示这一间隔所需的二进制位越多。 给定事件序列的算术编码步骤如下:(1) 编码器在开始时将“当前间隔”[L,H]设置为[0,1];(2
2011-12-03 13:52:00 242
转载 Huffman编码
Huffman编码是最流行的基于统计学的数据压缩方法,下面我们简单介绍它的实现步骤:1. 将信源符号按照概率递减顺序排列;2. 取两个概率最小的符号分别分配以“0”和“1”,然后把它们的概率相加,并作为一个新的符号的概率,与其它未分配符号按照(1)重新排列;3. 重复(1)(2)过程,直至所有概率相加得1;4. 寻找从每一个信源符号到概率为1处的路径,记录下路径上的“0”和“1”;
2011-12-03 13:47:53 1095
转载 结构体的相关概念
typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于:若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n;若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n;区别就在于使用时,是否可以省去str
2011-12-01 13:50:30 510
原创 Huffman编码
1、建立Huffman树 对于有n个叶子节点(数据)H树共有2n-1个节点,可以用2n-1个一维数组来存放各个节点,每个节点同时还包含双亲和孩子节点的信息,构成一个静态三叉链表。
2011-11-30 22:26:36 70
原创 opencv边缘检测(laplace,log,canny)
二、 基于二阶微分的边缘检测方法 一阶微分组成的梯度是一种矢量, 不但有大小还有方向, 和标量比较, 数据存储量比较大。Lap lac ian 算子是对二维函数进行运算的二阶导数算子 , 与方向无关, 对取向不敏感, 因而计算量要小。根据边缘的特性,Laplacian算子可以作为边缘提取算子, 计算数字图像的Laplacian值可以借助模板实现, 但是它对噪声相当敏感, 它相当于高通滤
2011-11-30 15:44:15 8079
原创 opencv 边缘检测(reberts,sobel,prewitt,kirsch)
经典的边缘检测方法是对原始图像中像素的某小邻域来构造边缘检测算子。常用的边缘检测方法有Roberts算子、Sobe l算子、Prew itt算子、K irsch算子、Laplacian算子、LOG 算子、C anny算子等。一、基于一阶微分的边缘检测方法1、最简单的梯度算子是Roberts算子, 它是一个2 * 2模板, 利用局部差分检测比较陡峭的边缘, 但对于噪声较敏感, 经常会出现孤立
2011-11-28 09:33:26 9501 3
边缘提取
1、Sobel算子使用扩展 Sobel 算子计算一阶、二阶、三阶或混合图像差分 void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 );src 输入图像. dst 输出图像. xorder x 方向上的差分阶数 yorder y 方向上的差分阶数 apertu
2011-11-24 11:52:10 128
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人