sift的简单介绍( 二 )


示例:预测单条蛋白序列
以单条蛋白序列为例,查看SIFT对序列的预测结果 。
步骤,
1. 在如下图位置,粘贴FASTA格式序列一条蛋白序列 。也可以上传FASTA格式的文件 。
2. 设置参数
3. 提交后,等待结果,SIFT预测结果报告如下图所示,您可以逐一查看每项结果 。您可以根据这些结果,选择性对某些位置氨基酸进行变异,预测蛋白功能 。
(1)这条蛋白序列,每个位置的氨基酸被替代的正常可能性表格,如下图所示(截取部分) 。
上图中,每行表示参考蛋白中的对应位置,每个位置下面是这条序列的氨基酸 。每列表示20种氨基酸中的一种 。每个条目报名一个氨基酸替换对应的某一个特定位置的分数,有害替换被红色突出标注 。
(2)位置预测
氨基酸替代是否有害的阈值是0.05 。氨基酸颜色说明:黑色表示非极性氨基酸,绿色表示极性不带电荷的氨基酸,红色表示碱性氨基酸,蓝色表示酸性氨基酸 。大写字母表示氨基酸出现在比对中,小写字母来自预测 。“Seq Rep”是包括碱性氨基酸的序列片段,短片段表示这个位置要么有很多空位,要么因为信息少而不能比对 。
sift算法SIFT算法主要分为四个步骤:
1、尺度空间极值检测(Scale-space extrema detection):通过使用高斯差分函数来搜索所有尺度上的图像位置,识别出其中对于尺度和方向不变的潜在兴趣点 。
2、关键点定位(Keypoint localizatio):在每个候选位置上,利用一个拟合精细的模型确定位置、和尺度,关键点的选择依赖于它们的稳定程度 。
3、方向匹配(Orientation assignment,为每个关键点赋予方向):基于局部图像的梯度方向,为每个关键点位置分配一个或多个方向,后续所有对图像数据的操作都是基于相对关键点的方向、尺度和位置进行变换,从而获得了方向于尺度的不变性 。
4、关键点描述符(Keypoint descriptor):在每个关键点领域内,以选定的尺度计算局部图像梯度,这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化 。
SIFT特征参考了几位大佬的博文:
参考1
参考2
SIFT特征也叫做尺度不变特征,SIFT特征最后是把输入的图像表现成为以128维的特征向量集合,SIFT特征具有 旋转,缩放,平移,光照 不变形,SIFT特征检测的步骤:
1. 尺度空间的极值检测:高斯金字塔-DOG-极值检测
2. 关键点的准确定位:二阶泰勒展开+边缘点过滤
3. 关键点主方向确定
4. 生成特征向量
目的:我们的目的是要找到一些特征,这些特征具有尺度不变形,也就是说一张图在不同的尺寸下面,我们仍然可以找到这些特征
方法:我们可以通过对图像连续的尺度变化,生成图像的尺度空间,具体的做法就是对图像进行多次的高斯模糊,为什么用高斯核呢,因为高斯核:是唯一可以产生多尺度的核,那么在这里,我们其实也可以直接通过计算图像的二阶导数,可以在不同尺度下找到比较稳定的极值点(图像的高斯拉普拉斯算子LOG),但是LOG的计算复杂,我们可以通过计算高斯差分(DOG)的方法来近似LOG,下面是证明过程
高斯函数:
LOG(高斯拉普拉斯算子LoG(Laplacian of Gaussian):
再看DOG:
--(1)
同时:
--(2)
令(1)=(2),可得:
以上可以证明,我们可以用DOG来近似LOG
其中Octave成为组,组数一般取4,但实际上跟输入图像的大小(M*N)有关
每一个组中的层数s,一般为3~5,模型的初始参数,高斯金字塔的形成过程是这样的:
1. 由原始的输入图像开始进行高斯模糊,生成第0组的隔层图像,其中
2. 第1组的的第0层图像由第0组的倒数第三层图像下采样得到,第0层的倒数第三层图像:
所以第1组的第0层图像尺度为:,于是我们可以得到规律,第o组的第r层图像相对于输入的图像的尺度可以用用下面的计算公式得到:
3. 之后就可以根据高斯金字塔,计算DOG,也就是根据高斯金字塔连续的两层相减得到,若高斯金字塔中的一组有s+2 层,那么DOG对应的组就有s+2层
4. 最后计算尺度空间的极值点,对于每个点,对比其周围的8个点以及上下两层的共18个点,如果是最大值/最小值,则被选定为极值点
上一部找到的极值点是在离散空间找到的,离散空间的极值点并不一定是真真的连续空间的极值点,对此我们可以对尺度空间的DOG函数函数进行曲线拟合,从而找到极值点的更准确的定位,同时我们还需要对边缘位置进行处理提高关键点的稳定性 。

秒懂生活扩展阅读