• 图像处理 估计退化函数之运动模糊和矩阵matlab运算的一些实验情况


    关键词:

    实验情况:做成了H(u,v);   但在频域相乘和傅里叶变换反变换中出了问题,效果完全除服想象的差劲

    实验代码1:

    linesum.m

    function [V,U]=linesum(M,N,a,b)
    u=1:M;
    v=1:N;
    [V,U]=meshgrid(a*v,b*u);

    实验代码2:

    sports_degradation.m

    function H=sports_degradation(M,N,a,b,T)
           [U,V]=linesum(M,N,a,b);
           d=(a*U+b*V);

    H=(10./(3.1415*d)).*((sin(d)).*(exp(-j*3.14*d)))   矩阵相乘是M.*N的模式,其次,

    我估计还是在H计算上的问题,因为,这是一个汲取d矩阵的每一元素进行处理的过程,

    实验结果否定这样假设:

    >> D=[ 12 3 4
               5 8 1
                  4 18 8]

    D =

        12     3     4
         5     8     1
         4    18     8

    >> D1=D.*D

    D1 =

       144     9    16
        25    64     1
        16   324    64

    >> D2=D.*(D.*D)

    D2 =

            1728          27          64
             125         512           1
              64        5832         512

    >>

    >>  D1=(D/2).*D

    D1 =

       72.0000    4.5000    8.0000
       12.5000   32.0000    0.5000
        8.0000  162.0000   32.0000

    >> D2=(D^2).*((D/2).*D)

    D2 =

           12600         594         664
            1300        3104          18
            1360       48600        3136

    >> d3=D^2

    d3 =

       175   132    83
       104    97    36
       170   300    98

    >> d3=D.^2

    d3 =

       144     9    16
        25    64     1
        16   324    64

    >>

    >> D

    D =

        12     3     4
         5     8     1
         4    18     8

    >> d4=1./D

    d4 =

        0.0833    0.3333    0.2500
        0.2000    0.1250    1.0000
        0.2500    0.0556    0.1250

    >> sin(D)

    ans =

       -0.5366    0.1411   -0.7568
       -0.9589    0.9894    0.8415
       -0.7568   -0.7510    0.9894

    >> d6=(1./D).*sin(D)

    d6 =

       -0.0447    0.0470   -0.1892
       -0.1918    0.1237    0.8415
       -0.1892   -0.0417    0.1237

    >>

    >> exp(-j*pi*D)

    ans =

       1.0000 + 0.0000i  -1.0000 - 0.0000i   1.0000 + 0.0000i
      -1.0000 - 0.0000i   1.0000 + 0.0000i  -1.0000 - 0.0000i
       1.0000 + 0.0000i   1.0000 + 0.0000i   1.0000 + 0.0000i

    >> i=imread('mars.jpg');
    >> I=fft2(i);
    Warning: FFTN on values of class UINT8 is obsolete.
             Use FFTN(DOUBLE(X)) or FFTN(SINGLE(X)) instead.
    > In uint8.fftn at 10
      In fft2 at 19
    >> I(1,1)

    ans =

       196563590

    >> [M,N]=size(i)

    M =

            1055

    N =

            1200

    >> [m,n]=size(I)

    m =

            1055

    n =

            1200

    但是在如何进行频域相乘出了,却出了非常失望的效果.

    注意到是G=H.*I;而非G=H*I;

    可能在傅里叶运算上存在误区.

    >> i=imread('6.bmp');
    >> i=rgb2gray(i);
    >> i=double(i);
    >> I=iift2(i);
    ??? Undefined command/function 'iift2'.

    >>  I=ifft2(i);
    >>  I=fft2(i);
    >> i1=ifft2(I);
    >>figure,imshow(i1,[]);

    image image

     

  • 相关阅读:
    ORACLE函数<四>
    Oracle中的伪列<三>
    PL/SQL<八>函数
    invoice
    quite
    做人小结
    wsdl 学习笔记
    name, middle name, first name, last name
    小感叹
    qualified、quantity
  • 原文地址:https://www.cnblogs.com/fleetwgx/p/1496490.html
Copyright © 2020-2023  润新知