Matlab径向梯度图像

时间:2016-03-04 16:27:47

标签: matlab

我正在尝试使用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);

radial gradient image

任何帮助都会非常感激,因为我是Matlab的新手。

2 个答案:

答案 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;

这是线性插值的一个例子,其中内边缘的灰度值线性下降到背景。

您可以尝试其他方程式以获得不同类型的渐变衰落!