【发布时间】:2017-08-17 21:26:27
【问题描述】:
我想将图像分成 8 x 6 个块,然后从每个块中获取红色、绿色和蓝色值的平均值,然后将每个块的平均值存储到一个数组中。假设我将图像分成 4 个块,结果数组将是:
A = [average_red, average_green, average_blue,average_red, ...
average_green, average_blue,average_red, average_green, ...
average_blue,average_red, average_green, average_blue,...
average_red, average_green, average_blue,]
我创建的循环看起来非常复杂,需要很长时间才能运行,我什至不确定它是否正常工作,因为我不知道如何检查。有没有更简单的方法来实现这个。
这是循环:
[rows, columns, ~] = size(img);
[rows, columns, ~] = size(img);
rBlock = 6;
cBlock = 8;
NumberOfBlocks = rBlock * cBlock;
bRow = ceil(rows/rBlock);
bCol = ceil(columns/cBlock);
row = bRow;
col = bCol;
r = zeros(row*col,1);
g = zeros(row*col,1);
b = zeros(row*col,1);
n = 1;
cl = 1;
rw = 1;
for x = 1:NumberOfBlocks
for i = cl : col
for j = rw : row
% some code
end
end
%some code
if i == columns && j ~= rows
cl = 1;
rw = j - (bRow -1);
col = (col - col) + bCol;
row = row + bRaw;
elseif a == columns && c == rows
display('done');
else
cl = i + 1;
rw = j - (bRow -1);
col = col + col;
row = row + row;
end
end
【问题讨论】:
标签: matlab loops for-loop image-processing iterator