图像序列连接排序算法 - Matlab 代码分析
org\u003dbound{1};ord\u003d[1];\nA\u003d[]\nB\u003d[]\nwhile length(ord)\u003c19\n pfh1\u003d10000;pfh2\u003d10000;\n [raw,col]\u003dsize(org);\n for i\u003d2:19\n temp1\u003dbound{i};\n p1\u003dsum(abs(org(:,col)-temp1(:,1)));\u0025right\n A\u003d[A,p1]\n if p1\u003cpfh1\n pfh1\u003dp1;\n cn1\u003di;\n end\n end\n for j\u003d2:19\n temp2\u003dbound{j};\n p2\u003dsum(abs(org(:,1)-temp2(:,2))); \u0025left \n B\u003d[B,p2]\n if p2\u003cpfh2\n pfh2\u003dp2;\n cn2\u003dj;\n end\n end\n if p1\u003c\u003dp2\n org\u003d[org,bound{cn1}];ord\u003d[ord,cn1];\n end\n if p1\u003ep2\n org\u003d[bound{cn2},org];ord\u003d[cn2,ord];\n end\nend\nord-1\n分析以上代码内容:以上代码是一个循环,用于将一个图像序列中的图像按照左右连接的方式进行排序。代码中的变量含义如下:\n\n- org:原始的图像序列,初始时只包含一个图像。每次循环后,会将与当前图像连接的最佳图像添加到序列中。\n- ord:存储已经连接的图像的索引。初始时只包含一个图像的索引。\n- A和B:用于存储每次循环中计算得到的右边界和左边界的差值。\n\n代码的执行过程如下:\n\n1. 初始化变量A和B为空数组。\n2. 判断ord的长度是否小于19,如果不小于19,则退出循环。\n3. 计算org的列数和行数,分别存储在col和raw中。\n4. 对于每一个bound中的图像,计算其与org最右边界的差值,并将结果存储在数组A中。\n5. 找到数组A中最小值的索引,并将该索引存储在变量cn1中。\n6. 对于每一个bound中的图像,计算其与org最左边界的差值,并将结果存储在数组B中。\n7. 找到数组B中最小值的索引,并将该索引存储在变量cn2中。\n8. 如果p1小于等于p2,则将bound{cn1}添加到org的右边,并将cn1添加到ord中。\n9. 如果p1大于p2,则将bound{cn2}添加到org的左边,并将cn2添加到ord中。\n10. 循环回到步骤2。\n\n最终,ord-1表示已经连接的图像的索引减去1,因为索引从1开始。
原文地址: https://www.cveoy.top/t/topic/pn4I 著作权归作者所有。请勿转载和采集!