background
MATLAB 代码通过创建一个元胞数组backgroundSample{1}
, backgroundSample{2}
, ... ,对灰度图像的一部分进行采样backgroundSample{9}
。这里halfRows
和halfCols
是图像的一半大小。
因为backgroundSample
是一个包含九个二维矩阵的数组。我很困惑如何用 C/C++ 编写这段代码。我可以得到backgroundSample{i}
使用类似的元素backgroundSample[i].elements[m][n]
吗?
MATLAB代码:
offset = [-60, -20, 20, 60];
for i = 1: 1: 3
for j = 1: 1: 3
backgroundSample{(i - 1) * 3 + j} =
background(halfRows + offset(i): halfRows + offset(i + 1), ...
halfCols + offset(j): halfCols + offset(j + 1));
end;
end;
编辑:
因为我们可以A = B
在 MATLAB 中简单地分配一个矩阵。例如,backgroundSample{1} = background(60: 100, 60: 100)
在我的问题中,这个任务在 i: 1→3 和 j: 1→3 的循环中。但是,在 C/C++ 中分配矩阵时,它应该一个一个地分配每个元素。也许是这样的:
for(int i = 0; i < 3; i++)
for(int j = 0; n < 3; j++)
// to get every elements
for(int m = 0 ...)
for(int n = 0 ...)
// not sure whether there is such usage of "->" in array
backgroundSample[(i - 1) * 3 + j]->elements[m][n] = background[i iteration][j iteration]
backgroundSample[m][n]
所以矩阵和的索引之间存在冲突background[i][j]
。如何解决问题?