11 2014 档案
摘要:对图像进行阈值的操作,可以认为是一种简单的分割前景和背景的方法。这种分割的方法一般用在前景像素和背景像素的强度值反差比较明显的情况下,如下图:我们可以看到这幅苹果的图像,代表前景的是苹果,代表背景的是白色部分。这幅图像前景背景分明,所以可以取一个阈值,如200。在图像中,凡是灰度低于200的像素,我...
阅读全文
摘要:图像金字塔(Image Pyramids)可以用来处理图像的缩放。有两种广为使用的图像金字塔:高斯金字塔和拉普拉斯金字塔。这里介绍高斯金字塔。高斯金字塔有两种操作:upsample和downsample,可以理解为图像的放大和缩小。以下图为例:图像如果downsample,则col和row均变成之前...
阅读全文
摘要:Erode和Dilate是基本的形态学运算,根据这两种运算,我们能够组成更多形态学运算。一、开运算 Openningdst = open(src, element) = dilate(erode(src, element))开运算就是将一幅图像先腐蚀再膨胀,主要作用是移除白色的小区域。二、闭运算 C...
阅读全文
摘要:1. 区别定义和声明定义:只能出现在一个地方。确定对象的类型并分配内存,用于创建新的对象。例如int my_array[100];声明:可以多次出现。描述对象的类型,用于指代其他地方定义的对象(例如在其他文件里)。例如:extern int my_array[];2. 指针和数组的访问机制数组:ch...
阅读全文
摘要:一、膨胀和腐蚀膨胀和腐蚀(Dilating and Eroding)是基本的形态学操作。在OpenCV中定义了erode和dilate函数完成相应的功能。膨胀和腐蚀主要作用有三:去除噪声;将分离的部分邻近连接起来;将密布的像素形成一块整体。膨胀操作也类似于线性滤波,不过使用的是最大值滤波器,以ker...
阅读全文
摘要:在ANSI C中,qsort函数的原型是#include void qsort(void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *));解释:qsort函数对含有nmemb个元素的数组进行排...
阅读全文
摘要:Opencv中处理图像平滑的手段主要有4种:箱式滤波器、高斯滤波器、中值滤波器、双边滤波器。1. 箱式滤波器 Normalized Box Filter箱式滤波器将当前像素的值替换为所有kernel范围内像素的值的平均值。公式如下:如果是3x3的核,则它对应的核是1/9 * [1, 1, 1; 1,...
阅读全文
摘要:源于hdu1013题目描述:The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that...
阅读全文
摘要:一、精确计算1000!的阶乘1000!有多大呢?拿微软自带的计算器一算,结果是4.02*10^2567,共有2568位。在C语言中我们没有能够精确表示这个数字的数据类型。如果非要计算,那么只能以数组的形式存放每一位数字。代码不太难,如下: 1 #include 2 #include 3 4 #...
阅读全文
摘要:使用C语言处理行输入的时候,使用fgets()。现在我要在某行输入“ENDOFINPUT”的时候,终止处理。所以果断就写了以下:char buf[256];fgets(buf, 256, stdin);while ( strcmp(buf, "ENDOFINPUT") != 0) { ... }按理...
阅读全文
摘要:1. 几个C语言声明的分析char (*j)[20];j = (char(*)[20]) malloc(20); // j是指向数组的指针const int * grape;int const * grape;int * const grape_jelly;const int * const gra...
阅读全文
摘要:一、随机数产生器在OpenCV中,我们主要使用RNG类(即Random Number Generator)来产生随机数。RNG rng(); // 默认以0xffffffff作为随机数产生器的种子我们也可以以系统的当前时间作为随机数产生器的种子。这也是常用的手段。#include RNG rng( ...
阅读全文
摘要:用OpenCV的话,也要会一些绘图的操作。主要是画线、圆、矩形、椭圆。绘图的话,首先要了解两种类型:Point和Scalar。Point就是点的类,我们用它来表示图像当中的点,比如Point pt; pt.x = 10; pt.y = 8;或者Point pt = Point(10, 8);Scal...
阅读全文
摘要:1. 一段代码,第一次执行时的行为与以后执行时不同:1 generate_initializer(char * string)2 {3 static char separator = ' ';4 printf("%c %s \n", separator, string);5 ...
阅读全文
摘要:一、两幅图像线性混合线性混合,就是g(x) = a*f1(x) +b*f2(x)。其中g为输出,f1、f2为输入。a+b=1。作用1:线性混合可以用于去噪,假设噪声的产生符合均值为零、标准差的独立分布。多个高斯分布求平均值,即可去除噪声。作用2:用于两张图片的切换。a从大到小变化,b从小到大变化。g...
阅读全文
摘要:1. C语言的许多特性是为了方便编译器设计者而建立的。于是C语言的语言特性有:数组下标从0而非1开始;C语言的基本数据类型直接与底层硬件相对应;auto关键字只对创建符号表入口的编译器设计者有意义;表达式中的数组名可以看作是指针;float被自动扩展为double(ANSI C中不再如此);不允许嵌...
阅读全文
摘要:对像素(i, j)做线性滤波的方法:1. 做一个3X3的矩阵,分别赋予(i, j)和它的4邻域和D邻域相应的权值。2. 计算。示例代码如下: 1 void Sharpen(const Mat& myImage,Mat& Result) 2 { 3 CV_Assert(myImage.dept...
阅读全文
摘要:第一步:检测链表是否有环。方法还是比较多的,这里先讲一个:快慢指针。快慢指针的方法,就是让两个指针同时指向链表。在向后遍历的时候,一个指针每次走两步,称为快指针;一个指针每次走一步,称为慢指针。如果快慢指针相遇,则说明链表有环,否则无环。(后面证明。)代码实现如下:// 如果有环,则返回快慢指针相遇...
阅读全文
摘要:我们有了Mat的对象之后,就可以开始对图像进行处理。在图像的处理过程中,对数据的查看并且对其进行修改,这应当是比较频繁的操作了。这里讲讲官方手册当中给出的三种方法。第一种方法:使用指向Mat数据部分的指针。代码如下: 1 Mat& ScanImageAndReduceC(Mat& I, const ...
阅读全文
摘要:Mat是Opencv2里面主要的类。Mat的对象常常用来表示一副图像的信息。Mat的基本操作十分简单,不多说了。下面这段代码能够读七八分明白,应该就算对Mat有大体了解。 1 /* For description look into the help() function. */ 2 3 #in...
阅读全文
摘要:由于在货币组合的题目中使用了母函数的方法,就顺便搜索一些资料和练习,加深自己的理解。杭电ACM课件中简要介绍了母函数的方法,并给出了几道相关的题目。1. HDU1398 Square Coins使用指定的货币来组合一个给定的目标值,问一共有多少种可能。这道题和我们以前的货币组合题目大同小异,代码如下...
阅读全文
摘要:10月23号的时候,写了用递归和动态规划的方式解决货币组合的方法(见《一个货币组合的问题》)这两天看到《组合数学》中,使用母函数(生成函数)解决排列组合问题的方法,觉得可以用在货币组合问题上。试验了一下,果然可以。(这里空出,详细地写一下母函数的方法,加深自己的理解。)代码如下: 1 #includ...
阅读全文
摘要:问题一:现在有10瓶药,合格的药每颗10克,但是有1瓶中的药不合格,每颗9克。问:称1次如何辨别哪瓶是不合格的? 答:将药瓶编号1,2,3...10,分别从中取1颗、2颗、3颗...10颗。共计55颗,用称称重,如果是正常的话,重量应为550克。如果比550克少1克,则是1号瓶不合格。如果少2...
阅读全文
摘要:如果表够大,散列函数足够好,那么散列表在查找上具有O(1)的时间复杂度。但是我们考虑出现冲突的情况,如果使用分离链表法来处理冲突。那么链表的平均长度等于装填因子a(元素个数与散列表大小的比值)的大小。所以不成功查找的复杂度为a,成功查找的复杂度为1 + a/2。代码实现如下: 1 #include...
阅读全文
摘要:重新实现了单链表,以指针而非哑节点的方式去指向第一个节点。代码如下: 1 /* 2 * 第二版链表实现 3 * 原先的实现,是以哑节点的方式来做链表的头部。 4 * 现在我们使用一个指针来做链表的头部,节约一个struct Node的空间 5 */ 6 7 #includ...
阅读全文
摘要:尽管ISO C99使用了非常简单的并且具备移植性的样例描述了rand函数和srand函数的实现。但是在具体的C语言函数库的实现上,由于考虑到运行效率以及线程安全,代码就稍微多了一些。这里以glibc 2.18为例。在stdlib目录下,我们找到rand.c,内容如下:1 /* Return a ra...
阅读全文
摘要:我们在编程实现算法的过程中,往往需要使用到随机数。由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?)。所以计算机生成的是伪随机数,供我们使用。我们使用C语言的rand函数,生成的也是伪随机数。一个简单的示范如下: 1 #include 2 #include 3 #in...
阅读全文
摘要:在C语言的头文件time.h中,定义了日期和时间操作的数据类型和操作。在此处,我们参考MinGW(Minimalist GNU for Windows)中的time.h。首先我们看看time.h所声明的数据类型: 1 typedef long clock_t; 2 3 typedef ...
阅读全文
摘要:代码实现如下: 1 #include 2 #include 3 #include 4 5 #define MIN (1 left); 23 MakeEmpty(t->right); 24 free(t); 25 } 26 return...
阅读全文
摘要:代码如下: 1 #include 2 #include 3 4 typedef int itemType; 5 typedef struct QueueRecord* queue; 6 7 /* 对于size大小的数组,如果没有额外的变量记录大小,而仅仅通过front和rear...
阅读全文
摘要:队列的链表实现比数组实现要难一些。队列的链表实现比栈的链表实现也要难一些。代码如下: 1 #include 2 #include 3 4 typedef int itemType; 5 struct Node; 6 struct Queue; 7 typedef struct N...
阅读全文
摘要:代码如下: 1 #include 2 #include 3 4 #define EMPTY_STACK (-1) 5 #define MIN_STACK_SIZE (3) 6 7 typedef int itemType; 8 struct Node; 9 typedef ...
阅读全文
摘要:代码如下: 1 #include 2 #include 3 4 typedef int itemType; 5 struct Node; 6 typedef struct Node *pNode; 7 typedef pNode stack; 8 9 struct Node...
阅读全文
摘要:代码实现如下: 1 #include 2 #include 3 4 typedef int itemType; 5 struct Node; 6 typedef struct Node *pNode; 7 typedef pNode list; 8 typedef pNode ...
阅读全文
摘要:直接看实现吧: 1 #include 2 #include 3 4 typedef int itemType; 5 struct Node; 6 typedef struct Node *pNode; 7 typedef pNode list; 8 typedef pNode ...
阅读全文
摘要:直接看实现吧: 1 #include 2 #include 3 4 typedef int itemType; 5 struct Node; 6 typedef struct Node *pNode; 7 typedef pNode list; 8 typedef pNode ...
阅读全文
摘要:如果我们要计算一个数X的N次幂,那么很直接地,我们可以写出以下代码: 1 int 2 Power(int base, int pow) 3 { 4 int result; 5 result = 1; 6 7 while (pow > 0) { 8 ...
阅读全文
摘要:如果我们要计算一个二进制数中1的个数,很显然会想到运用位运算的知识来解决。前面有篇博文,讲如何判断一个数是否是2的幂,其实就是判断一个二进制数中是否仅含有一个1,解法是x & x - 1。在理解上式的前提下,我们可以发现,如果二进制数x中包含不止一个1,那么x&x-1的结果就使得原先的x失去的最末尾...
阅读全文
摘要:怎么理解桶式排序呢?简单地说,桶式排序就是当我们知道待排序的每一个数据都大于等于零,并且小于一个正整数M,那么我们给出一个大小为M的数组,称之为bucket。于是这个数组能够容纳待排序的每一个数据的信息,我们遍历待排序数据,对于每一个数据i,我们使对应的bucket[i]加1。遍历完成之后,我们输出...
阅读全文

浙公网安备 33010602011771号