Matlab 绘制图片各个通道曲面图

1.首先是要读取到一张图片,这里我选用的是一张人脸

f=imread('person.png');

首先是要得到三个通道的值,

r=f(:,:,1);

g=f(:,:,2);

b=f(:,:,3);

然后我们需要得到这张图片的纵横比,这个很容易,直接使用

whos f;  %这里会显示出f的大小信息

然后根据这个大小去创建一个网格矩阵,比如这里大小是400x600的

就可以创建一个400x600的网格矩阵,如下:

x=(1:1:400);

y=(1:1,600);  

[x1,y1]=meshgrid(y,x); //注意此处是(y,x),而不是(x,y),如果是(x,y)那么大小网格矩阵的大小就是600x400,就会出错;

如果我不想显示那么多的数据,可以选择一些通道数据

例如,对r进行选择,r=(1:10:400,1:15:600);

之后,我需要重新创建一个网格矩阵,该网格矩阵的大小应该和r的相同才可以。

之后就可以绘制了,

subplot(2,2,1),surf(x1,y1,r),title('R通道');

subplot(2,2,2),surf(x1,y1,g),title('G通道');

subplot(2,2,3),surf(x1,y1,b),title('B通道');

下面是灰度图

l=(r+g+b)/3;

subplot(2,2,4),surf(x1,y1,l),tilte('灰度图');

效果图如下:

Matlab 绘制图片各个通道曲面图