小编far*_*rsa的帖子

通过SVD从基本矩阵中提取翻译的正确方法

我校准了相机并找到了内在参数(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上实现它.谁知道哪个翻译公式是正确的?

opencv svd emgucv opencvsharp

8
推荐指数
1
解决办法
1万
查看次数

在KNN计算的图像中绘制匹配对,以及Features2DToolbox.DrawMatches中的潜在错误

我写了一个代码,它通过KNN算法找到K最接近的匹配.在获取matMatch和matchIndices之后,我尝试在两个结果帧之间绘制匹配对.

我将matMaskmatchIndices提供给函数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)

c# opencv emgucv

7
推荐指数
1
解决办法
1329
查看次数

在matlab中减去两个矩阵,结果中的负值被零替换

我在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)

matlab matrix

5
推荐指数
1
解决办法
7205
查看次数

我无法使用我已导入的库作为项目中的引用

我在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.)

.net c# sift c#-4.0

3
推荐指数
1
解决办法
315
查看次数

我们能从矩阵中获得针对eigenVectors的不同解决方案吗?

我的目的是找到矩阵的特征向量.在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)

matlab linear-algebra eigenvalue eigenvector wolframalpha

1
推荐指数
2
解决办法
5530
查看次数

使用object.Equals来比较两个float []数组元素是否相等

我有两个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)

.net c# c#-4.0

1
推荐指数
1
解决办法
1191
查看次数