我正在尝试使用Matlab创建径向渐变图像,如下所示。图像需要大小为640 * 640 * 3,因为我必须将其与该尺寸的另一个图像混合。我编写了以下代码,但打印出的图像只是黑色背景上的灰色圆圈,边缘没有褪色。
p = zeros(640,640,3);
for i=1:640
for j=1:640
d = sqrt((i-320)^2+(j-320)^2);
if d < 640/3
p(i,j,:) = .5;
elseif d > 1280/3
p(i,j,:) = 0;
else
p(i,j,:) = (1 + cos(3*pi)*(d-640/3))/4;
end
end
end
imshow(p);
任何帮助都会非常感激,因为我是Matlab的新手。
答案 0 :(得分:0)
如果你仔细观察你的第三个案例(顺便说一句,应该是一个简单的其他而不是elseif),你可以看到你有
= (1 + cos(3*pi))*...
由于cos(3 * pi)= -1,因此总是为0,从而使该范围内的所有像素都变黑。我假设你想在那里找个“d”。
答案 1 :(得分:0)
更改:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog();
List<Person> Frm1PersonsList = frm2.Frm2PersonsList; // set a breakpoint here and step though the code to see the result from the Child Form
}
}
到
p(i,j,:) = (1 + cos(3*pi)*(d-640/3))/4;
这是线性插值的一个例子,其中内边缘的灰度值线性下降到背景。
您可以尝试其他方程式以获得不同类型的渐变衰落!