搬家啦!请去goldengrape.org找我
  • Matlab编程遇到灵异事件。可重复性的灵异事件。

    2009-03-12

    Tag:发现

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://goldengrape.blogbus.com/logs/36607682.html

    这事不能只吓唬我一个人,大家都要分享一下。以下现象在Matlab 7.0 for Mac上实现:

    clear all

    close all

    %清除工作区,关闭所有图片窗口,注意,我已经清除了工作区了!所有的变量默认值都应该是空

    near=imread(’I1.tif’);

    far=imread(’I2.tif’);

    near=rgb2gray(near);

    far=rgb2gray(far);

    imagepic=far;

    %读取两个图片文件,转换成黑白,交给一个变量imagepic,注意变量名是imagepic,不是image

    [lens_sizex,lens_sizey]=size(near);

    D=zeros(lens_sizex,lens_sizey); 

    % 建立一个尺寸与读取图形大小一样的0矩阵

    centerx=floor(lens_sizex/2)+1;

    centery=floor(lens_sizey/2)+1;

    D(centerx,centery)=1;

    % 取0矩阵的中心点=1

    R=bwdist(D);

    % 以欧氏距离返回各点到1点的距离,也就是说(x,y)点的值=半径,相当于直角坐标系转换成极坐标系。

    for DefocusInDiopters=2;

    % 这个for循环在Matlab中是允许的,相当于for i=2 to 2.

        PARAMS3=6;

        c4=(1/(4sqrt(3)))DefocusInDiopters*((PARAMS3/2000)^2);

        wavefront=c4sqrt(3)((2)R.R+(-1)*R.^0);

        % Zernike函数的转换,没啥特殊,把第四项离焦的像差计算出来

        pupilfunc=exp(-i2pi/0.550.*wavefront);

        Hamp=fft2(pupilfunc);

        Hint=(Hamp .* conj(Hamp));

        PSF = real(fftshift(Hint));

        %计算离焦产生的点扩散函数

        wnr1 = deconvwnr(image,PSF);

        %用图像处理工具箱之中的维纳滤波复原,试图使用离焦的点扩散函数复原图像

        %注意!!这里拼写错误,应该使用imagepic,而写成了image,image应该是没有定义的!!!

        figure;imshow(wnr1);

        %显示图像

    end

    显然程序报错:

    ============

    http://goldengrape.org/2009/03/ghost_in_matlab/


    收藏到:Del.icio.us