我校准了相机并找到了内在参数(K).我也计算了基本矩阵(F).
现在E = K_T*F*K. 到现在为止还挺好.
现在我们将基本矩阵(E)传递给SVD,使用分解值(U,W,V)来提取旋转和平移:
essentialMatrix = K.Transpose().Mul(fund).Mul(K);
CvInvoke.cvSVD(essentialMatrix, wMatrix, uMatrix, vMatrix, Emgu.CV.CvEnum.SVD_TYPE.CV_SVD_DEFAULT);
Run Code Online (Sandbox Code Playgroud)
**问题)此时,已经提出了两种方法,并且让我感到困惑的是哪一种方法确实给出了正确的答案 - 特别是对于翻译:
首先输入链接描述,作者建议计算R,T如下:

但在第二种方法[ http://isit.u-clermont1.fr/~ab/Classes/DIKU-3DCV2/Handouts/Lecture16.pdf]中,作者为T提供了另一个公式,即+ U,-U,如下所示:

我正在使用openCv库在C#.Net上实现它.谁知道哪个翻译公式是正确的?
我写了一个代码,它通过KNN算法找到K最接近的匹配.在获取matMatch和matchIndices之后,我尝试在两个结果帧之间绘制匹配对.
我将matMask和matchIndices提供给函数Features2DToolbox.DrawMatches:
Image<Bgr, byte> imResult = Features2DToolbox.DrawMatches(imModelCurr, imModel.keyPoints, imObserPrev,imObser.keyPoints, **matchIndices**, new Bgr(System.Drawing.Color.Yellow), new Bgr(System.Drawing.Color.Red), **matMask**, Features2DToolbox.KeypointDrawType.NOT_DRAW_SINGLE_POINTS);
Run Code Online (Sandbox Code Playgroud)
http://www.emgu.com/wiki/files/2.4.0/document/html/e92d37e6-fe4a-ad09-9304-cd2d2533bfa8.htm但我注意到它让我在匹配对之间错误绘制了图:

然后我试着自己实现这样的功能:
for (int i = 0; i < matMask.Rows; ++i)
{
if (**matMask[i, 0]** > 0)
{
int indForCurrFrm = **matchIndices[i, 0]**;
int indForPrevFrm = i;
//for frame i-1
PointF fromFirstFrame = getImgObserved(keyPoints[indForPrevFrm]);
//for frame i
PointF NextCorrespondingMatchedFrame = getImModelXY(keyPoints[indForCurrFrm]);
imColorPrv2.Draw(new CircleF(fromFirstFrame, 5), new Bgr(mtchColor), 3);// for frame i-1
imColorShow.Draw(new CircleF(NextCorrespondingMatchedFrame, 5), new Bgr(mtchColor), 3); // …Run Code Online (Sandbox Code Playgroud) 我在matlab中有两个矩阵,
> IRwindow =
>
> **183** 171 150 125 137
138 167 184 173 152
105 114 141 167 185
148 113 105 115 141
186 183 147 112 105
>
> ILwindow =
>
> **201** 170 165 177 203
181 174 167 169 189
154 150 156 168 181
187 175 158 131 144
173 186 183 167 141
Run Code Online (Sandbox Code Playgroud)
我想逐个元素地减去这两个矩阵并获得结果; 例如,对于第一个元素(183 - 201 = -18)但是该元素的输出给出零.结果结果如下:
> IRwindow - ILwindow
ans =
**0** 1 0 0 …Run Code Online (Sandbox Code Playgroud) 我在c#中编写了一个计算机视觉程序,需要部分项目SIFT; 我下载了SIFT的MEMO库:
http://www.nowozin.net/sebastian/tu-berlin-2006/libsift/
在我的项目中,我添加了两个库****libsift.dll和ICSharpCode.SharpZipLib.dll****作为我的项目的参考.

既然我想在代码"USING libsift"之上提及libsift它就不会识别它;

甚至更多,如果我想做一个这样的类的实例atuo检测不承认它.

这很奇怪,因为我可以在对象浏览器中看到这个库的功能.
虽然我可以在对象浏览器中看到函数,但我无法使用我已经导入的库作为项目中的引用?可能是什么问题呢?
(我在Windows中有c#.Net VS2010.)
我的目的是找到矩阵的特征向量.在Matlab中,有一个[V,D] = eig(M)用于得到矩阵的特征向量:[V,D] = eig(M).或者,我使用WolframAlpha网站来仔细检查我的结果.
我们有一个10X10矩阵叫M:
0.736538062307847 -0.638137874226607 -0.409041107160722 -0.221115060391256 -0.947102932298308 0.0307937582853794 1.23891356582639 1.23213871779652 0.763885436104244 -0.805948245321096
-1.00495215920171 -0.563583317483057 -0.250162608745252 0.0837145788064272 -0.201241986127792 -0.0351472158148094 -1.36303599752928 0.00983020375259212 -0.627205458137858 0.415060573134481
0.372470672825535 -0.356014310976260 -0.331871925811400 0.151334279460039 0.0983275066581362 -0.0189726910991071 0.0261595600177302 -0.752014960080128 -0.00643718050231003 0.802097123260581
1.26898635468390 -0.444779390923673 0.524988731629985 0.908008064819586 -1.66569084499144 -0.197045800083481 1.04250295411159 -0.826891197039745 2.22636770820512 0.226979917020922
-0.307384714237346 0.00930402052877782 0.213893752473805 -1.05326116146192 -0.487883985126739 0.0237598951768898 -0.224080566774865 0.153775526014521 -1.93899137944122 -0.300158630162419
7.04441299430365 -1.34338456640793 -0.461083493351887 5.30708311554706 -3.82919170270243 -2.18976040860706 6.38272280044908 2.33331906669527 9.21369926457948 -2.11599193328696
1 0 0 0 …Run Code Online (Sandbox Code Playgroud) 我有两个float[]对象.如果不编写for循环,我想比较我的两个1D数组,看看它们是否在数字上相等.
当我运行以下代码(因为所有元素都相同)时,它不会通过if语句并显示消息.
我应该如何应用Equals命令才能正常工作?
我可以使用任何比较命令吗?
Random r1 = new Random(1);
int rndNumber= r1.Next(10);
float[] m = Enumerable.Repeat((float)rndNumber, 180).ToArray();
float[] m2 = Enumerable.Repeat((float)rndNumber, 180).ToArray();
if (m.Equals(m2))
{
MessageBox.Show("we are equal");
}
Run Code Online (Sandbox Code Playgroud) c# ×3
.net ×2
c#-4.0 ×2
emgucv ×2
matlab ×2
opencv ×2
eigenvalue ×1
eigenvector ×1
matrix ×1
opencvsharp ×1
sift ×1
svd ×1
wolframalpha ×1