SITF算法详解---特详细版

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
写的太好了,转载至:https://blog.youkuaiyun.com/zddmail/article/details/7521424

参考资料
1、David G.Lowe Distinctive Image Features from Scale-Invariant Keypoints. January 5, 2004.

2、David G.Lowe Object Recognition from Local Scale-Invariant Features. 1999

3、Matthew Brown and David Lowe Invariant Features from Interest Point Groups. In British Machine Vision Conference, Cardiff, Wales, pp. 656-665.

4、PETER J. BURT, MEMBER, IEEE, AND EDWARD H. ADELSON, The Laplacian Pyramid as a Compact Image Code. IEEE TRANSACTIONS ON COMMUNICATIONS, VOL. COM-3l, NO. 4, APRIL 1983

5、宋丹 10905056 尺度不变特征变换匹配算法Scale Invariant Feature Transform (SIFT)(PPT)

6、RaySaint 的博客SIFT算法研究http://underthehood.blog.51cto.com/2531780/658350

7、Jason Clemons SIFT: SCALE INVARIANT FEATURE TRANSFORM BY DAVID LOWE(ppt)

8、Tony Lindeberg Scale-space theory: A basic tool for analysing structures at different scales.1994

9、SIFT官网的Rob Hess hess@eecs.oregonstate.edu SIFT源码

10、Opencv2.2 Andrea Vedaldi(UCLA VisionLab)实现的SIFT源码 http://www.vlfeat.org/~vedaldi/code/siftpp.html, opencv2.3改用Rob Hess的源码

11、科学计算中的偏微分方程有限差分法 杨乐主编

12、维基百科SIFT词条:http://zh.wikipedia.org/zh-cn/Scale-invariant_feature_transform

13、百度百科SIFT词条:http://baike.baidu.com/view/2832304.htm

14、其它互联网资料

附录1 高斯模糊源码
http://blog.youkuaiyun.com/zddmail/article/details/7450033

http://download.youkuaiyun.com/detail/zddmail/4217704

附录2 SIFT算法源码
http://download.youkuaiyun.com/detail/zddmail/4309418

你提供的这行代码: ```c keyParam.pValue = &(sitf_mode_flag - 1); ``` 从语法上看是 **错误的**,因为 `sitf_mode_flag - 1` 是一个 **临时值(rvalue)**,你不能对它取地址。也就是说,你不能对一个表达式的结果取地址,因为该结果没有对应的内存地址。 --- ## ❌ 错误分析 ```c keyParam.pValue = &(sitf_mode_flag - 1); // 错误! ``` - `sitf_mode_flag - 1` 是一个临时整型值,例如如果 `sitf_mode_flag = 2`,那么结果是 `1`。 - 你试图对这个临时值取地址 `&(...)`, 这在 C 语言中是 **非法操作**。 - 编译器会报错,例如: ``` error: lvalue required as unary ‘&’ operand ``` --- ## ✅ 正确写法 如果你希望将 `sitf_mode_flag - 1` 的值传递给 `keyParam.pValue`,应该: ### ✅ 方法一:使用中间变量 ```c int temp = sitf_mode_flag - 1; keyParam.pValue = &temp; ``` > ⚠️ 但注意:`temp` 是局部变量,如果你在函数中使用它并将其地址传给其他函数(如回调函数或结构体保存),需要确保 `temp` 的生命周期足够长。 --- ### ✅ 方法二:直接赋值(如果接口允许) 查看 `keyParam.pValue` 的定义,如果它是一个 `void*` 类型,并且你只是想传递一个整型值(而非地址),你可以直接进行类型转换: ```c keyParam.pValue = (void*)(intptr_t)(sitf_mode_flag - 1); ``` 然后在接收端再转换回来: ```c int value = (int)(intptr_t)keyParam.pValue; ``` > ✅ 这种方式适用于 `pValue` 只是用来传递整数值而非真实内存地址的情况。 --- ## 🧠 示例完整代码 ```c MT_KEY_PARAM keyParam; int temp = sitf_mode_flag - 1; keyParam.index = MT_IDX_SENS_LEVEL; keyParam.pValue = &temp; // 假设 MT_SetConfig 是用来设置某个参数 ret = MT_SetConfig(pSctmParam->handle, MT_SET_CFG_SINGLE_PARAM, &keyParam, sizeof(keyParam)); ``` 或者如果接口支持直接传整数值: ```c keyParam.index = MT_IDX_SENS_LEVEL; keyParam.pValue = (void*)(intptr_t)(sitf_mode_flag - 1); ret = MT_SetConfig(pSctmParam->handle, MT_SET_CFG_SINGLE_PARAM, &keyParam, sizeof(keyParam)); ``` --- ## 📌 总结 | 写法 | 是否合法 | 说明 | |------|----------|------| | `&(sitf_mode_flag - 1)` | ❌ 不合法 | 表达式结果不能取地址 | | `int temp = sitf_mode_flag - 1; &temp` | ✅ 合法 | 使用中间变量保存临时值 | | `(void*)(intptr_t)(sitf_mode_flag - 1)` | ✅ 合法 | 直接传整数值,适用于某些接口设计 | --- ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值