上一页 1 ··· 41 42 43 44 45 46 47 48 49 ··· 74 下一页
摘要: Log Polar就是所谓的极坐标变换,通过变换能将笛卡尔坐标系中的图像映射到极坐标系中。确切的来说我这里不算是Log Polar,因为Log Polar是将图像从(x,y)映射到(log(r),theta),而我是将图像从(x,y)映射到(r,theta)。原理是一样的。变换公式是:x=r*cos(theta);y=r*sin(theta);其中r代表极径,theta代表极角。这些应该学过高中的都会的。下图能形象的表示变换:似乎有通过此变换求图像特征的算法,不过具体操作我也不清楚。我这里只是实现了变换的操作。原图如下:以图像中心作为极坐标原点进行极坐标变换:matlab代码如下:clear 阅读全文
posted @ 2013-06-09 14:55 Dsp Tian 阅读(7606) 评论(2) 推荐(0) 编辑
摘要: 通过本篇和上一篇的结合,应该就能做出拉普拉斯图像融合了。这里用的方法很简单,就是用模板和两个图像相乘,然后对处理后的两个图像再相加就可以了。拉普拉斯融合就是对金字塔的每一层图像做这样的操作,然后再重构就行了。先看看这里的效果:原图apple原图orange:模板图像(实际处理时需要对模板进行模糊):融合后图像:matlab代码如下:clear all; close all; clc;apple=double(imread('apple.jpg'));orange=double(imread('orange.jpg'));[m n]=size(apple);mas 阅读全文
posted @ 2013-06-07 14:37 Dsp Tian 阅读(27528) 评论(2) 推荐(3) 编辑
摘要: 过去研究过高斯金字塔,不过今天看来,当时似乎搞错了,金字塔上下层应该是采样的关系,而不是缩放的关系,而且不同层的sigma应该也有所不同。拉普拉斯金字塔在图像融合中有所应用,方法是首先对两个待融合图像求拉普拉斯残差金字塔,然后用模板对每一级残差图像进行融合得到融合后图像的残差金字塔,然后对这个金字塔进行重构就能得到最终的融合图像,图像各尺度细节得到保留。(注:融合时模板一般会先用高斯函数模糊一下)不过这里不实现融合,只实现拉普拉斯金字塔的建立。建立金字塔的方框图如下(摘自《数字图像处理(第二版)》):通过j-1级近似图像和j级残差图像就能恢复j级输入图像。近似滤波器就是拉普拉斯滤波模板。插入滤 阅读全文
posted @ 2013-06-07 14:14 Dsp Tian 阅读(14101) 评论(14) 推荐(1) 编辑
摘要: RANSAC在图像拼接中有所使用,有时候也在图像理解的相关算法中有所使用。算法简介如下(摘自《图像处理、分析与机器视觉(第3版)》):1.假设我们要将n个数据点X={x1,x1,...,xn}拟合为一个由至少m个点决定的模型(m<=n,对于直线,m=2)。(我这里实际是两个不同均值、协方差高斯分布产生的数据)2.设迭代计数k=1。3.从X中随机选取m个项并拟合一个模型。(我这里直线拟合,选了2个项)4.给定偏差ε,计算X中相对于模型的残差在偏差ε的个数,如果元素个数大于一个阈值t,根据一致点集重新拟合模型(可以利用最小二乘或其变种),算法终止。(我这里的偏差为1,阈值为数据个数的2/3) 阅读全文
posted @ 2013-06-03 16:55 Dsp Tian 阅读(15876) 评论(1) 推荐(3) 编辑
摘要: 曾经想要实现过Bertalmio图像修复算法,无奈自身实力不够,耗费两天时间也没能实现。昨天博客上有人问到TV模型,这个模型我过去是没听说过的,于是就找来相关论文研究了一下,发现TV模型也可以用来修复图像,于是就有了想实现的想法。用到的偏微分方程技巧和各项异性扩散很像。先看看效果吧:原lena:随手截的噪声图:合成的需要修复的图:修复后的图(没有处理边界):对于从来没有接触过图像修复的我来说,效果真是惊艳了。下面介绍运算步骤:和各项异性扩散类似,整个算法也是基于迭代的,迭代公式如下:其中Io代表当前处理的像素,Ip代表邻域像素,p就可以取news四邻域。H定义如下:这里的lambda为自定义的 阅读全文
posted @ 2013-05-31 14:37 Dsp Tian 阅读(18310) 评论(17) 推荐(5) 编辑
摘要: HOG(Histogram of Oriented Gradient)方向梯度直方图,主要用来提取图像特征,最常用的是结合svm进行行人检测。算法流程图如下(这篇论文上的):下面我再结合自己的程序,表述一遍吧:1.对原图像gamma校正,img=sqrt(img);2.求图像竖直边缘,水平边缘,边缘强度,边缘斜率。3.将图像每16*16(取其他也可以)个像素分到一个cell中。对于256*256的lena来说,就分成了16*16个cell了。4.对于每个cell求其梯度方向直方图。通常取9(取其他也可以)个方向(特征),也就是每360/9=40度分到一个方向,方向大小按像素边缘强度加权。最后归 阅读全文
posted @ 2013-05-24 19:41 Dsp Tian 阅读(35910) 评论(11) 推荐(8) 编辑
摘要: radon变换就是图像在不同方向上的投影。下图f(x,y)可以代表图像,R(x')就是图像向右下方的投影。数学上是按投影方向进行线积分,在图像领域就是按照投影方向累加像素就行了。matlab中有radon函数,为了熟悉原理我又写了一个。通过旋转图像映射,效率不怎么样。canny后Lena:45度投影:代码如下:main.mclear all; close all; clc;img=imread('lena.jpg');ed=edge(img,'canny');r=Radon(ed,45); %检测直线什么的,可以投影到0-179度上%r=radon(ed 阅读全文
posted @ 2013-05-24 10:43 Dsp Tian 阅读(39469) 评论(0) 推荐(2) 编辑
摘要: Renyi熵是对通常的香农熵的扩展,算是q阶广义熵。公式如下:其中P和香农熵公式中的P一样,是概率。当q=1时公式退化为香农熵公式。(如何证明?看wiki吧)有用此公式寻找图像最佳二值化阈值的。首先定义前景区域A,背景区域B。那么前景与背景区域像素相应的Renyi熵就如下定义:其中k是当前取的灰度级,P(A)是像素在A区域的概率,P(B)类似。当然,这里说区域,不是指空间区域,是像素灰度级区域。最后图像Renyi熵求最佳阈值定义如下:这里得到的K就是分割阈值。分割效果如下:原图:分割后:在编程时还需要确定阶数q,我取的是2。matlab代码如下:clear all;close all;clc; 阅读全文
posted @ 2013-05-10 20:48 Dsp Tian 阅读(8274) 评论(6) 推荐(0) 编辑
摘要: 普通的直方图就是统计图像中像素灰度出现的次数。二维直方图的其中一维就是普通的直方图,即统计图像中像素灰度出现的次数。另一维的概念就比较模糊了,我看很多论文中都是用的当前像素邻域均值灰度出现的次数。按照这个意思,其实用当前像素邻域中值灰度出现的次数也是可以的。或者用什么厉害的算法处理一下,在统计出现灰度的次数也是可以的。所以按照这样推广,其实构成N维直方图也是未尝不可的。至于有什么用处嘛,我还需要再研究研究。lena的二维直方图,1维是普通直方图,2维是半径为1的邻域均值直方图:matlab代码如下:clear all;close all;clc;img=imread('lena.jpg 阅读全文
posted @ 2013-05-10 19:20 Dsp Tian 阅读(17202) 评论(1) 推荐(0) 编辑
摘要: 中值滤波是很经典的算法了。今天看论文又知道还有一种叫自适应中值滤波的算法RAMF。原论文在这里。RAMF主要通过以下两步来处理图像。1.首先确定最大的滤波半径,然后用一个合适的半径r对图像进行滤波。计算当前滤波半径像素灰度的Imin,Imax,Imed,然后判断Imed是否在[Imin,Imax]中间,如果在则向下进行,否则扩大当前半径r继续滤波直到r等于最大滤波半径。2.如果当前处理的像素img(i,j)在[Imin,Imax]之间,则输出当前像素,否则输出当前滤波半径中值像素Imed。看下效果吧:噪声图像:RAMF算法:普通3*3中值滤波:matlab代码如下:clear all;clos 阅读全文
posted @ 2013-05-09 15:16 Dsp Tian 阅读(26795) 评论(5) 推荐(1) 编辑
上一页 1 ··· 41 42 43 44 45 46 47 48 49 ··· 74 下一页