任何人都可以告诉我如何使用RANSAC算法在两个具有一定重叠部分的图像中选择共同的特征点吗?问题来自基于特征的图像拼接.

给定1*N矩阵或数组,如何找到具有相同值的前4个元素,然后存储这些元素的索引?
PS:我只是好奇.如果我们想找到价值差异在一定范围内的前4个元素,比如低于2,该怎么办?例如,M = [10,15,14.5,9,15.1,8.5,15.5,9.5],我要找的元素是15,14.5,15.1,15.5,指数是2,3,5, 7.
假设我得到了这组数据.排序后,可以如下绘制分布.
M=[-99 -99 -44.5 -7.375 -5.5 -1.666666667 -1.333333333 -1.285714286 0.436363636 2.35 3.3 4.285714286 5.052631579 6.2 7.076923077 7.230769231 7.916666667 9.7 10.66666667 16.16666667 17.4 19.2 19.6 20.75 24.25 34.5 49.5]
Run Code Online (Sandbox Code Playgroud)

我的问题是如何找出中间范围内的那些值并记录指数.使用正态分布还是其他什么?感谢您的帮助!
Jonas'的图片 
我想reshape()通过调用以下自定义函数在matlab中使用函数:
imgRgb = reshape(convertYuvToRgb(reshape(imgYuv, height*width, 3)), height, width, 3);
Run Code Online (Sandbox Code Playgroud)
这里:
width=352
height=288
Run Code Online (Sandbox Code Playgroud)
并且imgYuv是一个4D矩阵.
但是,系统给了我以下错误消息:
要重新安置,元素的数量不得改变.
任何专家都可以给我一些提示吗?
谢谢!
我使用零来初始化我的矩阵,如下所示:
height = 352
width = 288
nFrames = 120
imgYuv=zeros([height,width,3,nFrames]);
Run Code Online (Sandbox Code Playgroud)
但是,当我将nFrames的值设置为大于120时,MATLAB会给出一条错误消息,说明内存不足.
原来的功能是
[imgYuv, S, A]= changeYuv(fileName, width, height, idxFrame, nFrames)
Run Code Online (Sandbox Code Playgroud)
我的命令是
[imgYuv,S,A]=changeYuv('tilt.yuv',352,288,1:120,120);
Run Code Online (Sandbox Code Playgroud)
谁能告诉我这里发生了什么?
PS:该功能的目的之一是加载一个超过2000帧的yuv视频.有可能实现吗?