2014-07-23 20:05:15 thnh169 阅读数 18853
  • OpenCV3.2 Java图像处理视频学习教程

    OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java OpenCV图像处理部分内容,包括Mat对象使用、图像读写、 基于常用核心API讲述基本原理、使用方法、参数、代码演示、图像处理思路与流程讲授。主要内容包括opencv像素操作、滤波、边缘提取、直线与圆检测、形态学操作与分水岭、图像金子塔融合重建、多尺度模板匹配、opencv人脸检测、OpenCV跟Tomcat使用实现服务器端图像处理服务。

    4124 人正在学习 去看看 贾志刚

1.逆滤波的问题点

      图像的老化,可以视为以下这样的一个过程。一个是退化函数的影响(致使图片模糊,褪色等),一个可加性噪声的影响。

用算式表示为 

    前几篇博文,主要是介绍可加性噪声的去除。本博文,主要介绍图像的逆滤波,即退化函数的去除。然而,逆滤波在空间域内的处理是很不方便的。
    简单的来考虑,加法的逆运算是减法,乘法的逆运算的除法,微分的逆运算是积分(严密一点说是不定积分)。那么就可以得到一个简单的结论了,要出去卷积的话,肯定需要用到卷积的逆运算。卷积的逆运算是---------反卷积,额,好像是一个理所应当的名字。我们建立了一个关于卷积的直观认识,将信号反转与滤波器系数求积和。那么,反卷积是一种什么样的运算呢?或者具体的来讲,反卷积的空间运算表现形式是什么样的?这样的考虑其实是多余的,或者说,不用考虑的那么复杂。
    在之前的博文中([数字图像处理]频域滤波(1)--基础与低通滤波器),我们得到这样的一个重要的结论。空间域内的卷积,其实就是频域内的乘积。那么这么考虑,就非常简单了,频域内的逆滤波运算,其实就是做除法。我们通过傅里叶变换,可以得到如下一个频域内的老化模型。
    

这样一个表达式内,没有了卷积运算,是一个很简单的四则运算。那么,所谓的去卷积或者逆滤波,就是将退化函数去除的过程。这样看来的话,直接做除法就可以了,如下所示。

    按照教材上的说法,这个表达式很有趣(哪里有趣了?)。首先,必须知道精确的退化函数。其次,如果退化函数含有0值或者极小值的话,会使得噪声项变得极大。
    综上所述,其实逆滤波的问题点有两个:、
    1.退化函数的推测。
    2.尽可能的不让噪声项影响画质。
   

2.两个退化函数的模型

   2.1 大气湍流模型 


   这个模型很简单,与高斯LPF很相似。伴随着值的增大,得到的图像越来越模糊。以下是这个模型执行的结果。

从表示式上可以看出,这个模型是不会有0值的,不过,这个模型与低通滤波器很相似,阻带的值都是极小的。这可能会使得图像的直接逆滤波失败。这个之后再说。
    

     2.2 运动模糊模型

     这个模型其实在Photoshop上也有一个同名的滤镜。详细的推倒我就不做了,这个模型的表达式如下所示。

这里有几个参数,说明一下。表示曝光时间,这里的表示了水平移动量与垂直移动量。值得一提的是,不要忘记下面这样一个重要的极限。
注意,运动模糊后的图像的尺寸会变化,如果还是按照原图截取,会造成图像成分的损失,在复原图像时候效果不是太好,而且不知道导致效果不好的原因,是由于成分的缺失,还是噪声的干扰。所以,这里我适当的扩展了图像的尺寸,以保留图像的所有成分
    此模型的执行结果如下所示。


3.图像的逆滤波

   3.1 实验步骤与实验用图像

   我们是这样的一个实验步骤,首先,使用退化函数处理图像,然后加上适当的可加性噪声。使用这样的图像进行逆滤波实验。
   下面是实验用图像。图像的噪声选用的是高斯噪声,均值为0,方差为0.08。退化函数则选用先前叙述的两种,一个个大气湍流模型,一个是运动模糊。

    3.2 直接逆滤波

    所谓直接逆滤波,就是不管噪声的影响,直接进行逆滤波的方法。

对于大气湍流模型而言,直接逆滤波会得到很不理想的结果。下面是直接逆滤波的实验结果。

     实验结果完全没有任何价值。观察其频谱,频谱的四角很亮,而原本频谱最亮的直流分量都看不到了。所以,这里做一个限制处理。也就是,仅仅只处理靠近直流分量的部分,其他的不做处理。然后处理完的结果,过一个10阶巴特沃斯低通滤波器。可以得到如下结果。

     这样的话,只需要调整限制半径,可以得到一个比之前较好的结果。当然,这招在运动模糊的图片面前,就略显得无力了。结果我就不贴了。

     3.3 维纳滤波器

     维纳滤波器的推导,其实是个很复杂的过程。这里就不推导了,直接看结果,可以得到一些有用的结论。
观察式子,对于合适的常数,有如下两个结论。
1.对于退化函数很小的点,相对而言常数的值很大,其倒数不会太大。
2.对于退化函数很小的点,相对而言常数的值很小,其倒数 基本保持不变。

下面的维纳滤波器的实验结果:



    3.4 约束最小二乘方滤波

    其实这个方法是一个很好的想法,将图像的能量作为评价图像平滑程度的度量,尽可能的将其平滑。设噪声的能量是一个定值,使用拉普拉斯未定系数法,将其进行迭代,然后解开。这种方法有了很多的变种,包括很著名的TV(Total Variation,全变分)模型,这个我之后的博文会讲到。
    在这里,使用本方法的目的是,减少噪音对于逆滤波的影响。表达式如下所示。

这个滤波器,可以消除很严重的噪声,并且复原图像。将实验用图像的噪声的方差提升到0.2,再进行滤波,可以得到如下结果。


    4 实验代码

close all;
clear all;
clc;
%% ----------init-----------------------------
f = imread('./original_DIP.tif');
f = mat2gray(f,[0 255]);

f_original = f;

[M,N] = size(f);

P = 2*M;
Q = 2*N;
fc = zeros(M,N);

for x = 1:1:M
    for y = 1:1:N
        fc(x,y) = f(x,y) * (-1)^(x+y);
    end
end

F_I = fft2(fc,P,Q);

figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('a).Original Image');

subplot(1,2,2);
imshow(log(1 + abs(F_I)),[ ]);
xlabel('b).Fourier spectrum of a).');
%% ------motion blur------------------
H = zeros(P,Q);
a = 0.02;
b = 0.02;
T = 1;
for x = (-P/2):1:(P/2)-1
     for y = (-Q/2):1:(Q/2)-1
        R = (x*a + y*b)*pi;
        if(R == 0)
            H(x+(P/2)+1,y+(Q/2)+1) = T;
        else H(x+(P/2)+1,y+(Q/2)+1) = (T/R)*(sin(R))*exp(-1i*R);
        end
     end
end

%% ------the atmospheric turbulence modle------------------
H_1 = zeros(P,Q);
k = 0.0025;
for x = (-P/2):1:(P/2)-1
     for y = (-Q/2):1:(Q/2)-1
        D = (x^2 + y^2)^(5/6);
        D_0 = 60;
        H_1(x+(P/2)+1,y+(Q/2)+1) = exp(-k*D);   
     end
end
%% -----------noise------------------
a = 0;
b = 0.2;
n_gaussian = a + b .* randn(M,N);

Noise = fft2(n_gaussian,P,Q);

figure();
subplot(1,2,1);
imshow(n_gaussian,[-1 1]);
xlabel('a).Gaussian noise');

subplot(1,2,2);
imshow(log(1 + abs(Noise)),[ ]);
xlabel('b).Fourier spectrum of a).');
%%
G = H .* F_I + Noise;
% G = H_1 .* F_I + Noise;
gc = ifft2(G);

gc = gc(1:1:M+27,1:1:N+27);
for x = 1:1:(M+27)
    for y = 1:1:(N+27)
        g(x,y) = gc(x,y) .* (-1)^(x+y);
    end
end

gc = gc(1:1:M,1:1:N);
for x = 1:1:(M)
    for y = 1:1:(N)
        g(x,y) = gc(x,y) .* (-1)^(x+y);
    end
end

figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('a).Original Image');

subplot(1,2,2);
imshow(log(1 + abs(F_I)),[ ]);
xlabel('b).Fourier spectrum of a).');

figure();
subplot(1,2,1);
imshow(abs(H),[ ]);
xlabel('c).The motion modle H(u,v)(a=0.02,b=0.02,T=1)');

subplot(1,2,2);
n = 1:1:P;
plot(n,abs(H(400,:)));
axis([0 P 0 1]);grid; 
xlabel('H(n,400)');
ylabel('|H(u,v)|');

figure();
subplot(1,2,1);
imshow(real(g),[0 1]);
xlabel('d).Result image');

subplot(1,2,2);
imshow(log(1 + abs(G)),[ ]);
xlabel('e).Fourier spectrum of d). ');
%% --------------inverse_filtering---------------------
%F = G ./ H;
%F = G ./ H_1;

for x = (-P/2):1:(P/2)-1
     for y = (-Q/2):1:(Q/2)-1
        D = (x^2 + y^2)^(0.5);
        if(D < 258) 
            F(x+(P/2)+1,y+(Q/2)+1) = G(x+(P/2)+1,y+(Q/2)+1) ./ H_1(x+(P/2)+1,y+(Q/2)+1);
        % no noise D < 188
        % noise D < 56
        else F(x+(P/2)+1,y+(Q/2)+1) = G(x+(P/2)+1,y+(Q/2)+1);
        end 
     end
end

% Butterworth_Lowpass_Filters
H_B = zeros(P,Q);
D_0 = 70;
for x = (-P/2):1:(P/2)-1
     for y = (-Q/2):1:(Q/2)-1
        D = (x^2 + y^2)^(0.5);
        %if(D < 200) H_B(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^100);end 
        H_B(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^20);
     end
end

F = F .* H_B;

f = real(ifft2(F));
f = f(1:1:M,1:1:N);

for x = 1:1:(M)
    for y = 1:1:(N)
        f(x,y) = f(x,y) * (-1)^(x+y);
    end
end
%% ------show Result------------------
figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('a).Result image');

subplot(1,2,2);
imshow(log(1 + abs(F)),[ ]);
xlabel('b).Fourier spectrum of a).');

figure();
n = 1:1:P;
plot(n,abs(F(400,:)),'r-',n,abs(F(400,:)),'b-');
axis([0 P 0 1000]);grid; 
xlabel('Number of rows(400th column)');
ylabel('Fourier amplitude spectrum');
legend('F_{limit}(u,v)','F(u,v)');

figure();
n = 1:1:P;
plot(n,abs(H(400,:)),'g-');
axis([0 P 0 1]);grid; 
xlabel('H''_{s}(n,400)');
ylabel('|H''_{s}(u,v)|');
%% ----------Wiener filters-----------
% K = 0.000014;
K = 0.02;
%H_Wiener = ((abs(H_1).^2)./((abs(H_1).^2)+K)).*(1./H_1);
H_Wiener = ((abs(H).^2)./((abs(H).^2)+K)).*(1./H);

F_Wiener = H_Wiener .*  G;
f_Wiener = real(ifft2(F_Wiener));
f_Wiener = f_Wiener(1:1:M,1:1:N);

for x = 1:1:(M)
    for y = 1:1:(N)
        f_Wiener(x,y) = f_Wiener(x,y) * (-1)^(x+y);
    end
end

[SSIM_Wiener mssim] = ssim_index(f_Wiener,f_original,[0.01 0.03],ones(8),1);
SSIM_Wiener 
%% ------show Result------------------
figure();
subplot(1,2,1);
%imshow(f_Wiener(1:128,1:128),[0 1]);
imshow(f_Wiener,[0 1]);
xlabel('d).Result image by Wiener filter');

subplot(1,2,2);
imshow(log(1+abs(F_Wiener)),[ ]);
xlabel('c).Fourier spectrum of c).');
% subplot(1,2,2);
% %imshow(f(1:128,1:128),[0 1]);
% imshow(f,[0 1]);
% xlabel('e).Result image by inverse filter');


figure();
n = 1:1:P;
plot(n,abs(F(400,:)),'r-',n,abs(F_Wiener(400,:)),'b-');
axis([0 P 0 500]);grid; 
xlabel('Number of rows(400th column)');
ylabel('Fourier amplitude spectrum');
legend('F(u,v)','F_{Wiener}(u,v)');

figure();
subplot(1,2,1);
imshow(log(1 + abs(H_Wiener)),[ ]);
xlabel('a).F_{Wiener}(u,v).');

subplot(1,2,2);
n = 1:1:P;
plot(n,abs(H_Wiener(400,:)));
axis([0 P 0 80]);grid; 
xlabel('Number of rows(400th column)');
ylabel('Amplitude spectrum');

%% ------------Constrained_least_squares_filtering---------
p_laplacian = zeros(M,N);
Laplacian = [ 0 -1  0;
             -1  4 -1;
              0 -1  0];
p_laplacian(1:3,1:3) = Laplacian;        

P = 2*M;
Q = 2*N;
for x = 1:1:M
    for y = 1:1:N
        p_laplacian(x,y) = p_laplacian(x,y) * (-1)^(x+y);
    end
end
P_laplacian = fft2(p_laplacian,P,Q);

F_C = zeros(P,Q);
r = 0.2;
H_clsf = ((H')./((abs(H).^2)+r.*P_laplacian));

F_C = H_clsf .* G;

f_c = real(ifft2(F_C));
f_c = f_c(1:1:M,1:1:N);

for x = 1:1:(M)
   for y = 1:1:(N)
       f_c(x,y) = f_c(x,y) * (-1)^(x+y);
    end
end

%%  
figure();
subplot(1,2,1);
imshow(f_c,[0 1]);
xlabel('e).Result image by constrained least squares filter (r = 0.2)');

subplot(1,2,2);
imshow(log(1 + abs(F_C)),[ ]);
xlabel('f).Fourier spectrum of c).');

[SSIM_CLSF mssim] = ssim_index(f_c,f_original,[0.01 0.03],ones(8),1);

figure();
subplot(1,2,1);
imshow(log(1 + abs(H_clsf)),[ ]);
xlabel('a).F_{clsf}(u,v).');

subplot(1,2,2);
n = 1:1:P;
plot(n,abs(H_clsf(400,:)));
axis([0 P 0 80]);grid; 
xlabel('Number of rows(400th column)');
ylabel('Amplitude spectrum');



原文发于博客:http://blog.csdn.net/thnh169/ 

=============更新日志===================

NULL


2018-10-05 11:45:22 mmmmmk_ 阅读数 722
  • OpenCV3.2 Java图像处理视频学习教程

    OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java OpenCV图像处理部分内容,包括Mat对象使用、图像读写、 基于常用核心API讲述基本原理、使用方法、参数、代码演示、图像处理思路与流程讲授。主要内容包括opencv像素操作、滤波、边缘提取、直线与圆检测、形态学操作与分水岭、图像金子塔融合重建、多尺度模板匹配、opencv人脸检测、OpenCV跟Tomcat使用实现服务器端图像处理服务。

    4124 人正在学习 去看看 贾志刚

1. 概述

图像的退化是一个很常见的现象,现实中,很可能因为成像系统的缺陷,或者一些认为的干扰导致图像退化。对于退化,可以用如下模型表示:

空域:g(x, y) = h(x, y)*f(x, y) + \eta (x, y)

频域:G(u, v) = H(u, v)F(u, v) + N(u, v)

其中h/H表示退化模型,而\eta/N表示噪声。

如果我们知道退化模型的化,对现有的图像做一次逆操作,就可以复原出原始的图像。即:

空域:g{}'(x, y) = g(x, y) / h(x, y) = f(x, y) + \eta (x, y) / h(x, y)(这里的/表示卷积的逆操作,因为不知道用什么表示,暂时用这个表示)

频域:G{}'(u, v) = G(u, v) / H(u, v) = F(u, v) + N(u, v) / H(u, v)

先看空域的表达,卷积的操作的逆操作根本无法想象到底是个什么东西。而在频域,则变成了求商。在空域求卷积和在频域求积是一样的,因此在这里,我们可以在频域做逆滤波的操作。

再观察频域的表达式,我们也可以得到一些信息:(1) 因为N(u, v)不可知,即使知道了图像的退化模型,也不能完全的复原出图像。(2) 在退化函数N(u, v)很小的时候,F(u, v)会被忽略掉。

 

 

2. 图像的运动模糊

运动模糊是由于相对运动引入的模糊,那么其退化模型就是相对运动。在本节,我们给图像模拟运动模糊。步骤如下:

1. 获取空域点扩散模型,在这里,我们用空域的退化模型去得到频域的退化模型。

2. 获取源图像的傅里叶变换和点扩散模型的傅里叶变换,将其相乘,再做傅里叶反变换,得到模糊后的图像。

代码如下:

def get_motion_dsf(image_size, motion_angle, motion_dis):
    """
    获取运动模糊的点扩散函数模板
    :param image_size: 图像的大小
    :param motion_angle: 运动的角度,单位为度,正常直角坐标系方向
    :param motion_dis: 运动的距离,以像素点为单位
    :return: numpy.ndarray
    """
    PSF = np.zeros(image_size)  # 点扩散函数
    x_center = (image_size[0] - 1) / 2
    y_center = (image_size[1] - 1) / 2

    sin_val = math.sin(motion_angle * math.pi / 180)
    cos_val = math.cos(motion_angle * math.pi / 180)

    # 将对应角度上motion_dis个点置成1
    for i in range(motion_dis):
        x_offset = round(sin_val * i)
        y_offset = round(cos_val * i)
        PSF[int(x_center - x_offset), int(y_center + y_offset)] = 1

    return PSF / PSF.sum()    # 归一化


def motion_blurred(img, psf, eps):
    """
    :param input: 输入图像
    :param PSF: 点扩散模板
    :param eps: 噪声功率
    :return:
    """
    img_fft = np.fft.fft2(img)
    psf_fft = np.fft.fft2(psf) + eps
    blurred_img = np.fft.ifft2(img_fft * psf_fft)
    blurred_img = np.abs(np.fft.fftshift(blurred))
    return blurred_img



def motion_test(img):
    PSF = get_motion_dsf(img.shape, 45, 50) # 相对运动的卷积模板
    blurred_img = motion_blurred(img, PSF, 1e-3)

 

3. 运动模糊图像的逆滤波

综上,我们对有运动模糊的图像在频域做除,就可以复原图像,代码如下:

def inverse_filter(img, psf, eps):
    """
    对输入图像进行逆滤波
    :param img: 输入图像
    :param psf: 点扩散模型
    :param eps: 噪声功率
    :return: 逆滤波结果
    """
    img_fft = np.fft.fft2(img)
    psf_fft = np.fft.fft2(psf) + eps
    result = np.fft.ifft2(img_fft / psf_fft)
    result = np.abs(np.fft.fftshift(result))
    return result


def motion_test(img):
    PSF = get_motion_dsf(img.shape, 45, 50) # 相对运动的卷积模板
    blurred_img = motion_blurred(img, PSF, 1e-3)
    back_img = inverse_filter(blurred_img, PSF, 1e-3)

    mp = my_plt(1, 3)
    mp.imshow('motion blur', blurred)

    dst = np.zeros(PSF.shape)
    norm_psf = cv2.normalize(PSF, dst, 1.0, 0.0, cv2.NORM_MINMAX)
    mp.imshow('psf', (norm_psf*255).astype(np.uint8))
    mp.imshow('back img', back_img)

    mp.show()

 

运行结果如下:

其中motion blur为模拟运动模糊之后的结果;psf为点扩散模型,图中为45度的运动的话,图像为一个从中心开始从45度走的线;back img为motion blur逆滤波的结果。

2019-04-19 16:28:28 weixin_42592516 阅读数 85
  • OpenCV3.2 Java图像处理视频学习教程

    OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java OpenCV图像处理部分内容,包括Mat对象使用、图像读写、 基于常用核心API讲述基本原理、使用方法、参数、代码演示、图像处理思路与流程讲授。主要内容包括opencv像素操作、滤波、边缘提取、直线与圆检测、形态学操作与分水岭、图像金子塔融合重建、多尺度模板匹配、opencv人脸检测、OpenCV跟Tomcat使用实现服务器端图像处理服务。

    4124 人正在学习 去看看 贾志刚

**

***【数字图像处理】图像复原–逆滤波 ***

**

1.逆滤波的问题点
图像的老化,可以视为以下这样的一个过程。一个是退化函数的影响(致使图片模糊,褪色等),一个可加性噪声的影响。

用算式表示为

前几篇博文,主要是介绍可加性噪声的去除。本博文,主要介绍图像的逆滤波,即退化函数的去除。然而,逆滤波在空间域内的处理是很不方便的。
简单的来考虑,加法的逆运算是减法,乘法的逆运算的除法,微分的逆运算是积分(严密一点说是不定积分)。那么就可以得到一个简单的结论了,要出去卷积的话,肯定需要用到卷积的逆运算。卷积的逆运算是---------反卷积,额,好像是一个理所应当的名字。我们建立了一个关于卷积的直观认识,将信号反转与滤波器系数求积和。那么,反卷积是一种什么样的运算呢?或者具体的来讲,反卷积的空间运算表现形式是什么样的?这样的考虑其实是多余的,或者说,不用考虑的那么复杂。
在之前的博文中([数字图像处理]频域滤波(1)--基础与低通滤波器),我们得到这样的一个重要的结论。空间域内的卷积,其实就是频域内的乘积。那么这么考虑,就非常简单了,频域内的逆滤波运算,其实就是做除法。我们通过傅里叶变换,可以得到如下一个频域内的老化模型。

这样一个表达式内,没有了卷积运算,是一个很简单的四则运算。那么,所谓的去卷积或者逆滤波,就是将退化函数去除的过程。这样看来的话,直接做除法就可以了,如下所示。

按照教材上的说法,这个表达式很有趣(哪里有趣了?)。首先,必须知道精确的退化函数。其次,如果退化函数含有0值或者极小值的话,会使得噪声项变得极大。
综上所述,其实逆滤波的问题点有两个:、
1.退化函数的推测。
2.尽可能的不让噪声项影响画质。

2.两个退化函数的模型
2.1 大气湍流模型

这个模型很简单,与高斯LPF很相似。伴随着值的增大,得到的图像越来越模糊。以下是这个模型执行的结果。

从表示式上可以看出,这个模型是不会有0值的,不过,这个模型与低通滤波器很相似,阻带的值都是极小的。这可能会使得图像的直接逆滤波失败。这个之后再说。

 2.2 运动模糊模型
 这个模型其实在Photoshop上也有一个同名的滤镜。详细的推倒我就不做了,这个模型的表达式如下所示。

这里有几个参数,说明一下。表示曝光时间,这里的与表示了水平移动量与垂直移动量。值得一提的是,不要忘记下面这样一个重要的极限。

注意,运动模糊后的图像的尺寸会变化,如果还是按照原图截取,会造成图像成分的损失,在复原图像时候效果不是太好,而且不知道导致效果不好的原因,是由于成分的缺失,还是噪声的干扰。所以,这里我适当的扩展了图像的尺寸,以保留图像的所有成分
此模型的执行结果如下所示。

3.图像的逆滤波
3.1 实验步骤与实验用图像
我们是这样的一个实验步骤,首先,使用退化函数处理图像,然后加上适当的可加性噪声。使用这样的图像进行逆滤波实验。
下面是实验用图像。图像的噪声选用的是高斯噪声,均值为0,方差为0.08。退化函数则选用先前叙述的两种,一个个大气湍流模型,一个是运动模糊。

3.2 直接逆滤波
所谓直接逆滤波,就是不管噪声的影响,直接进行逆滤波的方法。

对于大气湍流模型而言,直接逆滤波会得到很不理想的结果。下面是直接逆滤波的实验结果。

 实验结果完全没有任何价值。观察其频谱,频谱的四角很亮,而原本频谱最亮的直流分量都看不到了。所以,这里做一个限制处理。也就是,仅仅只处理靠近直流分量的部分,其他的不做处理。然后处理完的结果,过一个10阶巴特沃斯低通滤波器。可以得到如下结果。

 这样的话,只需要调整限制半径,可以得到一个比之前较好的结果。当然,这招在运动模糊的图片面前,就略显得无力了。结果我就不贴了。

 3.3 维纳滤波器
 维纳滤波器的推导,其实是个很复杂的过程。这里就不推导了,直接看结果,可以得到一些有用的结论。

观察式子,对于合适的常数,有如下两个结论。
1.对于退化函数很小的点,相对而言常数的值很大,其倒数不会太大。
2.对于退化函数很小的点,相对而言常数的值很小,其倒数 基本保持不变。

下面的维纳滤波器的实验结果:

3.4 约束最小二乘方滤波
其实这个方法是一个很好的想法,将图像的能量作为评价图像平滑程度的度量,尽可能的将其平滑。设噪声的能量是一个定值,使用拉普拉斯未定系数法,将其进行迭代,然后解开。这种方法有了很多的变种,包括很著名的TV(Total Variation,全变分)模型,这个我之后的博文会讲到。
在这里,使用本方法的目的是,减少噪音对于逆滤波的影响。表达式如下所示。

这个滤波器,可以消除很严重的噪声,并且复原图像。将实验用图像的噪声的方差提升到0.2,再进行滤波,可以得到如下结果。

4 实验代码

close all;
clear all;
clc;
%% ----------init-----------------------------
f = imread(’./original_DIP.tif’);
f = mat2gray(f,[0 255]);

f_original = f;

[M,N] = size(f);

P = 2M;
Q = 2
N;
fc = zeros(M,N);

for x = 1:1:M
for y = 1:1:N
fc(x,y) = f(x,y) * (-1)^(x+y);
end
end

F_I = fft2(fc,P,Q);

figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel(‘a).Original Image’);

subplot(1,2,2);
imshow(log(1 + abs(F_I)),[ ]);
xlabel(‘b).Fourier spectrum of a).’);
%% ------motion blur------------------
H = zeros(P,Q);
a = 0.02;
b = 0.02;
T = 1;
for x = (-P/2):1:(P/2)-1
for y = (-Q/2):1:(Q/2)-1
R = (xa + yb)pi;
if(R == 0)
H(x+(P/2)+1,y+(Q/2)+1) = T;
else H(x+(P/2)+1,y+(Q/2)+1) = (T/R)
(sin®)exp(-1iR);
end
end
end

%% ------the atmospheric turbulence modle------------------
H_1 = zeros(P,Q);
k = 0.0025;
for x = (-P/2):1:(P/2)-1
for y = (-Q/2):1:(Q/2)-1
D = (x^2 + y2)(5/6);
D_0 = 60;
H_1(x+(P/2)+1,y+(Q/2)+1) = exp(-kD);
end
end
%% -----------noise------------------
a = 0;
b = 0.2;
n_gaussian = a + b .
randn(M,N);

Noise = fft2(n_gaussian,P,Q);

figure();
subplot(1,2,1);
imshow(n_gaussian,[-1 1]);
xlabel(‘a).Gaussian noise’);

subplot(1,2,2);
imshow(log(1 + abs(Noise)),[ ]);
xlabel(‘b).Fourier spectrum of a).’);
%%
G = H .* F_I + Noise;
% G = H_1 .* F_I + Noise;
gc = ifft2(G);

gc = gc(1:1:M+27,1:1:N+27);
for x = 1:1:(M+27)
for y = 1:1:(N+27)
g(x,y) = gc(x,y) .* (-1)^(x+y);
end
end

gc = gc(1:1:M,1:1:N);
for x = 1:1:(M)
for y = 1:1:(N)
g(x,y) = gc(x,y) .* (-1)^(x+y);
end
end

figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel(‘a).Original Image’);

subplot(1,2,2);
imshow(log(1 + abs(F_I)),[ ]);
xlabel(‘b).Fourier spectrum of a).’);

figure();
subplot(1,2,1);
imshow(abs(H),[ ]);
xlabel(‘c).The motion modle H(u,v)(a=0.02,b=0.02,T=1)’);

subplot(1,2,2);
n = 1:1:P;
plot(n,abs(H(400,:)));
axis([0 P 0 1]);grid;
xlabel(‘H(n,400)’);
ylabel(’|H(u,v)|’);

figure();
subplot(1,2,1);
imshow(real(g),[0 1]);
xlabel(‘d).Result image’);

subplot(1,2,2);
imshow(log(1 + abs(G)),[ ]);
xlabel('e).Fourier spectrum of d). ');
%% --------------inverse_filtering---------------------
%F = G ./ H;
%F = G ./ H_1;

for x = (-P/2):1:(P/2)-1
for y = (-Q/2):1:(Q/2)-1
D = (x^2 + y2)(0.5);
if(D < 258)
F(x+(P/2)+1,y+(Q/2)+1) = G(x+(P/2)+1,y+(Q/2)+1) ./ H_1(x+(P/2)+1,y+(Q/2)+1);
% no noise D < 188
% noise D < 56
else F(x+(P/2)+1,y+(Q/2)+1) = G(x+(P/2)+1,y+(Q/2)+1);
end
end
end

% Butterworth_Lowpass_Filters
H_B = zeros(P,Q);
D_0 = 70;
for x = (-P/2):1:(P/2)-1
for y = (-Q/2):1:(Q/2)-1
D = (x^2 + y2)(0.5);
%if(D < 200) H_B(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^100);end
H_B(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^20);
end
end

F = F .* H_B;

f = real(ifft2(F));
f = f(1:1:M,1:1:N);

for x = 1:1:(M)
for y = 1:1:(N)
f(x,y) = f(x,y) * (-1)^(x+y);
end
end
%% ------show Result------------------
figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel(‘a).Result image’);

subplot(1,2,2);
imshow(log(1 + abs(F)),[ ]);
xlabel(‘b).Fourier spectrum of a).’);

figure();
n = 1:1:P;
plot(n,abs(F(400,:)),‘r-’,n,abs(F(400,:)),‘b-’);
axis([0 P 0 1000]);grid;
xlabel(‘Number of rows(400th column)’);
ylabel(‘Fourier amplitude spectrum’);
legend(‘F_{limit}(u,v)’,‘F(u,v)’);

figure();
n = 1:1:P;
plot(n,abs(H(400,:)),‘g-’);
axis([0 P 0 1]);grid;
xlabel(‘H’’{s}(n,400)’);
ylabel(’|H’’
{s}(u,v)|’);
%% ----------Wiener filters-----------
% K = 0.000014;
K = 0.02;
%H_Wiener = ((abs(H_1).2)./((abs(H_1).2)+K)).(1./H_1);
H_Wiener = ((abs(H).2)./((abs(H).2)+K)).
(1./H);

F_Wiener = H_Wiener .* G;
f_Wiener = real(ifft2(F_Wiener));
f_Wiener = f_Wiener(1:1:M,1:1:N);

for x = 1:1:(M)
for y = 1:1:(N)
f_Wiener(x,y) = f_Wiener(x,y) * (-1)^(x+y);
end
end

[SSIM_Wiener mssim] = ssim_index(f_Wiener,f_original,[0.01 0.03],ones(8),1);
SSIM_Wiener
%% ------show Result------------------
figure();
subplot(1,2,1);
%imshow(f_Wiener(1:128,1:128),[0 1]);
imshow(f_Wiener,[0 1]);
xlabel(‘d).Result image by Wiener filter’);

subplot(1,2,2);
imshow(log(1+abs(F_Wiener)),[ ]);
xlabel(‘c).Fourier spectrum of c).’);
% subplot(1,2,2);
% %imshow(f(1:128,1:128),[0 1]);
% imshow(f,[0 1]);
% xlabel(‘e).Result image by inverse filter’);

figure();
n = 1:1:P;
plot(n,abs(F(400,:)),‘r-’,n,abs(F_Wiener(400,:)),‘b-’);
axis([0 P 0 500]);grid;
xlabel(‘Number of rows(400th column)’);
ylabel(‘Fourier amplitude spectrum’);
legend(‘F(u,v)’,‘F_{Wiener}(u,v)’);

figure();
subplot(1,2,1);
imshow(log(1 + abs(H_Wiener)),[ ]);
xlabel(‘a).F_{Wiener}(u,v).’);

subplot(1,2,2);
n = 1:1:P;
plot(n,abs(H_Wiener(400,:)));
axis([0 P 0 80]);grid;
xlabel(‘Number of rows(400th column)’);
ylabel(‘Amplitude spectrum’);

%% ------------Constrained_least_squares_filtering---------
p_laplacian = zeros(M,N);
Laplacian = [ 0 -1 0;
-1 4 -1;
0 -1 0];
p_laplacian(1:3,1:3) = Laplacian;

P = 2M;
Q = 2
N;
for x = 1:1:M
for y = 1:1:N
p_laplacian(x,y) = p_laplacian(x,y) * (-1)^(x+y);
end
end
P_laplacian = fft2(p_laplacian,P,Q);

F_C = zeros(P,Q);
r = 0.2;
H_clsf = ((H’)./((abs(H).^2)+r.*P_laplacian));

F_C = H_clsf .* G;

f_c = real(ifft2(F_C));
f_c = f_c(1:1:M,1:1:N);

for x = 1:1:(M)
for y = 1:1:(N)
f_c(x,y) = f_c(x,y) * (-1)^(x+y);
end
end

%%
figure();
subplot(1,2,1);
imshow(f_c,[0 1]);
xlabel(‘e).Result image by constrained least squares filter (r = 0.2)’);

subplot(1,2,2);
imshow(log(1 + abs(F_C)),[ ]);
xlabel(‘f).Fourier spectrum of c).’);

[SSIM_CLSF mssim] = ssim_index(f_c,f_original,[0.01 0.03],ones(8),1);

figure();
subplot(1,2,1);
imshow(log(1 + abs(H_clsf)),[ ]);
xlabel(‘a).F_{clsf}(u,v).’);

subplot(1,2,2);
n = 1:1:P;
plot(n,abs(H_clsf(400,:)));
axis([0 P 0 80]);grid;
xlabel(‘Number of rows(400th column)’);
ylabel(‘Amplitude spectrum’);

原文发于博客:http://blog.csdn.net/thnh169/

=更新日志=======

NULL


作者:zhoufan900428
来源:CSDN
原文:https://blog.csdn.net/zhoufan900428/article/details/38064125
版权声明:本文为博主原创文章,转载请附上博文链接!

2016-12-31 09:58:11 yi_tech_blog 阅读数 14563
  • OpenCV3.2 Java图像处理视频学习教程

    OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java OpenCV图像处理部分内容,包括Mat对象使用、图像读写、 基于常用核心API讲述基本原理、使用方法、参数、代码演示、图像处理思路与流程讲授。主要内容包括opencv像素操作、滤波、边缘提取、直线与圆检测、形态学操作与分水岭、图像金子塔融合重建、多尺度模板匹配、opencv人脸检测、OpenCV跟Tomcat使用实现服务器端图像处理服务。

    4124 人正在学习 去看看 贾志刚

由退化函数H退化的图像复原的最简单的方法是直接做逆滤波,设图像退化前的傅里叶变换为F(u,v),退化后的傅里叶变换为G(u,v),系统函数即退化函数的傅里叶变换为H(u,v)。

所谓直接逆滤波,就是用退化函数除退化图像的傅里叶变换,得到退化前图像的傅里叶变换的估计,

为F(u,v)的估计,则,同时,其中N(u,v)为噪声的傅里叶变换。因此,可得,由该式可知,即使知道退化函数,也不能准确的复原图像,因为N(u,v)未知,甚至有更糟的情况是如果退化函数是零或是非常小的值,则N(u,v)/H(u,v)的值比较大,很容易支配F(u,v)的估计值。解决这个问题的一种方法是限制滤波的频率,从频谱图可知,高频分量的值接近0,而H(0,0)在频率域中通常是H(u,v)的最高值。因此可缩短滤波半径,使通过的频率接近原点,减少遇到零值的概率。

直接逆滤波的MATLAB代码如下

image_o=imread('C:\Program Files\MATLAB\R2013a\bin\work\图像复原\lena.bmp');
subplot(1,3,1);
imshow(image_o);
title('原图像');
%频率域退化图像,退化函数H(u,v)=exp(-0.0025*( (u-M/2).^2+(v-N/2).^2).^(5/6) )
%傅里叶变换
f=im2double(image_o);
F=fft2(f);
F=fftshift(F);
%执行退化
[M,N]=size(F);
[u,v]=meshgrid(1:M,1:N);%生成二维坐标系
H=exp(-0.0025* ( (u-M/2).^2+(v-N/2).^2).^(5/6) );
F=F.*H;
%傅里叶反变换
X=ifftshift(F);
x=ifft2(X);
x=uint8(abs(x)*256);
subplot(1,3,2);
imshow(x);
%
title('退化图像');

image_d=imread('C:\Program Files\MATLAB\R2013a\bin\work\图像复原\lena_deterioration.bmp');
%直接逆滤波图像复原

ff=im2double(image_d);%将图像灰度值归一化到0-1之间

% 傅里叶变换
f_Id=fft2(ff);
f_Id=fftshift(f_Id);
fH_Id=f_Id;
[M,N]=size(fH_Id);
% 逆滤波
threshold=78;
if threshold>M/2
        %全滤波
        fH_Id=fH_Id./(H+eps);
else
        %对一定半径范围内进行滤波
        for i=1:M
            for j=1:N
                if sqrt((i-M/2).^2+(j-N/2).^2)<threshold
                    fH_Id(i,j)=fH_Id(i,j)./(H(i,j)+eps);
                end
            end
        end
end

% 执行傅立叶逆变换
fH_Id1=ifftshift(fH_Id);
f_new=ifft2(fH_Id1);
f_new=uint8(abs(f_new)*255);
subplot(1,3,3);
imshow(f_new);
title('滤波半径=78的逆滤波复原图像');

效果如下



从实验结果可知,滤波为78比较适宜。

2015-09-23 17:08:49 s12244315 阅读数 9115
  • OpenCV3.2 Java图像处理视频学习教程

    OpenCV3.2 Java图像处理视频培训课程:基于OpenCV新版本3.2.0详细讲述Java OpenCV图像处理部分内容,包括Mat对象使用、图像读写、 基于常用核心API讲述基本原理、使用方法、参数、代码演示、图像处理思路与流程讲授。主要内容包括opencv像素操作、滤波、边缘提取、直线与圆检测、形态学操作与分水岭、图像金子塔融合重建、多尺度模板匹配、opencv人脸检测、OpenCV跟Tomcat使用实现服务器端图像处理服务。

    4124 人正在学习 去看看 贾志刚

1.逆滤波的问题点

      图像的老化,可以视为以下这样的一个过程。一个是退化函数的影响(致使图片模糊,褪色等),一个可加性噪声的影响。

用算式表示为 

    前几篇博文,主要是介绍可加性噪声的去除。本博文,主要介绍图像的逆滤波,即退化函数的去除。然而,逆滤波在空间域内的处理是很不方便的。
    简单的来考虑,加法的逆运算是减法,乘法的逆运算的除法,微分的逆运算是积分(严密一点说是不定积分)。那么就可以得到一个简单的结论了,要出去卷积的话,肯定需要用到卷积的逆运算。卷积的逆运算是---------反卷积,额,好像是一个理所应当的名字。我们建立了一个关于卷积的直观认识,将信号反转与滤波器系数求积和。那么,反卷积是一种什么样的运算呢?或者具体的来讲,反卷积的空间运算表现形式是什么样的?这样的考虑其实是多余的,或者说,不用考虑的那么复杂。
    在之前的博文中([数字图像处理]频域滤波(1)--基础与低通滤波器),我们得到这样的一个重要的结论。空间域内的卷积,其实就是频域内的乘积。那么这么考虑,就非常简单了,频域内的逆滤波运算,其实就是做除法。我们通过傅里叶变换,可以得到如下一个频域内的老化模型。
    

这样一个表达式内,没有了卷积运算,是一个很简单的四则运算。那么,所谓的去卷积或者逆滤波,就是将退化函数去除的过程。这样看来的话,直接做除法就可以了,如下所示。

    按照教材上的说法,这个表达式很有趣(哪里有趣了?)。首先,必须知道精确的退化函数。其次,如果退化函数含有0值或者极小值的话,会使得噪声项变得极大。
    综上所述,其实逆滤波的问题点有两个:、
    1.退化函数的推测。
    2.尽可能的不让噪声项影响画质。
   

2.两个退化函数的模型

   2.1 大气湍流模型 


   这个模型很简单,与高斯LPF很相似。伴随着值的增大,得到的图像越来越模糊。以下是这个模型执行的结果。

从表示式上可以看出,这个模型是不会有0值的,不过,这个模型与低通滤波器很相似,阻带的值都是极小的。这可能会使得图像的直接逆滤波失败。这个之后再说。
    

     2.2 运动模糊模型

     这个模型其实在Photoshop上也有一个同名的滤镜。详细的推倒我就不做了,这个模型的表达式如下所示。

这里有几个参数,说明一下。表示曝光时间,这里的表示了水平移动量与垂直移动量。值得一提的是,不要忘记下面这样一个重要的极限。
注意,运动模糊后的图像的尺寸会变化,如果还是按照原图截取,会造成图像成分的损失,在复原图像时候效果不是太好,而且不知道导致效果不好的原因,是由于成分的缺失,还是噪声的干扰。所以,这里我适当的扩展了图像的尺寸,以保留图像的所有成分
    此模型的执行结果如下所示。


3.图像的逆滤波

   3.1 实验步骤与实验用图像

   我们是这样的一个实验步骤,首先,使用退化函数处理图像,然后加上适当的可加性噪声。使用这样的图像进行逆滤波实验。
   下面是实验用图像。图像的噪声选用的是高斯噪声,均值为0,方差为0.08。退化函数则选用先前叙述的两种,一个个大气湍流模型,一个是运动模糊。

    3.2 直接逆滤波

    所谓直接逆滤波,就是不管噪声的影响,直接进行逆滤波的方法。

对于大气湍流模型而言,直接逆滤波会得到很不理想的结果。下面是直接逆滤波的实验结果。

     实验结果完全没有任何价值。观察其频谱,频谱的四角很亮,而原本频谱最亮的直流分量都看不到了。所以,这里做一个限制处理。也就是,仅仅只处理靠近直流分量的部分,其他的不做处理。然后处理完的结果,过一个10阶巴特沃斯低通滤波器。可以得到如下结果。

     这样的话,只需要调整限制半径,可以得到一个比之前较好的结果。当然,这招在运动模糊的图片面前,就略显得无力了。结果我就不贴了。

     3.3 维纳滤波器

     维纳滤波器的推导,其实是个很复杂的过程。这里就不推导了,直接看结果,可以得到一些有用的结论。
观察式子,对于合适的常数,有如下两个结论。
1.对于退化函数很小的点,相对而言常数的值很大,其倒数不会太大。
2.对于退化函数很小的点,相对而言常数的值很小,其倒数 基本保持不变。

下面的维纳滤波器的实验结果:



    3.4 约束最小二乘方滤波

    其实这个方法是一个很好的想法,将图像的能量作为评价图像平滑程度的度量,尽可能的将其平滑。设噪声的能量是一个定值,使用拉普拉斯未定系数法,将其进行迭代,然后解开。这种方法有了很多的变种,包括很著名的TV(Total Variation,全变分)模型,这个我之后的博文会讲到。
    在这里,使用本方法的目的是,减少噪音对于逆滤波的影响。表达式如下所示。

这个滤波器,可以消除很严重的噪声,并且复原图像。将实验用图像的噪声的方差提升到0.2,再进行滤波,可以得到如下结果。


    4 实验代码

<a target=_blank id="L1" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L1" rel="#L1" style="color: rgb(102, 102, 102); text-decoration: none;">   1</a>
<a target=_blank id="L2" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L2" rel="#L2" style="color: rgb(102, 102, 102); text-decoration: none;">   2</a>
<a target=_blank id="L3" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L3" rel="#L3" style="color: rgb(102, 102, 102); text-decoration: none;">   3</a>
<a target=_blank id="L4" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L4" rel="#L4" style="color: rgb(102, 102, 102); text-decoration: none;">   4</a>
<a target=_blank id="L5" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L5" rel="#L5" style="color: rgb(102, 102, 102); text-decoration: none;">   5</a>
<a target=_blank id="L6" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L6" rel="#L6" style="color: rgb(102, 102, 102); text-decoration: none;">   6</a>
<a target=_blank id="L7" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L7" rel="#L7" style="color: rgb(102, 102, 102); text-decoration: none;">   7</a>
<a target=_blank id="L8" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L8" rel="#L8" style="color: rgb(102, 102, 102); text-decoration: none;">   8</a>
<a target=_blank id="L9" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L9" rel="#L9" style="color: rgb(102, 102, 102); text-decoration: none;">   9</a>
<a target=_blank id="L10" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L10" rel="#L10" style="color: rgb(102, 102, 102); text-decoration: none;">  10</a>
<a target=_blank id="L11" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L11" rel="#L11" style="color: rgb(102, 102, 102); text-decoration: none;">  11</a>
<a target=_blank id="L12" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L12" rel="#L12" style="color: rgb(102, 102, 102); text-decoration: none;">  12</a>
<a target=_blank id="L13" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L13" rel="#L13" style="color: rgb(102, 102, 102); text-decoration: none;">  13</a>
<a target=_blank id="L14" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L14" rel="#L14" style="color: rgb(102, 102, 102); text-decoration: none;">  14</a>
<a target=_blank id="L15" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L15" rel="#L15" style="color: rgb(102, 102, 102); text-decoration: none;">  15</a>
<a target=_blank id="L16" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L16" rel="#L16" style="color: rgb(102, 102, 102); text-decoration: none;">  16</a>
<a target=_blank id="L17" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L17" rel="#L17" style="color: rgb(102, 102, 102); text-decoration: none;">  17</a>
<a target=_blank id="L18" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L18" rel="#L18" style="color: rgb(102, 102, 102); text-decoration: none;">  18</a>
<a target=_blank id="L19" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L19" rel="#L19" style="color: rgb(102, 102, 102); text-decoration: none;">  19</a>
<a target=_blank id="L20" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L20" rel="#L20" style="color: rgb(102, 102, 102); text-decoration: none;">  20</a>
<a target=_blank id="L21" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L21" rel="#L21" style="color: rgb(102, 102, 102); text-decoration: none;">  21</a>
<a target=_blank id="L22" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L22" rel="#L22" style="color: rgb(102, 102, 102); text-decoration: none;">  22</a>
<a target=_blank id="L23" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L23" rel="#L23" style="color: rgb(102, 102, 102); text-decoration: none;">  23</a>
<a target=_blank id="L24" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L24" rel="#L24" style="color: rgb(102, 102, 102); text-decoration: none;">  24</a>
<a target=_blank id="L25" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L25" rel="#L25" style="color: rgb(102, 102, 102); text-decoration: none;">  25</a>
<a target=_blank id="L26" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L26" rel="#L26" style="color: rgb(102, 102, 102); text-decoration: none;">  26</a>
<a target=_blank id="L27" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L27" rel="#L27" style="color: rgb(102, 102, 102); text-decoration: none;">  27</a>
<a target=_blank id="L28" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L28" rel="#L28" style="color: rgb(102, 102, 102); text-decoration: none;">  28</a>
<a target=_blank id="L29" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L29" rel="#L29" style="color: rgb(102, 102, 102); text-decoration: none;">  29</a>
<a target=_blank id="L30" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L30" rel="#L30" style="color: rgb(102, 102, 102); text-decoration: none;">  30</a>
<a target=_blank id="L31" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L31" rel="#L31" style="color: rgb(102, 102, 102); text-decoration: none;">  31</a>
<a target=_blank id="L32" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L32" rel="#L32" style="color: rgb(102, 102, 102); text-decoration: none;">  32</a>
<a target=_blank id="L33" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L33" rel="#L33" style="color: rgb(102, 102, 102); text-decoration: none;">  33</a>
<a target=_blank id="L34" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L34" rel="#L34" style="color: rgb(102, 102, 102); text-decoration: none;">  34</a>
<a target=_blank id="L35" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L35" rel="#L35" style="color: rgb(102, 102, 102); text-decoration: none;">  35</a>
<a target=_blank id="L36" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L36" rel="#L36" style="color: rgb(102, 102, 102); text-decoration: none;">  36</a>
<a target=_blank id="L37" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L37" rel="#L37" style="color: rgb(102, 102, 102); text-decoration: none;">  37</a>
<a target=_blank id="L38" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L38" rel="#L38" style="color: rgb(102, 102, 102); text-decoration: none;">  38</a>
<a target=_blank id="L39" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L39" rel="#L39" style="color: rgb(102, 102, 102); text-decoration: none;">  39</a>
<a target=_blank id="L40" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L40" rel="#L40" style="color: rgb(102, 102, 102); text-decoration: none;">  40</a>
<a target=_blank id="L41" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L41" rel="#L41" style="color: rgb(102, 102, 102); text-decoration: none;">  41</a>
<a target=_blank id="L42" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L42" rel="#L42" style="color: rgb(102, 102, 102); text-decoration: none;">  42</a>
<a target=_blank id="L43" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L43" rel="#L43" style="color: rgb(102, 102, 102); text-decoration: none;">  43</a>
<a target=_blank id="L44" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L44" rel="#L44" style="color: rgb(102, 102, 102); text-decoration: none;">  44</a>
<a target=_blank id="L45" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L45" rel="#L45" style="color: rgb(102, 102, 102); text-decoration: none;">  45</a>
<a target=_blank id="L46" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L46" rel="#L46" style="color: rgb(102, 102, 102); text-decoration: none;">  46</a>
<a target=_blank id="L47" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L47" rel="#L47" style="color: rgb(102, 102, 102); text-decoration: none;">  47</a>
<a target=_blank id="L48" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L48" rel="#L48" style="color: rgb(102, 102, 102); text-decoration: none;">  48</a>
<a target=_blank id="L49" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L49" rel="#L49" style="color: rgb(102, 102, 102); text-decoration: none;">  49</a>
<a target=_blank id="L50" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L50" rel="#L50" style="color: rgb(102, 102, 102); text-decoration: none;">  50</a>
<a target=_blank id="L51" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L51" rel="#L51" style="color: rgb(102, 102, 102); text-decoration: none;">  51</a>
<a target=_blank id="L52" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L52" rel="#L52" style="color: rgb(102, 102, 102); text-decoration: none;">  52</a>
<a target=_blank id="L53" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L53" rel="#L53" style="color: rgb(102, 102, 102); text-decoration: none;">  53</a>
<a target=_blank id="L54" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L54" rel="#L54" style="color: rgb(102, 102, 102); text-decoration: none;">  54</a>
<a target=_blank id="L55" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L55" rel="#L55" style="color: rgb(102, 102, 102); text-decoration: none;">  55</a>
<a target=_blank id="L56" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L56" rel="#L56" style="color: rgb(102, 102, 102); text-decoration: none;">  56</a>
<a target=_blank id="L57" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L57" rel="#L57" style="color: rgb(102, 102, 102); text-decoration: none;">  57</a>
<a target=_blank id="L58" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L58" rel="#L58" style="color: rgb(102, 102, 102); text-decoration: none;">  58</a>
<a target=_blank id="L59" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L59" rel="#L59" style="color: rgb(102, 102, 102); text-decoration: none;">  59</a>
<a target=_blank id="L60" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L60" rel="#L60" style="color: rgb(102, 102, 102); text-decoration: none;">  60</a>
<a target=_blank id="L61" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L61" rel="#L61" style="color: rgb(102, 102, 102); text-decoration: none;">  61</a>
<a target=_blank id="L62" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L62" rel="#L62" style="color: rgb(102, 102, 102); text-decoration: none;">  62</a>
<a target=_blank id="L63" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L63" rel="#L63" style="color: rgb(102, 102, 102); text-decoration: none;">  63</a>
<a target=_blank id="L64" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L64" rel="#L64" style="color: rgb(102, 102, 102); text-decoration: none;">  64</a>
<a target=_blank id="L65" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L65" rel="#L65" style="color: rgb(102, 102, 102); text-decoration: none;">  65</a>
<a target=_blank id="L66" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L66" rel="#L66" style="color: rgb(102, 102, 102); text-decoration: none;">  66</a>
<a target=_blank id="L67" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L67" rel="#L67" style="color: rgb(102, 102, 102); text-decoration: none;">  67</a>
<a target=_blank id="L68" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L68" rel="#L68" style="color: rgb(102, 102, 102); text-decoration: none;">  68</a>
<a target=_blank id="L69" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L69" rel="#L69" style="color: rgb(102, 102, 102); text-decoration: none;">  69</a>
<a target=_blank id="L70" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L70" rel="#L70" style="color: rgb(102, 102, 102); text-decoration: none;">  70</a>
<a target=_blank id="L71" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L71" rel="#L71" style="color: rgb(102, 102, 102); text-decoration: none;">  71</a>
<a target=_blank id="L72" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L72" rel="#L72" style="color: rgb(102, 102, 102); text-decoration: none;">  72</a>
<a target=_blank id="L73" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L73" rel="#L73" style="color: rgb(102, 102, 102); text-decoration: none;">  73</a>
<a target=_blank id="L74" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L74" rel="#L74" style="color: rgb(102, 102, 102); text-decoration: none;">  74</a>
<a target=_blank id="L75" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L75" rel="#L75" style="color: rgb(102, 102, 102); text-decoration: none;">  75</a>
<a target=_blank id="L76" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L76" rel="#L76" style="color: rgb(102, 102, 102); text-decoration: none;">  76</a>
<a target=_blank id="L77" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L77" rel="#L77" style="color: rgb(102, 102, 102); text-decoration: none;">  77</a>
<a target=_blank id="L78" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L78" rel="#L78" style="color: rgb(102, 102, 102); text-decoration: none;">  78</a>
<a target=_blank id="L79" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L79" rel="#L79" style="color: rgb(102, 102, 102); text-decoration: none;">  79</a>
<a target=_blank id="L80" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L80" rel="#L80" style="color: rgb(102, 102, 102); text-decoration: none;">  80</a>
<a target=_blank id="L81" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L81" rel="#L81" style="color: rgb(102, 102, 102); text-decoration: none;">  81</a>
<a target=_blank id="L82" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L82" rel="#L82" style="color: rgb(102, 102, 102); text-decoration: none;">  82</a>
<a target=_blank id="L83" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L83" rel="#L83" style="color: rgb(102, 102, 102); text-decoration: none;">  83</a>
<a target=_blank id="L84" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L84" rel="#L84" style="color: rgb(102, 102, 102); text-decoration: none;">  84</a>
<a target=_blank id="L85" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L85" rel="#L85" style="color: rgb(102, 102, 102); text-decoration: none;">  85</a>
<a target=_blank id="L86" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L86" rel="#L86" style="color: rgb(102, 102, 102); text-decoration: none;">  86</a>
<a target=_blank id="L87" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L87" rel="#L87" style="color: rgb(102, 102, 102); text-decoration: none;">  87</a>
<a target=_blank id="L88" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L88" rel="#L88" style="color: rgb(102, 102, 102); text-decoration: none;">  88</a>
<a target=_blank id="L89" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L89" rel="#L89" style="color: rgb(102, 102, 102); text-decoration: none;">  89</a>
<a target=_blank id="L90" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L90" rel="#L90" style="color: rgb(102, 102, 102); text-decoration: none;">  90</a>
<a target=_blank id="L91" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L91" rel="#L91" style="color: rgb(102, 102, 102); text-decoration: none;">  91</a>
<a target=_blank id="L92" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L92" rel="#L92" style="color: rgb(102, 102, 102); text-decoration: none;">  92</a>
<a target=_blank id="L93" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L93" rel="#L93" style="color: rgb(102, 102, 102); text-decoration: none;">  93</a>
<a target=_blank id="L94" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L94" rel="#L94" style="color: rgb(102, 102, 102); text-decoration: none;">  94</a>
<a target=_blank id="L95" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L95" rel="#L95" style="color: rgb(102, 102, 102); text-decoration: none;">  95</a>
<a target=_blank id="L96" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L96" rel="#L96" style="color: rgb(102, 102, 102); text-decoration: none;">  96</a>
<a target=_blank id="L97" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L97" rel="#L97" style="color: rgb(102, 102, 102); text-decoration: none;">  97</a>
<a target=_blank id="L98" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L98" rel="#L98" style="color: rgb(102, 102, 102); text-decoration: none;">  98</a>
<a target=_blank id="L99" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L99" rel="#L99" style="color: rgb(102, 102, 102); text-decoration: none;">  99</a>
<a target=_blank id="L100" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L100" rel="#L100" style="color: rgb(102, 102, 102); text-decoration: none;"> 100</a>
<a target=_blank id="L101" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L101" rel="#L101" style="color: rgb(102, 102, 102); text-decoration: none;"> 101</a>
<a target=_blank id="L102" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L102" rel="#L102" style="color: rgb(102, 102, 102); text-decoration: none;"> 102</a>
<a target=_blank id="L103" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L103" rel="#L103" style="color: rgb(102, 102, 102); text-decoration: none;"> 103</a>
<a target=_blank id="L104" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L104" rel="#L104" style="color: rgb(102, 102, 102); text-decoration: none;"> 104</a>
<a target=_blank id="L105" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L105" rel="#L105" style="color: rgb(102, 102, 102); text-decoration: none;"> 105</a>
<a target=_blank id="L106" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L106" rel="#L106" style="color: rgb(102, 102, 102); text-decoration: none;"> 106</a>
<a target=_blank id="L107" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L107" rel="#L107" style="color: rgb(102, 102, 102); text-decoration: none;"> 107</a>
<a target=_blank id="L108" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L108" rel="#L108" style="color: rgb(102, 102, 102); text-decoration: none;"> 108</a>
<a target=_blank id="L109" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L109" rel="#L109" style="color: rgb(102, 102, 102); text-decoration: none;"> 109</a>
<a target=_blank id="L110" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L110" rel="#L110" style="color: rgb(102, 102, 102); text-decoration: none;"> 110</a>
<a target=_blank id="L111" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L111" rel="#L111" style="color: rgb(102, 102, 102); text-decoration: none;"> 111</a>
<a target=_blank id="L112" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L112" rel="#L112" style="color: rgb(102, 102, 102); text-decoration: none;"> 112</a>
<a target=_blank id="L113" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L113" rel="#L113" style="color: rgb(102, 102, 102); text-decoration: none;"> 113</a>
<a target=_blank id="L114" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L114" rel="#L114" style="color: rgb(102, 102, 102); text-decoration: none;"> 114</a>
<a target=_blank id="L115" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L115" rel="#L115" style="color: rgb(102, 102, 102); text-decoration: none;"> 115</a>
<a target=_blank id="L116" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L116" rel="#L116" style="color: rgb(102, 102, 102); text-decoration: none;"> 116</a>
<a target=_blank id="L117" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L117" rel="#L117" style="color: rgb(102, 102, 102); text-decoration: none;"> 117</a>
<a target=_blank id="L118" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L118" rel="#L118" style="color: rgb(102, 102, 102); text-decoration: none;"> 118</a>
<a target=_blank id="L119" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L119" rel="#L119" style="color: rgb(102, 102, 102); text-decoration: none;"> 119</a>
<a target=_blank id="L120" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L120" rel="#L120" style="color: rgb(102, 102, 102); text-decoration: none;"> 120</a>
<a target=_blank id="L121" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L121" rel="#L121" style="color: rgb(102, 102, 102); text-decoration: none;"> 121</a>
<a target=_blank id="L122" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L122" rel="#L122" style="color: rgb(102, 102, 102); text-decoration: none;"> 122</a>
<a target=_blank id="L123" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L123" rel="#L123" style="color: rgb(102, 102, 102); text-decoration: none;"> 123</a>
<a target=_blank id="L124" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L124" rel="#L124" style="color: rgb(102, 102, 102); text-decoration: none;"> 124</a>
<a target=_blank id="L125" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L125" rel="#L125" style="color: rgb(102, 102, 102); text-decoration: none;"> 125</a>
<a target=_blank id="L126" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L126" rel="#L126" style="color: rgb(102, 102, 102); text-decoration: none;"> 126</a>
<a target=_blank id="L127" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L127" rel="#L127" style="color: rgb(102, 102, 102); text-decoration: none;"> 127</a>
<a target=_blank id="L128" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L128" rel="#L128" style="color: rgb(102, 102, 102); text-decoration: none;"> 128</a>
<a target=_blank id="L129" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L129" rel="#L129" style="color: rgb(102, 102, 102); text-decoration: none;"> 129</a>
<a target=_blank id="L130" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L130" rel="#L130" style="color: rgb(102, 102, 102); text-decoration: none;"> 130</a>
<a target=_blank id="L131" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L131" rel="#L131" style="color: rgb(102, 102, 102); text-decoration: none;"> 131</a>
<a target=_blank id="L132" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L132" rel="#L132" style="color: rgb(102, 102, 102); text-decoration: none;"> 132</a>
<a target=_blank id="L133" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L133" rel="#L133" style="color: rgb(102, 102, 102); text-decoration: none;"> 133</a>
<a target=_blank id="L134" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L134" rel="#L134" style="color: rgb(102, 102, 102); text-decoration: none;"> 134</a>
<a target=_blank id="L135" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L135" rel="#L135" style="color: rgb(102, 102, 102); text-decoration: none;"> 135</a>
<a target=_blank id="L136" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L136" rel="#L136" style="color: rgb(102, 102, 102); text-decoration: none;"> 136</a>
<a target=_blank id="L137" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L137" rel="#L137" style="color: rgb(102, 102, 102); text-decoration: none;"> 137</a>
<a target=_blank id="L138" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L138" rel="#L138" style="color: rgb(102, 102, 102); text-decoration: none;"> 138</a>
<a target=_blank id="L139" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L139" rel="#L139" style="color: rgb(102, 102, 102); text-decoration: none;"> 139</a>
<a target=_blank id="L140" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L140" rel="#L140" style="color: rgb(102, 102, 102); text-decoration: none;"> 140</a>
<a target=_blank id="L141" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L141" rel="#L141" style="color: rgb(102, 102, 102); text-decoration: none;"> 141</a>
<a target=_blank id="L142" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L142" rel="#L142" style="color: rgb(102, 102, 102); text-decoration: none;"> 142</a>
<a target=_blank id="L143" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L143" rel="#L143" style="color: rgb(102, 102, 102); text-decoration: none;"> 143</a>
<a target=_blank id="L144" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L144" rel="#L144" style="color: rgb(102, 102, 102); text-decoration: none;"> 144</a>
<a target=_blank id="L145" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L145" rel="#L145" style="color: rgb(102, 102, 102); text-decoration: none;"> 145</a>
<a target=_blank id="L146" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L146" rel="#L146" style="color: rgb(102, 102, 102); text-decoration: none;"> 146</a>
<a target=_blank id="L147" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L147" rel="#L147" style="color: rgb(102, 102, 102); text-decoration: none;"> 147</a>
<a target=_blank id="L148" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L148" rel="#L148" style="color: rgb(102, 102, 102); text-decoration: none;"> 148</a>
<a target=_blank id="L149" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L149" rel="#L149" style="color: rgb(102, 102, 102); text-decoration: none;"> 149</a>
<a target=_blank id="L150" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L150" rel="#L150" style="color: rgb(102, 102, 102); text-decoration: none;"> 150</a>
<a target=_blank id="L151" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L151" rel="#L151" style="color: rgb(102, 102, 102); text-decoration: none;"> 151</a>
<a target=_blank id="L152" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L152" rel="#L152" style="color: rgb(102, 102, 102); text-decoration: none;"> 152</a>
<a target=_blank id="L153" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L153" rel="#L153" style="color: rgb(102, 102, 102); text-decoration: none;"> 153</a>
<a target=_blank id="L154" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L154" rel="#L154" style="color: rgb(102, 102, 102); text-decoration: none;"> 154</a>
<a target=_blank id="L155" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L155" rel="#L155" style="color: rgb(102, 102, 102); text-decoration: none;"> 155</a>
<a target=_blank id="L156" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L156" rel="#L156" style="color: rgb(102, 102, 102); text-decoration: none;"> 156</a>
<a target=_blank id="L157" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L157" rel="#L157" style="color: rgb(102, 102, 102); text-decoration: none;"> 157</a>
<a target=_blank id="L158" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L158" rel="#L158" style="color: rgb(102, 102, 102); text-decoration: none;"> 158</a>
<a target=_blank id="L159" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L159" rel="#L159" style="color: rgb(102, 102, 102); text-decoration: none;"> 159</a>
<a target=_blank id="L160" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L160" rel="#L160" style="color: rgb(102, 102, 102); text-decoration: none;"> 160</a>
<a target=_blank id="L161" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L161" rel="#L161" style="color: rgb(102, 102, 102); text-decoration: none;"> 161</a>
<a target=_blank id="L162" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L162" rel="#L162" style="color: rgb(102, 102, 102); text-decoration: none;"> 162</a>
<a target=_blank id="L163" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L163" rel="#L163" style="color: rgb(102, 102, 102); text-decoration: none;"> 163</a>
<a target=_blank id="L164" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L164" rel="#L164" style="color: rgb(102, 102, 102); text-decoration: none;"> 164</a>
<a target=_blank id="L165" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L165" rel="#L165" style="color: rgb(102, 102, 102); text-decoration: none;"> 165</a>
<a target=_blank id="L166" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L166" rel="#L166" style="color: rgb(102, 102, 102); text-decoration: none;"> 166</a>
<a target=_blank id="L167" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L167" rel="#L167" style="color: rgb(102, 102, 102); text-decoration: none;"> 167</a>
<a target=_blank id="L168" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L168" rel="#L168" style="color: rgb(102, 102, 102); text-decoration: none;"> 168</a>
<a target=_blank id="L169" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L169" rel="#L169" style="color: rgb(102, 102, 102); text-decoration: none;"> 169</a>
<a target=_blank id="L170" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L170" rel="#L170" style="color: rgb(102, 102, 102); text-decoration: none;"> 170</a>
<a target=_blank id="L171" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L171" rel="#L171" style="color: rgb(102, 102, 102); text-decoration: none;"> 171</a>
<a target=_blank id="L172" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L172" rel="#L172" style="color: rgb(102, 102, 102); text-decoration: none;"> 172</a>
<a target=_blank id="L173" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L173" rel="#L173" style="color: rgb(102, 102, 102); text-decoration: none;"> 173</a>
<a target=_blank id="L174" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L174" rel="#L174" style="color: rgb(102, 102, 102); text-decoration: none;"> 174</a>
<a target=_blank id="L175" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L175" rel="#L175" style="color: rgb(102, 102, 102); text-decoration: none;"> 175</a>
<a target=_blank id="L176" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L176" rel="#L176" style="color: rgb(102, 102, 102); text-decoration: none;"> 176</a>
<a target=_blank id="L177" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L177" rel="#L177" style="color: rgb(102, 102, 102); text-decoration: none;"> 177</a>
<a target=_blank id="L178" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L178" rel="#L178" style="color: rgb(102, 102, 102); text-decoration: none;"> 178</a>
<a target=_blank id="L179" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L179" rel="#L179" style="color: rgb(102, 102, 102); text-decoration: none;"> 179</a>
<a target=_blank id="L180" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L180" rel="#L180" style="color: rgb(102, 102, 102); text-decoration: none;"> 180</a>
<a target=_blank id="L181" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L181" rel="#L181" style="color: rgb(102, 102, 102); text-decoration: none;"> 181</a>
<a target=_blank id="L182" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L182" rel="#L182" style="color: rgb(102, 102, 102); text-decoration: none;"> 182</a>
<a target=_blank id="L183" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L183" rel="#L183" style="color: rgb(102, 102, 102); text-decoration: none;"> 183</a>
<a target=_blank id="L184" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L184" rel="#L184" style="color: rgb(102, 102, 102); text-decoration: none;"> 184</a>
<a target=_blank id="L185" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L185" rel="#L185" style="color: rgb(102, 102, 102); text-decoration: none;"> 185</a>
<a target=_blank id="L186" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L186" rel="#L186" style="color: rgb(102, 102, 102); text-decoration: none;"> 186</a>
<a target=_blank id="L187" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L187" rel="#L187" style="color: rgb(102, 102, 102); text-decoration: none;"> 187</a>
<a target=_blank id="L188" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L188" rel="#L188" style="color: rgb(102, 102, 102); text-decoration: none;"> 188</a>
<a target=_blank id="L189" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L189" rel="#L189" style="color: rgb(102, 102, 102); text-decoration: none;"> 189</a>
<a target=_blank id="L190" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L190" rel="#L190" style="color: rgb(102, 102, 102); text-decoration: none;"> 190</a>
<a target=_blank id="L191" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L191" rel="#L191" style="color: rgb(102, 102, 102); text-decoration: none;"> 191</a>
<a target=_blank id="L192" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L192" rel="#L192" style="color: rgb(102, 102, 102); text-decoration: none;"> 192</a>
<a target=_blank id="L193" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L193" rel="#L193" style="color: rgb(102, 102, 102); text-decoration: none;"> 193</a>
<a target=_blank id="L194" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L194" rel="#L194" style="color: rgb(102, 102, 102); text-decoration: none;"> 194</a>
<a target=_blank id="L195" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L195" rel="#L195" style="color: rgb(102, 102, 102); text-decoration: none;"> 195</a>
<a target=_blank id="L196" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L196" rel="#L196" style="color: rgb(102, 102, 102); text-decoration: none;"> 196</a>
<a target=_blank id="L197" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L197" rel="#L197" style="color: rgb(102, 102, 102); text-decoration: none;"> 197</a>
<a target=_blank id="L198" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L198" rel="#L198" style="color: rgb(102, 102, 102); text-decoration: none;"> 198</a>
<a target=_blank id="L199" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L199" rel="#L199" style="color: rgb(102, 102, 102); text-decoration: none;"> 199</a>
<a target=_blank id="L200" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L200" rel="#L200" style="color: rgb(102, 102, 102); text-decoration: none;"> 200</a>
<a target=_blank id="L201" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L201" rel="#L201" style="color: rgb(102, 102, 102); text-decoration: none;"> 201</a>
<a target=_blank id="L202" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L202" rel="#L202" style="color: rgb(102, 102, 102); text-decoration: none;"> 202</a>
<a target=_blank id="L203" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L203" rel="#L203" style="color: rgb(102, 102, 102); text-decoration: none;"> 203</a>
<a target=_blank id="L204" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L204" rel="#L204" style="color: rgb(102, 102, 102); text-decoration: none;"> 204</a>
<a target=_blank id="L205" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L205" rel="#L205" style="color: rgb(102, 102, 102); text-decoration: none;"> 205</a>
<a target=_blank id="L206" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L206" rel="#L206" style="color: rgb(102, 102, 102); text-decoration: none;"> 206</a>
<a target=_blank id="L207" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L207" rel="#L207" style="color: rgb(102, 102, 102); text-decoration: none;"> 207</a>
<a target=_blank id="L208" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L208" rel="#L208" style="color: rgb(102, 102, 102); text-decoration: none;"> 208</a>
<a target=_blank id="L209" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L209" rel="#L209" style="color: rgb(102, 102, 102); text-decoration: none;"> 209</a>
<a target=_blank id="L210" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L210" rel="#L210" style="color: rgb(102, 102, 102); text-decoration: none;"> 210</a>
<a target=_blank id="L211" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L211" rel="#L211" style="color: rgb(102, 102, 102); text-decoration: none;"> 211</a>
<a target=_blank id="L212" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L212" rel="#L212" style="color: rgb(102, 102, 102); text-decoration: none;"> 212</a>
<a target=_blank id="L213" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L213" rel="#L213" style="color: rgb(102, 102, 102); text-decoration: none;"> 213</a>
<a target=_blank id="L214" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L214" rel="#L214" style="color: rgb(102, 102, 102); text-decoration: none;"> 214</a>
<a target=_blank id="L215" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L215" rel="#L215" style="color: rgb(102, 102, 102); text-decoration: none;"> 215</a>
<a target=_blank id="L216" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L216" rel="#L216" style="color: rgb(102, 102, 102); text-decoration: none;"> 216</a>
<a target=_blank id="L217" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L217" rel="#L217" style="color: rgb(102, 102, 102); text-decoration: none;"> 217</a>
<a target=_blank id="L218" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L218" rel="#L218" style="color: rgb(102, 102, 102); text-decoration: none;"> 218</a>
<a target=_blank id="L219" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L219" rel="#L219" style="color: rgb(102, 102, 102); text-decoration: none;"> 219</a>
<a target=_blank id="L220" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L220" rel="#L220" style="color: rgb(102, 102, 102); text-decoration: none;"> 220</a>
<a target=_blank id="L221" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L221" rel="#L221" style="color: rgb(102, 102, 102); text-decoration: none;"> 221</a>
<a target=_blank id="L222" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L222" rel="#L222" style="color: rgb(102, 102, 102); text-decoration: none;"> 222</a>
<a target=_blank id="L223" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L223" rel="#L223" style="color: rgb(102, 102, 102); text-decoration: none;"> 223</a>
<a target=_blank id="L224" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L224" rel="#L224" style="color: rgb(102, 102, 102); text-decoration: none;"> 224</a>
<a target=_blank id="L225" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L225" rel="#L225" style="color: rgb(102, 102, 102); text-decoration: none;"> 225</a>
<a target=_blank id="L226" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L226" rel="#L226" style="color: rgb(102, 102, 102); text-decoration: none;"> 226</a>
<a target=_blank id="L227" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L227" rel="#L227" style="color: rgb(102, 102, 102); text-decoration: none;"> 227</a>
<a target=_blank id="L228" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L228" rel="#L228" style="color: rgb(102, 102, 102); text-decoration: none;"> 228</a>
<a target=_blank id="L229" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L229" rel="#L229" style="color: rgb(102, 102, 102); text-decoration: none;"> 229</a>
<a target=_blank id="L230" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L230" rel="#L230" style="color: rgb(102, 102, 102); text-decoration: none;"> 230</a>
<a target=_blank id="L231" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L231" rel="#L231" style="color: rgb(102, 102, 102); text-decoration: none;"> 231</a>
<a target=_blank id="L232" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L232" rel="#L232" style="color: rgb(102, 102, 102); text-decoration: none;"> 232</a>
<a target=_blank id="L233" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L233" rel="#L233" style="color: rgb(102, 102, 102); text-decoration: none;"> 233</a>
<a target=_blank id="L234" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L234" rel="#L234" style="color: rgb(102, 102, 102); text-decoration: none;"> 234</a>
<a target=_blank id="L235" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L235" rel="#L235" style="color: rgb(102, 102, 102); text-decoration: none;"> 235</a>
<a target=_blank id="L236" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L236" rel="#L236" style="color: rgb(102, 102, 102); text-decoration: none;"> 236</a>
<a target=_blank id="L237" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L237" rel="#L237" style="color: rgb(102, 102, 102); text-decoration: none;"> 237</a>
<a target=_blank id="L238" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L238" rel="#L238" style="color: rgb(102, 102, 102); text-decoration: none;"> 238</a>
<a target=_blank id="L239" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L239" rel="#L239" style="color: rgb(102, 102, 102); text-decoration: none;"> 239</a>
<a target=_blank id="L240" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L240" rel="#L240" style="color: rgb(102, 102, 102); text-decoration: none;"> 240</a>
<a target=_blank id="L241" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L241" rel="#L241" style="color: rgb(102, 102, 102); text-decoration: none;"> 241</a>
<a target=_blank id="L242" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L242" rel="#L242" style="color: rgb(102, 102, 102); text-decoration: none;"> 242</a>
<a target=_blank id="L243" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L243" rel="#L243" style="color: rgb(102, 102, 102); text-decoration: none;"> 243</a>
<a target=_blank id="L244" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L244" rel="#L244" style="color: rgb(102, 102, 102); text-decoration: none;"> 244</a>
<a target=_blank id="L245" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L245" rel="#L245" style="color: rgb(102, 102, 102); text-decoration: none;"> 245</a>
<a target=_blank id="L246" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L246" rel="#L246" style="color: rgb(102, 102, 102); text-decoration: none;"> 246</a>
<a target=_blank id="L247" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L247" rel="#L247" style="color: rgb(102, 102, 102); text-decoration: none;"> 247</a>
<a target=_blank id="L248" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L248" rel="#L248" style="color: rgb(102, 102, 102); text-decoration: none;"> 248</a>
<a target=_blank id="L249" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L249" rel="#L249" style="color: rgb(102, 102, 102); text-decoration: none;"> 249</a>
<a target=_blank id="L250" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L250" rel="#L250" style="color: rgb(102, 102, 102); text-decoration: none;"> 250</a>
<a target=_blank id="L251" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L251" rel="#L251" style="color: rgb(102, 102, 102); text-decoration: none;"> 251</a>
<a target=_blank id="L252" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L252" rel="#L252" style="color: rgb(102, 102, 102); text-decoration: none;"> 252</a>
<a target=_blank id="L253" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L253" rel="#L253" style="color: rgb(102, 102, 102); text-decoration: none;"> 253</a>
<a target=_blank id="L254" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L254" rel="#L254" style="color: rgb(102, 102, 102); text-decoration: none;"> 254</a>
<a target=_blank id="L255" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L255" rel="#L255" style="color: rgb(102, 102, 102); text-decoration: none;"> 255</a>
<a target=_blank id="L256" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L256" rel="#L256" style="color: rgb(102, 102, 102); text-decoration: none;"> 256</a>
<a target=_blank id="L257" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L257" rel="#L257" style="color: rgb(102, 102, 102); text-decoration: none;"> 257</a>
<a target=_blank id="L258" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L258" rel="#L258" style="color: rgb(102, 102, 102); text-decoration: none;"> 258</a>
<a target=_blank id="L259" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L259" rel="#L259" style="color: rgb(102, 102, 102); text-decoration: none;"> 259</a>
<a target=_blank id="L260" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L260" rel="#L260" style="color: rgb(102, 102, 102); text-decoration: none;"> 260</a>
<a target=_blank id="L261" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L261" rel="#L261" style="color: rgb(102, 102, 102); text-decoration: none;"> 261</a>
<a target=_blank id="L262" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L262" rel="#L262" style="color: rgb(102, 102, 102); text-decoration: none;"> 262</a>
<a target=_blank id="L263" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L263" rel="#L263" style="color: rgb(102, 102, 102); text-decoration: none;"> 263</a>
<a target=_blank id="L264" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L264" rel="#L264" style="color: rgb(102, 102, 102); text-decoration: none;"> 264</a>
<a target=_blank id="L265" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L265" rel="#L265" style="color: rgb(102, 102, 102); text-decoration: none;"> 265</a>
<a target=_blank id="L266" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L266" rel="#L266" style="color: rgb(102, 102, 102); text-decoration: none;"> 266</a>
<a target=_blank id="L267" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L267" rel="#L267" style="color: rgb(102, 102, 102); text-decoration: none;"> 267</a>
<a target=_blank id="L268" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L268" rel="#L268" style="color: rgb(102, 102, 102); text-decoration: none;"> 268</a>
<a target=_blank id="L269" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L269" rel="#L269" style="color: rgb(102, 102, 102); text-decoration: none;"> 269</a>
<a target=_blank id="L270" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L270" rel="#L270" style="color: rgb(102, 102, 102); text-decoration: none;"> 270</a>
<a target=_blank id="L271" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L271" rel="#L271" style="color: rgb(102, 102, 102); text-decoration: none;"> 271</a>
<a target=_blank id="L272" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L272" rel="#L272" style="color: rgb(102, 102, 102); text-decoration: none;"> 272</a>
<a target=_blank id="L273" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L273" rel="#L273" style="color: rgb(102, 102, 102); text-decoration: none;"> 273</a>
<a target=_blank id="L274" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L274" rel="#L274" style="color: rgb(102, 102, 102); text-decoration: none;"> 274</a>
<a target=_blank id="L275" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L275" rel="#L275" style="color: rgb(102, 102, 102); text-decoration: none;"> 275</a>
<a target=_blank id="L276" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L276" rel="#L276" style="color: rgb(102, 102, 102); text-decoration: none;"> 276</a>
<a target=_blank id="L277" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L277" rel="#L277" style="color: rgb(102, 102, 102); text-decoration: none;"> 277</a>
<a target=_blank id="L278" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L278" rel="#L278" style="color: rgb(102, 102, 102); text-decoration: none;"> 278</a>
<a target=_blank id="L279" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L279" rel="#L279" style="color: rgb(102, 102, 102); text-decoration: none;"> 279</a>
<a target=_blank id="L280" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L280" rel="#L280" style="color: rgb(102, 102, 102); text-decoration: none;"> 280</a>
<a target=_blank id="L281" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L281" rel="#L281" style="color: rgb(102, 102, 102); text-decoration: none;"> 281</a>
<a target=_blank id="L282" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L282" rel="#L282" style="color: rgb(102, 102, 102); text-decoration: none;"> 282</a>
<a target=_blank id="L283" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L283" rel="#L283" style="color: rgb(102, 102, 102); text-decoration: none;"> 283</a>
<a target=_blank id="L284" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L284" rel="#L284" style="color: rgb(102, 102, 102); text-decoration: none;"> 284</a>
<a target=_blank id="L285" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L285" rel="#L285" style="color: rgb(102, 102, 102); text-decoration: none;"> 285</a>
<a target=_blank id="L286" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L286" rel="#L286" style="color: rgb(102, 102, 102); text-decoration: none;"> 286</a>
<a target=_blank id="L287" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L287" rel="#L287" style="color: rgb(102, 102, 102); text-decoration: none;"> 287</a>
<a target=_blank id="L288" href="http://blog.csdn.net/zhoufan900428/article/details/38064125#L288" rel="#L288" style="color: rgb(102, 102, 102); text-decoration: none;"> 288</a>
close all;
clear all;
clc;
%% ----------init-----------------------------
f = imread('./original_DIP.tif');
f = mat2gray(f,[0 255]);
f_original = f;
[M,N] = size(f);
P = 2*M;
Q = 2*N;
fc = zeros(M,N);
for x = 1:1:M
for y = 1:1:N
fc(x,y) = f(x,y) * (-1)^(x+y);
end
end
F_I = fft2(fc,P,Q);
figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('a).Original Image');
subplot(1,2,2);
imshow(log(1 + abs(F_I)),[ ]);
xlabel('b).Fourier spectrum of a).');
%% ------motion blur------------------
H = zeros(P,Q);
a = 0.02;
b = 0.02;
T = 1;
for x = (-P/2):1:(P/2)-1
for y = (-Q/2):1:(Q/2)-1
R = (x*a + y*b)*pi;
if(R == 0)
H(x+(P/2)+1,y+(Q/2)+1) = T;
else H(x+(P/2)+1,y+(Q/2)+1) = (T/R)*(sin(R))*exp(-1i*R);
end
end
end
%% ------the atmospheric turbulence modle------------------
H_1 = zeros(P,Q);
k = 0.0025;
for x = (-P/2):1:(P/2)-1
for y = (-Q/2):1:(Q/2)-1
D = (x^2 + y^2)^(5/6);
D_0 = 60;
H_1(x+(P/2)+1,y+(Q/2)+1) = exp(-k*D);
end
end
%% -----------noise------------------
a = 0;
b = 0.2;
n_gaussian = a + b .* randn(M,N);
Noise = fft2(n_gaussian,P,Q);
figure();
subplot(1,2,1);
imshow(n_gaussian,[-1 1]);
xlabel('a).Gaussian noise');
subplot(1,2,2);
imshow(log(1 + abs(Noise)),[ ]);
xlabel('b).Fourier spectrum of a).');
%%
G = H .* F_I + Noise;
% G = H_1 .* F_I + Noise;
gc = ifft2(G);
gc = gc(1:1:M+27,1:1:N+27);
for x = 1:1:(M+27)
for y = 1:1:(N+27)
g(x,y) = gc(x,y) .* (-1)^(x+y);
end
end
gc = gc(1:1:M,1:1:N);
for x = 1:1:(M)
for y = 1:1:(N)
g(x,y) = gc(x,y) .* (-1)^(x+y);
end
end
figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('a).Original Image');
subplot(1,2,2);
imshow(log(1 + abs(F_I)),[ ]);
xlabel('b).Fourier spectrum of a).');
figure();
subplot(1,2,1);
imshow(abs(H),[ ]);
xlabel('c).The motion modle H(u,v)(a=0.02,b=0.02,T=1)');
subplot(1,2,2);
n = 1:1:P;
plot(n,abs(H(400,:)));
axis([0 P 0 1]);grid;
xlabel('H(n,400)');
ylabel('|H(u,v)|');
figure();
subplot(1,2,1);
imshow(real(g),[0 1]);
xlabel('d).Result image');
subplot(1,2,2);
imshow(log(1 + abs(G)),[ ]);
xlabel('e).Fourier spectrum of d). ');
%% --------------inverse_filtering---------------------
%F = G ./ H;
%F = G ./ H_1;
for x = (-P/2):1:(P/2)-1
for y = (-Q/2):1:(Q/2)-1
D = (x^2 + y^2)^(0.5);
if(D < 258)
F(x+(P/2)+1,y+(Q/2)+1) = G(x+(P/2)+1,y+(Q/2)+1) ./ H_1(x+(P/2)+1,y+(Q/2)+1);
% no noise D < 188
% noise D < 56
else F(x+(P/2)+1,y+(Q/2)+1) = G(x+(P/2)+1,y+(Q/2)+1);
end
end
end
% Butterworth_Lowpass_Filters
H_B = zeros(P,Q);
D_0 = 70;
for x = (-P/2):1:(P/2)-1
for y = (-Q/2):1:(Q/2)-1
D = (x^2 + y^2)^(0.5);
%if(D < 200) H_B(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^100);end
H_B(x+(P/2)+1,y+(Q/2)+1) = 1/(1+(D/D_0)^20);
end
end
F = F .* H_B;
f = real(ifft2(F));
f = f(1:1:M,1:1:N);
for x = 1:1:(M)
for y = 1:1:(N)
f(x,y) = f(x,y) * (-1)^(x+y);
end
end
%% ------show Result------------------
figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('a).Result image');
subplot(1,2,2);
imshow(log(1 + abs(F)),[ ]);
xlabel('b).Fourier spectrum of a).');
figure();
n = 1:1:P;
plot(n,abs(F(400,:)),'r-',n,abs(F(400,:)),'b-');
axis([0 P 0 1000]);grid;
xlabel('Number of rows(400th column)');
ylabel('Fourier amplitude spectrum');
legend('F_{limit}(u,v)','F(u,v)');
figure();
n = 1:1:P;
plot(n,abs(H(400,:)),'g-');
axis([0 P 0 1]);grid;
xlabel('H''_{s}(n,400)');
ylabel('|H''_{s}(u,v)|');
%% ----------Wiener filters-----------
% K = 0.000014;
K = 0.02;
%H_Wiener = ((abs(H_1).^2)./((abs(H_1).^2)+K)).*(1./H_1);
H_Wiener = ((abs(H).^2)./((abs(H).^2)+K)).*(1./H);
F_Wiener = H_Wiener .* G;
f_Wiener = real(ifft2(F_Wiener));
f_Wiener = f_Wiener(1:1:M,1:1:N);
for x = 1:1:(M)
for y = 1:1:(N)
f_Wiener(x,y) = f_Wiener(x,y) * (-1)^(x+y);
end
end
[SSIM_Wiener mssim] = ssim_index(f_Wiener,f_original,[0.01 0.03],ones(8),1);
SSIM_Wiener
%% ------show Result------------------
figure();
subplot(1,2,1);
%imshow(f_Wiener(1:128,1:128),[0 1]);
imshow(f_Wiener,[0 1]);
xlabel('d).Result image by Wiener filter');
subplot(1,2,2);
imshow(log(1+abs(F_Wiener)),[ ]);
xlabel('c).Fourier spectrum of c).');
% subplot(1,2,2);
% %imshow(f(1:128,1:128),[0 1]);
% imshow(f,[0 1]);
% xlabel('e).Result image by inverse filter');
figure();
n = 1:1:P;
plot(n,abs(F(400,:)),'r-',n,abs(F_Wiener(400,:)),'b-');
axis([0 P 0 500]);grid;
xlabel('Number of rows(400th column)');
ylabel('Fourier amplitude spectrum');
legend('F(u,v)','F_{Wiener}(u,v)');
figure();
subplot(1,2,1);
imshow(log(1 + abs(H_Wiener)),[ ]);
xlabel('a).F_{Wiener}(u,v).');
subplot(1,2,2);
n = 1:1:P;
plot(n,abs(H_Wiener(400,:)));
axis([0 P 0 80]);grid;
xlabel('Number of rows(400th column)');
ylabel('Amplitude spectrum');
%% ------------Constrained_least_squares_filtering---------
p_laplacian = zeros(M,N);
Laplacian = [ 0 -1 0;
-1 4 -1;
0 -1 0];
p_laplacian(1:3,1:3) = Laplacian;
P = 2*M;
Q = 2*N;
for x = 1:1:M
for y = 1:1:N
p_laplacian(x,y) = p_laplacian(x,y) * (-1)^(x+y);
end
end
P_laplacian = fft2(p_laplacian,P,Q);
F_C = zeros(P,Q);
r = 0.2;
H_clsf = ((H')./((abs(H).^2)+r.*P_laplacian));
F_C = H_clsf .* G;
f_c = real(ifft2(F_C));
f_c = f_c(1:1:M,1:1:N);
for x = 1:1:(M)
for y = 1:1:(N)
f_c(x,y) = f_c(x,y) * (-1)^(x+y);
end
end
%%
figure();
subplot(1,2,1);
imshow(f_c,[0 1]);
xlabel('e).Result image by constrained least squares filter (r = 0.2)');
subplot(1,2,2);
imshow(log(1 + abs(F_C)),[ ]);
xlabel('f).Fourier spectrum of c).');
[SSIM_CLSF mssim] = ssim_index(f_c,f_original,[0.01 0.03],ones(8),1);
figure();
subplot(1,2,1);
imshow(log(1 + abs(H_clsf)),[ ]);
xlabel('a).F_{clsf}(u,v).');
subplot(1,2,2);
n = 1:1:P;
plot(n,abs(H_clsf(400,:)));
axis([0 P 0 80]);grid;
xlabel('Number of rows(400th column)');
ylabel('Amplitude spectrum');
没有更多推荐了,返回首页