图像处理 估计退化函数之运动模糊和矩阵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

 

原文地址:https://www.cnblogs.com/fleetwgx/p/1496490.html