上一页 1 ··· 48 49 50 51 52 53 54 55 56 ··· 79 下一页
摘要: opencv这个图像库两年前就会用了,本科毕业设计就是用的他,不过其中有很多函数直到现在我也没怎么用过。关于这个库的学习,我自己的目标是只需要学会怎样调用库函数完成目标就可以了,至于原理性的东西我就不去深究了,原理的东西我会在matlab中实现的。平台是ubuntu+opencv2,具体版本我忘了。不过2之后的应该都可以。第一个先练手的程序,我尽量用C++版的:#include "cv.h"#include "highgui.h"#include <iostream>using namespace std;using namespace cv 阅读全文
posted @ 2013-04-18 23:18 Dsp Tian 阅读(15378) 评论(1) 推荐(1)
摘要: 主要是用来平滑图像的,克服了高斯模糊的缺陷,各向异性扩散在平滑图像时是保留图像边缘的(和双边滤波很像)。通常我们有将图像看作矩阵的,看作图的,看作随机过程的,记得过去还有看作力场的。这次新鲜,将图像看作热量场了。每个像素看作热流,根据当前像素和周围像素的关系,来确定是否要向周围扩散。比如某个邻域像素和当前像素差别较大,则代表这个邻域像素很可能是个边界,那么当前像素就不向这个方向扩散了,这个边界也就得到保留了。先看下效果吧:具体的推导公式都是热学上的,自己也不太熟悉,感兴趣的可以去看原论文,引用量超7000吶。我这里只介绍一下最终结论用到的公式。主要迭代方程如下:I就是图像了,因为是个迭代公式, 阅读全文
posted @ 2013-04-18 21:07 Dsp Tian 阅读(18298) 评论(9) 推荐(3)
摘要: 自动聚焦需要评判图像的模糊或者清晰程度。当然,真正聚焦还需要配合硬件,我现在已经不搞硬件了,所以也就不去关心那一方面了。主要有三种评判方法:1.灰度方差法评判图像灰度的变化程度,我先使用了全局灰度方差,不过效果不好。又实验了局部灰度方差,不过由于运算量的问题,也没做出什么结果。2.边缘评判法这个很简单了,通过对图像进行边缘检测,比如sobel,prewitt,roberts等等各种边缘检测吧,然后找出边缘最丰富的那一张图片。3.能量法图像细节越丰富,傅里叶分解后的频率肯定越多,所以能量也能作为一种评判标准。我这里的实验图像序列在这里可以下到。实验结果,图中红色是sobel评判,绿色是二阶拉普拉 阅读全文
posted @ 2013-04-16 16:57 Dsp Tian 阅读(6362) 评论(0) 推荐(0)
摘要: 关于小波变换我只是有一个很朴素了理解。不过小波变换可以和傅里叶变换结合起来理解。傅里叶变换是用一系列不同频率的正余弦函数去分解原函数,变换后得到是原函数在正余弦不同频率下的系数。小波变换使用一系列的不同尺度的小波去分解原函数,变换后得到的是原函数在不同尺度小波下的系数。不同的小波通过平移与尺度变换分解,平移是为了得到原函数的时间特性,尺度变换是为了得到原函数的频率特性。小波变换步骤:1.把小波w(t)和原函数f(t)的开始部分进行比较,计算系数C。系数C表示该部分函数与小波的相似程度。2.把小波向右移k单位,得到小波w(t-k),重复1。重复该部知道函数f结束.3.扩展小波w(t),得到小波w 阅读全文
posted @ 2013-04-12 16:56 Dsp Tian 阅读(91704) 评论(23) 推荐(6)
摘要: 计算Haar特征时有用到这个。wiki介绍的非常好,我可耻的转了:积分图的每一点(x,y)的值是原图中对应位置的左上角区域的所有值得和:而且,积分图可以只遍历一次图像即可有效的计算出来,因为积分图每一点的(x,y)值是:一旦积分图计算完毕,对任意矩形区域的和的计算就可以在常数时间内完成。如下图中,阴影矩形区域的值:clear all;close all;clc;img=double(imread('lena.jpg'));[m n]=size(img);%计算积分图I=zeros(m,n);for i=1:m for j=1:n if i==1 && j==1 阅读全文
posted @ 2013-04-12 12:34 Dsp Tian 阅读(7341) 评论(3) 推荐(0)
摘要: 很多算法都用到了这个矩阵,比如Hessian affine region detector、SURF,虽然这些算法我还没有完全搞透,不过那都是后话,先把这个矩阵搞出来再说,学习是不断迭代的过程。整个矩阵的形成主要由四部分公式决定:g(x,y)就是高斯函数了,没啥可说的:对高斯函数的x和y分别求二阶偏导:求出的模板对原图进行卷积:卷积后的值构成Hessian矩阵:所以这里的H是相当于原图像每一个像素都能求出一个Hessian矩阵。matlab代码如下:clear all;close all;clc;img=double(imread('lena.jpg'));[m n]=size 阅读全文
posted @ 2013-04-11 22:02 Dsp Tian 阅读(13727) 评论(3) 推荐(1)
摘要: 今天在看局部熵方面的内容,看论文中介绍的内容感觉局部熵挺容易了,于是就有了实现的想法,结果效果非常糟糕。 得到的几乎是一张空白的图片,就像下面一样: 究其原因是各种论文上都写了这样一个公式: 这里f(i,j)就是在m*n这个局部的像素,这个没问题,不过这里的p是什么东西,按这里的定义p是当前像素灰度 阅读全文
posted @ 2013-04-11 15:12 Dsp Tian 阅读(15504) 评论(4) 推荐(1)
摘要: 算法步骤:1.任意找一顶点加入树中。2.寻找所有与树相邻的元素,并取其边权重最小的并且不在树中的元素入树。3.继续第二步,直到所有元素都入树。效果和Kruskal算法是类似的。matlab代码:main.mclear all;close all;clc;G=[0 4 0 0 0 0 0 8 0; 4 0 8 0 0 0 0 11 0; 0 8 0 7 0 4 0 0 2; 0 0 7 0 9 14 0 0 0; 0 0 0 9 0 10 0 0 0; 0 0 4 14 10 0 2 0 0; 0 0 0 0 0 2 0 1 6; 8 11 0 0 0 0 1 0 7... 阅读全文
posted @ 2013-04-10 13:38 Dsp Tian 阅读(8286) 评论(0) 推荐(0)
摘要: 小技巧在函数中用persistent定义变量。例子:function re=test() persistent a; if isempty(a) a=1; end a=a+1; re=a;end 阅读全文
posted @ 2013-04-09 15:46 Dsp Tian 阅读(2065) 评论(0) 推荐(1)
摘要: 老物了,网上的例子多的数不过来。不过我还是有必要练习一下的。之所以看这个算法是因为最近在看颜色聚合向量时,有的论文用到了最小生成树,因此我就拿来熟悉一下。Kruskal算法类似于连通分支算法,感觉和过去实现过的连通区域标记算法非常像。步骤:1.对于一个图,将图的每条边提取出来从小到大进行排序。2.将已排序的边依次加入到新图中,如果新图中出现了环,那么就舍弃这条边。3.不断重复第二步。下面两个图就是kruskal算法前后的样子。代码如下:main.mclear all;close all;clc;%算法导论P349的列子G=[0 4 0 0 0 0 0 8 0; 4 0 8 0 0 0 0 .. 阅读全文
posted @ 2013-04-09 15:07 Dsp Tian 阅读(13136) 评论(3) 推荐(1)
上一页 1 ··· 48 49 50 51 52 53 54 55 56 ··· 79 下一页