MATLAB代码效率提高运行时间

时间:2016-06-22 06:10:32

标签: performance matlab image-processing vectorization processing-efficiency

我有一个保存图像的三维单元格(即images = cell(10,4,5)),每个单元格块保存不同大小的图像。就我想要达到的目标而言,尺寸并不太重要。我想知道是否有一种有效的方法来计算每个单元块的锐度(总单元块= 10 * 4 * 5 = 200)。我需要使用以下函数计算每个块的清晰度:

如果重要:

  • 40个单元块包含大小为240 X 320
  • 的图像
  • 40个单元块包含大小为120×160的图像
  • 40个单元块包含大小为60×80
  • 的图像
  • 40个单元块包含大小为30×40的图像
  • 40个单元块包含大小为15×20的图像

总计200个单元格。

  %% Sharpness Estimation From Image Gradients
  % Estimate sharpness using the gradient magnitude.
  % sum of all gradient norms / number of pixels give us the sharpness
  % metric.
  function [sharpness]=get_sharpness(G)
     [Gx, Gy]=gradient(double(G));
     S=sqrt(Gx.*Gx+Gy.*Gy); 
     sharpness=sum(sum(S))./(480*640);

目前我正在做以下事情:

  for i = 1 : 10
     for j = 1 : 4
        for k = 1 : 5
           sharpness = get_sharpness(images{i,j,k});
        end
     end
  end

清晰度功能不是什么花哨的东西。我只有很多数据,因此计算所有内容需要很长时间。

目前我正在使用嵌套的for循环遍历每个单元块。希望有人能帮我找到更好的解决方案。

(P.S。这是我第一次提出问题,因此如果有任何不清楚的地方请再提问。谢谢)

0 个答案:

没有答案