1
我想將圖像分成8乘6塊,然後從每個塊想要得到紅色,綠色和藍色值的平均值,然後將每個塊的平均值存儲到一個數組中。說,如果我有圖像分成4塊,結果數組將是:Matlab:通過圖像塊迭代
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