-2

我很感兴趣如何将给定的图像转换为只有数字的矩阵形式?例如让我们拍下下面的照片

在此处输入图像描述

我知道 matlab 中存在特殊函数,它将给定的图像分解为颜色和数字,例如我在这个网站上看到了这个代码

I = imread('test.jpg');
b = dec2bin(I); % b becomes vector
% some actions with binary vector
du = bin2dec(b);
du = reshape(du,size(I)); % converting vector du to 3d Image array 
imwrite(uint8(du), 'du.jpg'); %save our du to file du.jpg

I = imread('du.jpg'); %test if it saved correctly
imshow(du) 

并转换成我的图片,像这样

I=imread('tensor_in.jpg');

b=dec2bin(I)

并得到以下数组,实际上只有零和一

00001110
00001111
00010000
00010000
00010001
00010010
00010011
00010101
00010110
00011000
00011001
00011000
00010101
00010101
00010101
00010101
00010101
00010101
00010101
00010101
00011000
00011000
00011000
00011000
00011000
00011000
00011000
00011000
00011011
00011011
00011011
00011011
00011011
00011011
00011011
00011011
00011100
00011100
00011100
00011101
00011101
00011110
00011110
00011101
00011110
00011011
00011011
00011011
00100000
00100011
00101001
00101011
00101111

显然我没有继续,因为它的大小是

<151074x8 char>

并遵循与例如相同的规则

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

但是我很感兴趣,如果不是获取数字数组,而是如何获取其他数字的数组,例如

2 1 3
4 21 23
67 89 100

让我们这样说。我可以在 matlab 中做吗?请帮帮我

4

1 回答 1

6

拿督,当你使用

I = imread('test.jpg');

您的图像已经是数字数组形式。每个“数字”都告诉您部分颜色信息。

如果图像文件是索引形式,您将获得一个 NxM 数组(对于大小为 NxM 的图像)。

如果图像没有被索引,你会得到一个 NxMx3 数组,其中三个 NxM 数组中的每一个都对应,分别对应红色、绿色和蓝色通道。

我建议你研究 matlab 如何处理图像: http: //www.mathworks.de/de/help/matlab/creating_plots/working-with-images-in-matlab-graphics.html

于 2013-05-02T13:07:20.793 回答