如何使用matlab为离焦模糊生成PSF?

如何使用matlab为离焦模糊生成PSF?,matlab,image-processing,Matlab,Image Processing,我已经编写了一个matlab代码来为512x512大小的离焦模糊生成PSF。问题是我接收到一个黑色正方形作为输出。我可以试着解决这个问题吗 a = 512; b = 512; k = 0; l = 0; PSF = zeros(a,b); r = 0.001; for i = 1:a for j = 1:b if (i-k)^2+(j-l)^2 <= r^2 PSF(i,j) = 1/(pi*r^2); e

我已经编写了一个matlab代码来为512x512大小的离焦模糊生成PSF。问题是我接收到一个黑色正方形作为输出。我可以试着解决这个问题吗


a = 512; b = 512;
k = 0; l = 0;
PSF = zeros(a,b);
r = 0.001;

for i = 1:a
    for j = 1:b
        
        if (i-k)^2+(j-l)^2 <= r^2
           PSF(i,j) = 1/(pi*r^2);
        else
            PSF(i,j) = 0;
        end
        
    end
end    
    
figure(1); imshow(PSF); 



a=512;b=512;
k=0;l=0;
PSF=零(a,b);
r=0.001;
对于i=1:a
对于j=1:b

如果(i-k)^2+(j-l)^2如果您有Matlab图像工具箱,则可以使用创建这样的PSF,其中
半径
以像素为单位


在代码中,请注意saastn指出,0.001像素的磁盘半径
r
非常小。此外,磁盘的中心位于(0,0)上,在循环计算PSF的域{1,…,a}×{1,…,b}之外。看起来你的意思是把磁盘放在中间。对于i=1,你的意思是什么?我猜你是指I=1:a的
,对吧?是的,我编辑了这个。很抱歉这是打字错误。它解决了你的问题吗?如果没有,请再次编辑您的问题,并设置
a
b
的值。否,它没有解决问题。我编辑了这个问题。谢谢。看来你想画个圆。请注意,
i
j
从1开始,然后增加1。现在,您将半径指定为0.001像素。因此,所有像素都不会在圆内。您需要增加半径或减少步长。