Image 在Matlab中从文本文件RGB数据创建图像

Image 在Matlab中从文本文件RGB数据创建图像,image,matlab,matrix,Image,Matlab,Matrix,我有一个包含RGB数据的文本文件,格式如下: [Pixel 0,0] [Pixel 1,0] [Pixel 2,0]... [Pixel 0,1] [Pixel 1,1] [Pixel 2,2]... ... 输入: 0.0 0.0 0.0 <-- this would be Pixel 0,0 1.0 0.0 0.0 1.0 0.9 0.0 1px宽的图案效果如图所示,但是,目标是能够创建多个图案,例如3x3的德国国旗和3x3的罗马尼亚国旗,或任何长度的任何其他图案,并做到这一点!这

我有一个包含RGB数据的文本文件,格式如下:

[Pixel 0,0] [Pixel 1,0] [Pixel 2,0]...
[Pixel 0,1] [Pixel 1,1] [Pixel 2,2]...
...
输入:

0.0 0.0 0.0 <-- this would be Pixel 0,0
1.0 0.0 0.0
1.0 0.9 0.0
1px宽的图案效果如图所示,但是,目标是能够创建多个图案,例如3x3的德国国旗和3x3的罗马尼亚国旗,或任何长度的任何其他图案,并做到这一点!这就是我找不到重塑矩阵的正确方法的地方

应创建图中所示第二个示例的输入如下:

         |========= Germany Flag ==========| [   Blue  ] [ Yellow  ] [   Red   ]
Black -> 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.9 0.0 1.0 0.0 0.0
Red ->   1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 1.0 0.9 0.0 1.0 0.0 0.0
Yellow-> 1.0 0.9 0.0 1.0 0.9 0.0 1.0 0.9 0.0 0.0 0.0 1.0 1.0 0.9 0.0 1.0 0.0 0.0
谢谢你的帮助

更新:Marcin询问,输入文件是文字的,正如我上面解释的。 这是GermanyRomania.txt文件的内容:

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.9 0.0 1.0 0.0 0.0
1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 1.0 0.9 0.0 1.0 0.0 0.0
1.0 0.9 0.0 1.0 0.9 0.0 1.0 0.9 0.0 0.0 0.0 1.0 1.0 0.9 0.0 1.0 0.0 0.0

有了这个文件,我必须用图片德文+罗马尼亚国旗创建第二个图案,这是所有需要的RGB信息。

我认为仅仅使用重塑功能无法实现您想要的效果

我们必须考虑到Matlab以列的主要顺序存储矩阵,您可以阅读更多关于它的内容

因此,在使用重塑函数之前,我们必须具有以下格式的数据矩阵:

[Pixel 0,0]
[Pixel 0,1]
...
[Pixel 1,0]
[Pixel 1,1]
...
[Pixel n,n]
下面是一个可能的解决方案:

# data stores the input
height = size(data, 1)
width = size(data, 2)
vertical_data_cell = mat2cell(data, height, 3 * ones(1, width / 3))'
vertical_data = cell2mat(vertical_data_cell)
flags = reshape(vertical_data, height, width / 3, 3)
image(flags)
注意,我们在第4行和第5行进行矩阵变换

以下是您提供的输入结果:

它也适用于不同的高度。 以下是德国、阿根廷和葡萄牙国旗的输入

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.46 0.66 0.85 0.46 0.66 0.85 0.46 0.66 0.85
1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 1.0 0.98 0.75 0.29 1.0 1.0 1.0
1.0 0.9 0.0 1.0 0.9 0.0 1.0 0.9 0.0 0.46 0.66 0.85 0.46 0.66 0.85 0.46 0.66 0.85
0.0 1.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0
0.0 1.0 0.0 1.0 0.9 0.0 1.0 0.9 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0
0.0 1.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0
这就是结果:

不清楚您的输入数据是什么。你能提供更多的例子吗,或者你正在使用的例子文件吗?@Marcin我已经包括了一个输入的例子,但是,它和我之前发布的完全一样,按字面来理解以避免混淆,就像它看起来一样
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.46 0.66 0.85 0.46 0.66 0.85 0.46 0.66 0.85
1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 1.0 0.98 0.75 0.29 1.0 1.0 1.0
1.0 0.9 0.0 1.0 0.9 0.0 1.0 0.9 0.0 0.46 0.66 0.85 0.46 0.66 0.85 0.46 0.66 0.85
0.0 1.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0
0.0 1.0 0.0 1.0 0.9 0.0 1.0 0.9 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0
0.0 1.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0