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('灰度图');
效果图如下: