Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
Image 图像处理速度过慢(嵌套for循环的矢量化)_Image_Matlab_Image Processing_Octave_Vectorization - Fatal编程技术网

Image 图像处理速度过慢(嵌套for循环的矢量化)

Image 图像处理速度过慢(嵌套for循环的矢量化),image,matlab,image-processing,octave,vectorization,Image,Matlab,Image Processing,Octave,Vectorization,我需要八度音阶的图像处理帮助。我试图计算一些图像上的本地“滑动窗口”ssd。速度过慢(嵌套for循环加起来有88*120*41*41次迭代),因此无法使用它。我使用的版本是Windows7 64位上的3.6.2。(corei5) 我将启动以下八度音阶脚本 转到下图 有什么建议吗? 提前感谢您的关注在函数filter2、ordfilte2和blockproc中进行循环(最后一个函数很可能是您将要使用的函数。在2.0.0之前的软件包版本中,它被称为blkproc)。我没有很好地了解您的代码试图做

我需要八度音阶的图像处理帮助。我试图计算一些图像上的本地“滑动窗口”ssd。速度过慢(嵌套for循环加起来有88*120*41*41次迭代),因此无法使用它。我使用的版本是Windows7 64位上的3.6.2。(corei5)

我将启动以下八度音阶脚本

转到下图

有什么建议吗?
提前感谢您的关注

在函数
filter2
ordfilte2
blockproc
中进行循环(最后一个函数很可能是您将要使用的函数。在2.0.0之前的软件包版本中,它被称为blkproc)。我没有很好地了解您的代码试图做什么,但是如果这些循环真的是必要的,我会非常惊讶。您似乎只在不同的索引上执行简单的算术运算。了解如何矢量化代码,您将看到巨大的改进。如果您能解释代码应该做什么,我们可能会提供更多帮助

另外,您不需要使用
sum(sum(x))
,您可以并且应该用
sum(x(:)
替换它们。您也不需要使用
sum(x.^2)
,您可以使用
sumsq(x)
。因此,您的4个函数调用
sqrt(sum(sum(curDiff.^2))
可以替换为
sumsq(curDiff(:)

比较以下各项:

octave> x = rand (5000, 5000);
octave> t = cputime (); sqrt (sum (sum (x.^2))); cputime () - t
ans =  0.25202
octave> t = cputime (); sumsq (x(:));            cputime () - t
ans =  0.060004
它不仅要短得多,更容易阅读,而且要快4倍(这在像你这样的大循环中会产生巨大的变化)