X = [];
Y = [];
for i = 1:m
QImg = imread(fullfile(Dir2, QueryFrames(i).name),fmt);
Image1 = rgb2gray(QImg);
X = [X, imhist(Image1)];
end
for j= 1:n
RImg = imread(fullfile(Dir1, RefFrames(j).name),fmt);
Image2 = rgb2gray(RImg);
Y = [Y, imhist(Image2)];
end
任何人都可以告诉我如何预分配X和Y,两个存储直方图的数组。 Matlab建议两个阵列的预分配以提高速度。谢谢你的帮助。
答案 0 :(得分:0)
默认情况下,对于灰度图像(您有),imhist
使用256个区域(文档here)创建直方图并输出列向量。因此,除非您在某些迭代中更改了bin的数量,否则您希望X具有256行。列数取决于您正在处理的图像数量,m
变量的X
图像和n
变量的Y
图像。
因此,您希望按如下方式初始化两个变量:
X = double(256,m);
Y = double(256,n);
此外,不建议使用i
或j
作为循环迭代器,因为它们可能会混淆为虚构单位。
答案 1 :(得分:0)
将最后一个存储在x和y中,然后将循环存储到m-1,n-1。
QImg = imread(fullfile(Dir2, QueryFrames(m).name),fmt);
Image1 = rgb2gray(QImg);
X(m) = imhist(Image1);
for i = 1:m-1
QImg = imread(fullfile(Dir2, QueryFrames(i).name),fmt);
Image1 = rgb2gray(QImg);
X(i) = imhist(Image1);
end
RImg = imread(fullfile(Dir1, RefFrames(n).name),fmt);
Image2 = rgb2gray(RImg);
Y(n) = imhist(Image2);
for j= 1:n-1
RImg = imread(fullfile(Dir1, RefFrames(j).name),fmt);
Image2 = rgb2gray(RImg);
Y(j) = imhist(Image2);
end