我有一个图像,我想为每个像素位置(x,y)分配不同的值,如下所示:
v(x,y)= a(y ^ 2)+ b(y)+ c
其中a,b和c是根据经验确定的参数。
我怎样才能在matlab中做到这一点?我的意思是如何更改图像的像素值呢?
答案 0 :(得分:2)
您似乎只想根据y坐标更改图像值,因此请创建一个新的矩阵y
,如下所示:
y = (1:height)' * ones(1,width);
其中高度和宽度是图像的大小:
[height, width] = size(v);
然后创建您的图片v
:
v = a.*(y.^2) + b.*y + c;
如果a
,b
和c
是单个值或与y
大小相同的矩阵,则此方法有效。
希望这就是你所要求的。
答案 1 :(得分:1)
说到图像和像素在你的情况下是误导(似乎你只是在谈论矩阵)。尝试运行此代码:
a = 1; b = 2; c = 3;
x = 1:100; % x and y define from 1 to the value for the size of your matrix
y = 1:100;
[X, Y] = meshgrid(x,y);
然后,您可以使用以下代码获取值V:
V = a * Y.^2 + b * Y + c;
用以下方式绘制:
figure;
imagesc(V);
干杯