关键词:
实验情况:做成了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,[]);