Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:声明并使用XNA向量进行矩阵乘法,等_C#_Image Processing_Matrix Multiplication - Fatal编程技术网

C#:声明并使用XNA向量进行矩阵乘法,等

C#:声明并使用XNA向量进行矩阵乘法,等,c#,image-processing,matrix-multiplication,C#,Image Processing,Matrix Multiplication,我试图在C#中声明并使用XNA向量进行矩阵乘法、求和等 这些将用于图像处理,使其比常规的SetPixel和GetPixel更快。然而,我总是找不到一个有效的例子,我在网上尝试了很多例子,但似乎我遗漏了一些东西 有帮助和示例代码吗 谢谢 如果您担心性能问题,则可以恢复到不安全环境下的编码 通过使用不安全关键字标记类型、类型成员或语句块,允许使用指针类型并在该范围内的内存上执行C++样式指针操作,并能够在托管执行框架内执行此操作。不安全代码可以比相应的安全实现运行得更快 简而言之,这里有一个来自C#

我试图在C#中声明并使用XNA向量进行矩阵乘法、求和等

这些将用于图像处理,使其比常规的SetPixel和GetPixel更快。然而,我总是找不到一个有效的例子,我在网上尝试了很多例子,但似乎我遗漏了一些东西

有帮助和示例代码吗


谢谢

如果您担心性能问题,则可以恢复到
不安全环境下的编码

通过使用不安全关键字标记类型、类型成员或语句块,允许使用指针类型并在该范围内的内存上执行C++样式指针操作,并能够在托管执行框架内执行此操作。不安全代码可以比相应的安全实现运行得更快

简而言之,这里有一个来自C#4.0一书的很好的简短示例:

unsafe void BlueFilter (int[,] bitmap)
  {
    int length = bitmap.Length;
    fixed (int* b=bitmap)
    {
        int* p=b;
        for (int i=0, i<length; i++)
        *p++ &= 0xFF;
    }
   }
unsafe void BlueFilter(int[,]位图)
{
int length=bitmap.length;
固定(int*b=位图)
{
int*p=b;

对于(inti=0,iVerctors只是1xn个矩阵。创建一个矩阵类,包含求和和和乘法的方法

public class Matrix
{
    private int[,] m_array;

    public Matrix(int m, int n)
    {
        m_array = new int[m, n];
    }

    public Matrix(int[,] other)
    {
        m_array = other;
    }

    public Matrix Mult(Matrix other)
    {
        if (this.m_array.GetLength(1) != other.m_array.GetLength(0))
            return null;

        int[,] res = new int[this.m_array.GetLength(0), other.m_array.GetLength(1)];

        for (int i = 0; i < this.m_array.GetLength(0); ++i)
            for (int j = 0; j < other.m_array.GetLength(1); ++j)
            {
                int s = 0;
                for (int k = 0; k < this.m_array.GetLength(1); ++k)
                    s += this.m_array[i, k] * other.m_array[k, j];
                res[i, j] = s;
            }

        return new Matrix(res);
    }
}
公共类矩阵
{
私有int[,]m_数组;
公共矩阵(整数m,整数n)
{
m_数组=新整数[m,n];
}
公共矩阵(整数[,]其他)
{
m_数组=其他;
}
公共矩阵Mult(矩阵其他)
{
if(this.m_array.GetLength(1)!=other.m_array.GetLength(0))
返回null;
int[,]res=newint[this.m_array.GetLength(0),other.m_array.GetLength(1)];
for(int i=0;i
我不是100%确定,但应该有一个内置的矩阵类,您可以使用。我正在尝试帮助GPU获得更快的图像处理能力。谢谢。但是如何利用GPU?谢谢。但是如何利用GPU呢?@johnshaddad |您不能直接利用GPU,因为他们的供应商不提供托管API和ni虽然它们有X86/X64的指令集,但是NVIDIA提供了CUDA,但它只支持C++。因此,尽管你可以构建一个互操作层,但是使用并行性会简单很多:OOPS LOL,但是实时处理HD图像呢?就像在HD中的一个视频,我想处理LIFE(例如翻转照片或做其他的事情)。?有没有关于在这种情况下什么最有效的指南,可能是教程或示例代码?谢谢