sift算法的MATLAB程序
更新时间:2024-04-21 14:27:01 阅读量: 综合文库 文档下载
- 丝芙兰推荐度:
- 相关推荐
% [image, descriptors, locs] = sift(imageFile) %
% This function reads an image and returns its SIFT keypoints. % Input parameters:
% imageFile: the file name for the image. %
% Returned:
% image: the image array in double format
% descriptors: a K-by-128 matrix, where each row gives an invariant % descriptor for one of the K keypoints. The descriptor is a vector
% of 128 values normalized to unit length.
% locs: K-by-4 matrix, in which each row has the 4 values for a % keypoint location (row, column, scale, orientation). The % orientation is in the range [-PI, PI] radians. %
% Credits: Thanks for initial version of this program to D. Alvaro and % J.J. Guerrero, Universidad de Zaragoza (modified by D. Lowe)
function [image, descriptors, locs] = sift(imageFile)
% Load image
image = imread(imageFile);
% If you have the Image Processing Toolbox, you can uncomment the following
% lines to allow input of color images, which will be converted to grayscale.
% if isrgb(image)
% image = rgb2gray(image); % end
[rows, cols] = size(image);
% Convert into PGM imagefile, readable by \ f = fopen('tmp.pgm', 'w'); if f == -1
error('Could not create file tmp.pgm.'); end
fprintf(f, 'P5\\n%d\\n%d\\n255\\n', cols, rows); fwrite(f, image', 'uint8'); fclose(f);
% Call keypoints executable if isunix
command = '!./sift '; else
command = '!siftWin32 '; end
command = [command '
% Open tmp.key and check its header g = fopen('tmp.key', 'r'); if g == -1
error('Could not open file tmp.key.'); end
[header, count] = fscanf(g, '%d %d', [1 2]); if count ~= 2
error('Invalid keypoint file beginning.'); end
num = header(1); len = header(2); if len ~= 128
error('Keypoint descriptor length invalid (should be 128).'); end
% Creates the two output matrices (use known size for efficiency) locs = double(zeros(num, 4));
descriptors = double(zeros(num, 128));
% Parse tmp.key for i = 1:num
[vector, count] = fscanf(g, '%f %f %f %f', [1 4]); %row col scale ori
if count ~= 4
error('Invalid keypoint file format'); end
locs(i, :) = vector(1, :);
[descrip, count] = fscanf(g, '%d', [1 len]); if (count ~= 128)
error('Invalid keypoint file value.'); end
% Normalize each input vector to unit length descrip = descrip / sqrt(sum(descrip.^2)); descriptors(i, :) = descrip(1, :); end
fclose(g);
正在阅读:
sift算法的MATLAB程序04-21
《桥之美》课文原文-精选文档12-13
军队春联05-27
人教版五年级数学下册 第二单元2,5,3的倍数的特征06-02
《骆驼祥子》阅读练习及答案优秀3篇04-03
最新人教版小学语文五年级下册配套练习册答案(精品)05-09
2015-2020年中国金属胶粘剂市场供需预测及投资前景评估报告05-26
农业个人总结02-02
理想流动反应器11-18
国际贸易理论与政策教案11-04
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 算法
- 程序
- MATLAB
- sift
- 无铅喷锡(HASL)上锡不良案例研究 - 图文
- 江南大学远程教育食品化学第2阶段测试题
- 2017年度行政事业单位内部控制报告 - 图文
- 化工原料有效期储存条件一览表
- PJ3系统医院端门诊选点业务操作指引 - 图文
- 机电传动单向数控平台设计
- 岔河小学开展“拒绝五毛食品”活动总结
- 小学六年级质量监测分析报告
- 冀教版一年级数学上册第二单元测试卷及答案小学数学试题 - 图文
- 农村学校、薄弱学校任教经历证明(样式)
- 人教版高中数学必修三 第二章 统计“直线的回归方程”教学设计
- 四川重点项目-牡丹花海精品观赏园项目可行性研究报告(目录)
- 1余角与补角 - 图文
- 《食品毒理学》练习测试题
- 新食品安全法知识竞赛题和答案
- 北京电网继电保护及故障信息系统主-子站通信规范1
- 餐饮服务食品安全操作规范试题
- 2016郑州专业技术人员继续教育考试试题和答案可查找和复制
- 体检中心突发医疗纠纷应急预案
- 三年级人教版下学期应用题50道