2017-10-08 236 views
0

我想完成一个任务,它要求我使用256x256x3矩阵创建渐变图像。矩阵(:,:,2)的第二层用于创建渐变图像的绿色。绿色层应该是这个样子:如何制作一个三角形渐变的Matlab矩阵?

Green matrix layer

这是我到目前为止已经试过:

green = linspace(1,0,256); 

image = zeros(256,256,3) 
for column = 1:256 
    image(column, :, 2) = green; 
    image(:, column, 2) = green; 
end 

但是,这最终使绿色层基质是这样的: Incorrect Green Layer

所以我不确定该怎么做。我如何制作一个看起来像这样的矩阵?

回答

0

根据OP的解释,问题归结为二维插值,其中原点为255,其他三个顶点为0。因此,我们可以使用插值函数来完成任务:

[X,Y] = ndgrid(0:255,0:255); %//create a grid with coordinates 
[Xi,Yi] = ndgrid([0,255],[0,255]); %//define edge coordinates 
Zi = [255,0;0,0]; %//specify green intensity at edges 
Z = interpn(Xi,Yi,Zi,X,Y); %//do linear interpolation 
Zim = uint8(round(Z)); %//round and convert to integers 
imshow(cat(3,zeros(size(Zim)),Zim,zeros(size(Zim)))) %//show result 

结果是这样的:

enter image description here

或者,在灰度:

enter image description here