Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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# 二元图_C#_C# 4.0 - Fatal编程技术网

C# 二元图

C# 二元图,c#,c#-4.0,C#,C# 4.0,我有一个int数组,如下所示 [1 0 0 0 1] [1 1 0 0 1] [1 1 0 0 1] 它不是更立体的。我写这篇文章不止一行,只是为了更好地格式化。 我现在要找到一种方法,如何将这个数组转换成一个图 我找到了算法的这些步骤 将图像展开为αx α像素大小 将图像细化到单位 使用任何 细化算法 走过每一条线 绘制以确定关键点 交点、直线/曲线 连接这些点 在步行过程中,如果 边缘被发现,视其为 端点作为单独的 点 注意起点和终点 点,最大距离的点 开始和形状(直线/曲线)

我有一个int数组,如下所示

[1 0 0 0 1]  
[1 1 0 0 1]  
[1 1 0 0 1] 
它不是更立体的。我写这篇文章不止一行,只是为了更好地格式化。
我现在要找到一种方法,如何将这个数组转换成一个图

我找到了算法的这些步骤

  • 将图像展开为αx α像素大小

  • 将图像细化到单位 使用任何 细化算法

  • 走过每一条线 绘制以确定关键点 交点、直线/曲线 连接这些点

  • 在步行过程中,如果 边缘被发现,视其为 端点作为单独的 点

  • 注意起点和终点 点,最大距离的点 开始和形状(直线/曲线) 连接两个点的图形

  • 如果有 直线/曲线<β 然后删除它

  • 但我不知道如何实现它。 有人有主意吗?
    第二步我已经做了

    以下是该算法的更多信息:

    图中表示顶点和边。这个 边是连接任意两点的直线或曲线。 边结束/开始的每个点都被视为 顶点。我们也有兴趣知道这一点 每一条直线/曲线,距离 起点。当图形可能包含 闭合曲线(如O)将被视为从a开始的曲线 在同一顶点结束的顶点

    因此,每条边必须表示起点顶点、终点 顶点、形状(直线/曲线)和最大点 从起始顶点分离。图像扩展完成 通过计算扩展因子(最终图像大小/初始 图像大小),用于x和y坐标。起点和终点 然后计算新图像中每个像素的端点坐标 通过乘以膨胀系数来测量。这个 直线和曲线与最大值和最大值不同 直线/曲线起点所对的最小角度,a 距离起点和所有点更远的点 2个γ单位(参考图3)。一句话 最大和最小角度之间的差异

    资料来源:

    这个方向对吗

    // Create the graph
    Graph<short> graph = new Graph<short>();
    // Step to the array ([1 0 0 1 0] [1 1 0 0 1] ...)
    for (int i = 0; i < marked.Length; i ++)
    {
        if (marked[i] == true) //if the value is 1
        {
            // Create a new Node (with 1 as value)
            GraphNode<short> node = new GraphNode<short>(1);
            // And for all sorounding pixels with the value 1
            for (int count = 0; count < getSurroundedPixel; count++)
            {   
                // Create a new Node
                GraphNode<short> surrondNode = new GraphNode<short>(1);
                // And add the edge between the two nodes to the graph (costs = 1)
                graph.AddDirectedEdge(node, surrondNode, 1);
            }
    
        }
    }
    
    //创建图形
    图形=新图形();
    //到数组的步骤([1 0 0 1 0][1 1 0 1]…)
    for(int i=0;i
    我仍然觉得很难说出作者认为什么是顶点。只有极值点和交点?路上的每一点?无论如何,我会从使用路上的每个点开始,然后清理东西(基于连续边的角度)。请记住,错误会随着时间的推移而累积。@NicoSchertler我认为每个点都有一个顶点。你如何“从使用路上的每个点开始,然后清理东西”?然后你只需要为每个填充的像素设置一个顶点,并为填充的邻域添加边。@NicoSchertler我是这样理解的:哦,代码太长了,不适合注释。@NicoSchertler我已经用我的代码编辑了我的startpost。