我一直在尝试for循环,置换等,但是我无法解决此问题,将不胜感激。
我有一个已经处理过的RGB图像,其格式如下:
import scala.collection.immutable.Queue
val q0 = Queue(0)
val q1 = Queue(1)
q0 ++ q1 // yields Queue(0,1) as I expected
q0 ++: q1 // yields Queue(0,1) as well; I expected Queue(1,0)
我想将上述图像的上述矩阵转换为实际图像。 最终图像如下所示:
image = [ 1 1
1 1
2 2
2 2
3 3
3 3
4 4
4 4 ];
很明显,我正在处理的图像比4x4x3大得多。我该如何解决这个问题?
编辑:
基本的我正在寻找一种优化的方式来对“块”执行reshape命令。我正在定义一个像这样的块:
new_image=[ 1 1 2 2
1 1 2 2
3 3 4 4
3 3 4 4 ];
我有一个像这样的块向量:
block1 = [ 1 1
1 1];
我想以与重塑命令类似的方式重塑此“块矢量”。
blockvector = [ block1
block2
block3
block4 ];
答案 0 :(得分:1)
喜欢吗?
% Input block size.
ibs = 3;
% Input.
input = [ 1 * ones(ibs); 2 * ones(ibs); 3 * ones(ibs); 4 * ones(ibs) ]
% Determine block size.
bs = size(input, 2);
% Check format.
if (size(input, 1) != 4 * bs)
disp('Wrong format.');
end
% Transpose input.
input = input.';
% Generate output.
output = [input(1:bs, 1:2*bs); input(1:bs, 2*bs+1:4*bs)]
输出:
input =
1 1 1
1 1 1
1 1 1
2 2 2
2 2 2
2 2 2
3 3 3
3 3 3
3 3 3
4 4 4
4 4 4
4 4 4
output =
1 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
3 3 3 4 4 4
3 3 3 4 4 4
3 3 3 4 4 4
我现在不满意。我的脚本的最后一行必须有一个更好的解决方案。任何改进都非常欢迎!