MATLAB图像处理——矩阵操作

矩阵的直接创建

a = [1,2,3:4,5,6:7,8,9]

即a为一个3x3的矩阵:

a = 

1  2  3

4  5  6

7  8  9

关于矩阵操作,来看一个问题:

编写一个程序m文件,用于构建和显示包含大小为c×c像素的白色正方形的图像,该程序自动以大小为N x N像素(N = 256)的黑色背景为中心

由图像知识可知,像素值可取0~255之间,0为黑,255为白

代码如下:

a = zeros(256);%创建零矩阵 256*256
cc = 32; %这里令中间的白色正方形大小为32*32
a((N-cc)/2:(N+cc)/2,(N-cc)/2:(N+cc)/2)=255; %将中间变成白色,即赋值为255
imshow(a) %显示图像

显示出来

MATLAB图像处理——矩阵操作_第1张图片

同理,画一些更复杂的图形:

%在上述图形的基础上再加一些白色图形
a(115:145,:)=255;
a(:,115:145)=255;

这里用到了MATLAB的矩阵赋值,将一些特定的位置(多值)赋特殊值:

A为矩阵,操作A的a行到b行,c列到d列中的数字,其语句为A(a:b,c:d)=m; m为目标值,这里希望改成白色,故赋值为255,叠加上次的中心白色。可以得到下图:

MATLAB图像处理——矩阵操作_第2张图片

在这里看到最开始的小方格被挡住了一些,但是还能看到一个小角(额...参数设计得不好,忽略这些细节) 

在我们查询变量的时候发现,矩阵的115行开始,都变成了255,印证了刚刚的变量,从115-145,当全选这一 列/行 时,可以省去数字,这里省去了列,因为我们想要一整行的白条。(行的也同理,得到了一个整个竖列)

 

MATLAB图像处理——矩阵操作_第3张图片

遵从上面的规律,画什么都ok的啦

MATLAB图像处理——矩阵操作_第4张图片

 参考代码:

%利用好循环,可以一层层叠“图形”
clc;
a = zeros(256);
for i =10:10:120
a(i:(256-i),i:(256-i))=255;  %加一块白
a((i+3:253-i),(i+3:253-i))=0; %在同一个循环里再加一块小一点的黑
end


imshow(a)

总结:由此可见,MATLAB中的图像操作最基本的是矩阵的操作。 在后续的图像处理中(e.g.傅里叶变换),优先对矩阵进行操作。在基础上首先熟练各种矩阵应用。

 

 

你可能感兴趣的:(MATLAB图像处理,matlab,矩阵)