matlab求函数交点由图交点找均衡点,回代却不等???

1.推荐/引用 博客
SIFT算法研究:
SIFT特征提取算法总结:
图像特征提取与匹配之SIFT算法:
一些公式推导来自实验室师兄的笔记,感谢。
论文:David G. Lowe, "Distinctive image features from scale-invariant keypoints,"     International Journal of Computer Vision, 60, 2 (2004), pp. 91-110
                              SIFT算法学习
1.算法流程
2.具体实现
(1)构造高斯差分尺度空间
高斯函数是唯一的尺度变换核,则图像的尺度空间就可以看做是尺度变换的高斯函数与输入图像的卷积。
其中,尺度可变的高斯核为
其中,()是空间坐标,&是尺度坐标。&&的大小决定图像的平滑程度,大尺度对应图像的概貌特征(低分辨率),小尺度对应图像的细节特征(高分辨率)。
为了有效在尺度空间检测到稳定的关键点,提出用不同尺度的高斯差分核与图像卷积:
其中k为常数,用来区分两相邻尺度乘积因子。
选择高斯差分尺度空间的原因:
① 容易计算,为求出不同尺度上的图像特征,只需要作差就可以了;
② 高斯差分函数近似于尺度归一化的,相比于其他特征,的最大最小值产生的特征更加稳定。
关于近似归一化的证明:
利用有限差分逼近:
在所有尺度上,是常数,不影响极值点的位置,越接近,近似误差越接近但实际中发现这种近似对极值检测的稳定性和位置几乎不存在影响,甚至在尺度上发生较大变化时也一样。
高斯差分尺度空间的构造:
首先是构建图像的高斯金字塔。原始图像递增地与高斯函数卷积来生成新尺寸的图像,尺度空间中的图像由常数因子来区别。
关于尺度空间的理解说明:上图是必须的,尺度空间是连续的。在的论文中&,在最开始建立高斯金字塔时,要预先模糊输入图像来作为第个组的第层的图像,这样就会丢失高频信息。因此,为了充分利用输入图像可以首先对原始图像长宽扩展一倍,来增加特征点数量。尺度越大图像越模糊。&我们利用线性插值将图像扩大为原来倍,作为金字塔的第一层。
图像金字塔共分组,一组称为一个,每组又分为多层,层间隔数为,因此有,代表在上下再各添一层图像,搜索极值只在中间的层图像上搜索层图像,下一组的第一层图像由上一组的倒数第三层(如果层索引从开始,则为第层)图像按照隔点采样(试验中用个尺度采样得到,可减少卷积运算的工作量。
DoG是通过高斯金字塔中的每组上下相邻两层的高斯尺度空间图像相减得到。
(2)寻找尺度空间极值点
&&同一组中的相邻尺度(由于k的取值关系,肯定是上下层)之间进行寻找:在极值比较的过程中,每一组图像的首末两层是无法进行极值比较的,为了满足尺度变化的连续性,在每一组图像的顶层继续用高斯模糊生成了&3&幅图像,高斯金字塔有每组S+3层图像。DOG金字塔每组有S+2层图像.
&&&&&&&&&&&
(3)精确定位极值点
① 对检测到的极值点进行三维二次函数拟合,精确定位极值点的位置和尺度,达到亚像素精度。
极值点的搜索是在离散空间中进行的,检测到的极值点并不是真正意义上的极值点。二维函数离散空间得到的极值点与连续空间极值点有差别。利用已知的离散空间点插值得到的连续空间极值点的方法叫做子像素插值
插值的方法是根据泰勒级数展开:
求导,并令其为,得到极值点位置的偏移量:
x^代表相对于插值中心的偏移量,当它在任一维度上的偏移量大于时(即或或&),意味着插值中心已经偏移到它的邻近点上,所以必须改变当前关键点的位置(加上)同时在新的位置上反复插值直到收敛;也有可能超出所设定的迭代次数或者超出图像边界的范围,此时这样的点应该删除。
② 去除低对比度的点
极值点的函数值:
极值点的函数值可以用来去除由低对比度造成的不稳定极值,在该文章中,若极值点函数值小于,则表明其响应值过小易受噪声影响而变得不稳定,要去除
③ 去除边缘相应
高斯差分函数对边缘有着很强的响应,边缘上的点对于小的噪声不稳定。根据角点可以知道,一个角点在任何方向上平移都应该保证局部窗口内的像素值的剧烈变化,而边缘上的点沿着边缘方向移动时局部窗口内的像素值基本没有什么变化。
一个平坦的(边缘点)响应峰值往往在横跨边缘的地方有较大的主曲率,而在垂直的方向有较小的主曲率。所以利用主曲率比的大小来排除边缘响应的点。而主曲率可以通过&的矩阵求出:
H的特征值与的主曲率成正比例。我们只关心比例,可以不必明确地计算特征值,可以由的迹和行列式的积来计算特征值的和。令&为大的特征值,&为小的特征值,则主曲率的比值大小可由特征值所表示的比值式来计算:
试验中,该比例大于的点被认为是边缘点,应去除。
(4)给每个关键点分配主方向
利用关键点邻域像素的梯度方向分布特性(幅值和方向)为每个关键点指定方向参数,使算子具备旋转不变性。
其中L所用的尺度为每个关键点各自所在的尺度。
在完成特征点邻域的高斯图像的梯度计算后,使用直方图统计邻域内像素的梯度方向和幅值。梯度方向直方图的横轴是梯度方向角,纵轴是梯度方向角对应的梯度幅值累加。梯度方向直方图将度的范围分为个柱,每度一个柱。
高斯加权函数(为描述子窗宽的一半)用来对每个采样点的幅值进行加权,距离描述子中心越远的领域对直方图的贡献也响应也越小,可以避免窗口位置变化引起的描述子突变。
直方图的峰值代表该特征点处邻域内图像梯度的主方向,也即该特征点的主方向。
当存在一个相当于主峰值能量能量的峰值时,会产生一个具有该主方向的极值点。因此,对于具有相似幅值的多峰位置点,会在一个位置上产生多个关键点。只有的点会有多个方向,但是这对匹配影响很大。最终,用抛物线来拟合个接近峰值的直方图的值进行峰值点位置插值,获得更好的准确性。
(5)特征描述子生成
每一个小格都代表了特征点邻域所在的尺度空间的一个像素&,箭头方向代表了像素梯度方向,箭头长度代表该像素的幅值。然后在&的窗口内计算个方向的梯度方向直方图。绘制每个梯度方向的累加可形成一个种子点。
每个直方图有方向的梯度方向,每一个描述符包含一个位于关键点附近的四个直方图数组这就导致了的特征向量有维(先是一个&的来计算出一个直方图,每个直方图有个方向。所以是&&维)
为避免边界影响,采用三线性插值,将每一个梯度样本值分配到相邻的直方图块中。每一个直方图块在每个维上乘以权重,是样本到直方图块中心值的距离。
&实现光照不变性
① 处理线性变化(对比度亮度):归一化到单位向量
为了降低光照变化的影响:首先,特征向量归一化到单位长度,每个像素值乘以一个常数引起图像对比度的改变,会使梯度乘以相同的常数。所以归一化后会撤销常数的改变。亮度变化引起的每个像素值增加一个常数,不会影响梯度值。因此该描述子具有光照不变性。
② 处理非线性变化(饱和度光照):归一化阈值化归一化
相机饱和度或光照变化影响表面的方向变化,这些影响会使梯度幅值有大的改变,但不太会影响梯度方向。因此要降低大的梯度幅值的影响,将单位特征向量进行阈值化:对于中值大于的要进行截断,即大于的值只取,再进行一次归一化处理,其目的是提高特征的鉴别性。
阅读(...) 评论()我照着一本书用matlab画图时连不上线,不知道是怎么回事,求解??_百度知道
连不上是由于你所用的方块之间的类型不匹配导致的,如图在最左边的“12000MVA 110KV Source”有三个端口都是方块的,方块表示该端口是电气属性,而中间的“MUX”总共有四个端口,端口图形都是尖号,尖号表示该端口是数字属性,电气属性的和数字属性的方块间是不能直接相连的,对于不能直接相连的在SIMULINK中就表现是红线。数字端口只能跟数字的端口相连,用来做一些控制类的运算或信号检测,而电气的也只能跟电气的方块相连,进行电路特性的仿真。不知道你是照着哪本书画的这个图,“12000MVA 110KV Source”和“Load 500MV”是不可能通过中间的“MUX”连接在一起的。
其他类似问题
为您推荐:
其他1条回答
我也是刚学这个呢,话说今天就考这个了,你图上红色的表示没有连接上,我感觉在2个端口之间点鼠标左键比较好连。如果是线段到端口就点鼠标右键比较好连,你再试试吧~&
不行啊,还是连不上。。。
我也是刚学的娃。。。。感觉楼上那个解释的比较好
matlab的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁哪位高手能帮忙解答一下此段matlab程序在选择新阈值n时,怎么也不能正确出图是怎么回事?在线急等。_百度知道
哪位高手能帮忙解答一下此段matlab程序在选择新阈值n时,怎么也不能正确出图是怎么回事?在线急等。
x=wavread('F:\MALTLAB\work\毕设\clean\sp02.wav');subplot(3,1,1);plot(x);axis([0 2 0.5]);y=wavread('F:\MALTLAB\work\毕设\SNR5_sp02.wav');subplot(3,1,2);plot(y);axis([0 2 0.5]);%Bark 小波包分解wptree=wpdec(y,7,'db5');%一维小波包分解采用db5,7层小波包分解%把 Bark 小波分解包中的第五层的叶结点合并for k=47:62wptree=wpjoin(wptree,k);end%把 Bark 小波分解包中的第六层的叶结点合并for k=79:86wptree=wpjoin(wptree,k);end%把 Bark 小波分解包中的第七层的叶结点合并for k=91:94wptree=wpjoin(wptree,k);endplot(wptree);%将各节点按相应阈值进行处理sorh='n';
%所选阈值函数%-----------%处理 7 层节点%-----------for i=0:31c70(:,i+1)=wpcoef(wptree,[7 i]);q70=median(abs(c70(:,i+1)));arr70(i+1)=(q70/0.6745).*sqrt(2*log(442));if(i&0)c70(:,i+1)=wthresh(c70(:,i+1),sorh,arr70(i+1));wptree = write(wptree,'data',[7 i],c70(:,i+1)); %修改节点系数值endfor i=48:55c71(:,i-47)=wpcoef(wptree,[7 i]);q71=median(abs(c71(:,i-47)));arr71(i-47)=(q71/0.6745).*sqrt(2*log(442));c71(:,i-47)=wthresh(c71(:,i-47),sorh,arr71(i-47));wptree = write(wptree,'data',[7 i],c71(:,i-47));%修改节点系数值end%-----------%处理 6 层节点%-----------for j=16:23c60(:,j-15)=wpcoef(wptree,[6 j]);q60=median(abs(c60(:,j-15)));arr60(j-15)=(q60/0.6745).*sqrt(2*log(876));c60(:,j-15)=wthresh(c60(:,j-15),sorh,arr60(j-15));wptree = write(wptree,'data',[6 j],c60(:,j-15));%修改节点系数值endfor j=28:31c61(:,j-27)=wpcoef(wptree,[6 j]);q61=median(abs(c61(:,j-27)));arr61(j-27)=(q61/0.6745).*sqrt(2*log(876));c61(:,j-27)=wthresh(c61(:,j-27),sorh,arr61(j-27));wptree = write(wptree,'data',[6 j],c61(:,j-27));%修改节点系数值end%-----------%处理 5 层节点%-----------for k=16:31c5(:,k-15)=wpcoef(wptree,[5 k]);q5=median(abs(c5(:,k-15)));arr5(k-15)=(q5/0.6745).*sqrt(2*log(1743));c5(:,k-15)=wthresh(c5(:,k-15),sorh,arr5(k-15));wptree = write(wptree,'data',[5 k],c5(:,k-15)); %修改节点系数值end%重建信号z = wprec(wptree);subplot(3,1,3);plot(z);axis([0 2 0.5]);wavwrite(z,8000,'F:\MALTLAB\work\毕设\WtDeSpeech.wav');end
axis([0 2 0.5]);单步运行到这时能出现图wavwrite(z,8000,'F:\MALTLAB\work\毕设\WtDeSpeech.wav');到这儿整个图就全变成蓝色的了
我有更好的答案
只是因为频率太高。。。放大细节看看
呃,那么请问该怎么改呢?所谓放大细节是什么意思?matlab不太会用。
出来的图上面的工具栏有个放大镜的图标,放大局部,看看特性。axis([0 2 0.5]);单步运行到这时能出现图 单步的时候到这其实没执行这一条语句。可能是设置坐标轴的问题
请问一下这样一个警告是什么意思呢?Warning: Data clipped during write to file:F:\MALTLAB\work\毕设\WtDeSpeech.wav& In wavwrite&PCM_Quantize at 241
In wavwrite&write_wavedat at 267
In wavwrite at 112
In wwl at 87
翻译过来是数据保存的时候长度进行了截取
我知道这个翻译过来的意思,但是不知道要怎么样去修改,能否指导下?
waring一般不影响你的程序运行,如果对你的结果产生影响,你才需要改动的
对呀,出不来全部的结果我要如何完成论文呐,所以才想请教一下怎么样更改才好,我有试着将wavwrite(z,8000,'F:\MALTLAB\work\毕设\WtDeSpeech.wav');这条语句不要,可是结果还是一样的,出不来图。不过还是感谢你的回答。
axis([0 2 0.5]);单步运行时能出现图 你把这句话不要看看什么结果
这个不要的话就没有警告提示,但是图还是出不来。
但是图还是出不来 什么叫图出不来??
就是依旧没有增强的语音信号波形图,只是没有了之前的那个警告而已。
你是说plot(z)没有效果??还有,整图全变成蓝色 你看figure工具栏有个放大镜,你放大局部看看是什么样的曲线。我觉得大概是你增强参数的问题
好吧,是我弄错了,去掉axis([0 2 0.5]);这条语句的时候依然没图有警告。但是我单步运行的话又有波形的,虽然那波形不像增强的。整图变成蓝色的时候放大看了下,最终也是有个波形的,只是横坐标和纵坐标全不是我设置的那个了,和去掉axis([0 2 0.5]);这条语句出现的一样的结果。请问这个增强参数的问题是什么问题呢
...没图你是说figure上面看不到图吧。那可能是因为y轴范围大,所以图不明显。就是参数搭配不适当。axis([0 2 0.5]);改成axis([0 2]);试试反正看来就是调整纵坐标范围
其他类似问题
为您推荐:
阈值的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁matlab中fig 的图我修改了标注的图样后,然后点保存,然后就打不开了,出现下面的图请问是怎么回事?_百度知道
提问者采纳
我遇到过这样的问题,估计是BUG,可能只能重新画了。我的版本是R2008A
提问者评价
其他类似问题
你拖错地方了。把.fig文件拖到command window里。或者使用命令uiopen('你那个.fig文件')或者你在你发上来的那个窗口上点finish。然后用命令imshow('unif_dong2_3');试一下
为您推荐:
matlab的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 matlab求交点坐标 的文章

 

随机推荐