【发布时间】:2012-12-25 00:01:12
【问题描述】:
背景故事:
这是一个旧脚本,我需要比较同一物体的两张略有不同的图像,以获取相机本身的数据。我用 octave 编写了这个脚本并尝试了它,后来我发现 matlab 用它运行得更快,所以因为我使用 matlab 而不是 octave。 我最近决定再次检查八度,我仍然得到 1:1000 的速比。
问题:
- 如何向量化这个算法?
- matlab (verses octave) 是否有办法自动矢量化此代码以将运行速度提高 1000 倍 - 对于 420X420 像素大小的彩色图像,0.1 秒与 100 秒相比?
脚本:
color_depth = 8;
number_of_colors = 3;
number_of_grey_levels = 2^color_depth;
Double_Distribution_0 =zeros(number_of_grey_levels,number_of_grey_levels,number_of_colors);
frame_A = 1+int16(imread('Path\image_A.tif'));
frame_1 = 1+int16(imread('Path\image_1.tif'));
[height,width]=size(frame_A(:,:,1));
number_of_pixels = width*height;
for k = 1:number_of_colors
tic
for i = 1:height
for j = 1:width
Double_Distribution_0(frame_1(i,j,k),frame_A(i,j,k),k) = 1 + Double_Distribution_0(frame_1(i,j,k),frame_A(i,j,k),k);
end
end
toc
end
【问题讨论】:
-
您尝试过任何建议的解决方案吗?如果您觉得您的问题已经解决,请随时接受答案。
标签: matlab octave vectorization