使用方向梯度直方图估计图像旋转角度

下面的代码通过计算图像中给定区域的方向梯度直方图来估计图像的旋转角度

主要内容包括:

一、计算局部图像块方向梯度直方图的函数

二、把给定图像按照给定的角度旋转

三、如何利用旋转后的图像的方向梯度直方图和原图像的方向梯度直方图来估计旋转角度

四、绘制方向梯度直方图

计算效果如下次:


主要代码如下:

<a target=_blank id="L1" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L1" rel="#L1" style="color: rgb(102, 102, 102); text-decoration: none;">   1</a>
<a target=_blank id="L2" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L2" rel="#L2" style="color: rgb(102, 102, 102); text-decoration: none;">   2</a>
<a target=_blank id="L3" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L3" rel="#L3" style="color: rgb(102, 102, 102); text-decoration: none;">   3</a>
<a target=_blank id="L4" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L4" rel="#L4" style="color: rgb(102, 102, 102); text-decoration: none;">   4</a>
<a target=_blank id="L5" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L5" rel="#L5" style="color: rgb(102, 102, 102); text-decoration: none;">   5</a>
<a target=_blank id="L6" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L6" rel="#L6" style="color: rgb(102, 102, 102); text-decoration: none;">   6</a>
<a target=_blank id="L7" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L7" rel="#L7" style="color: rgb(102, 102, 102); text-decoration: none;">   7</a>
<a target=_blank id="L8" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L8" rel="#L8" style="color: rgb(102, 102, 102); text-decoration: none;">   8</a>
<a target=_blank id="L9" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L9" rel="#L9" style="color: rgb(102, 102, 102); text-decoration: none;">   9</a>
<a target=_blank id="L10" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L10" rel="#L10" style="color: rgb(102, 102, 102); text-decoration: none;">  10</a>
<a target=_blank id="L11" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L11" rel="#L11" style="color: rgb(102, 102, 102); text-decoration: none;">  11</a>
<a target=_blank id="L12" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L12" rel="#L12" style="color: rgb(102, 102, 102); text-decoration: none;">  12</a>
<a target=_blank id="L13" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L13" rel="#L13" style="color: rgb(102, 102, 102); text-decoration: none;">  13</a>
<a target=_blank id="L14" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L14" rel="#L14" style="color: rgb(102, 102, 102); text-decoration: none;">  14</a>
<a target=_blank id="L15" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L15" rel="#L15" style="color: rgb(102, 102, 102); text-decoration: none;">  15</a>
<a target=_blank id="L16" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L16" rel="#L16" style="color: rgb(102, 102, 102); text-decoration: none;">  16</a>
<a target=_blank id="L17" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L17" rel="#L17" style="color: rgb(102, 102, 102); text-decoration: none;">  17</a>
<a target=_blank id="L18" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L18" rel="#L18" style="color: rgb(102, 102, 102); text-decoration: none;">  18</a>
<a target=_blank id="L19" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L19" rel="#L19" style="color: rgb(102, 102, 102); text-decoration: none;">  19</a>
<a target=_blank id="L20" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L20" rel="#L20" style="color: rgb(102, 102, 102); text-decoration: none;">  20</a>
<a target=_blank id="L21" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L21" rel="#L21" style="color: rgb(102, 102, 102); text-decoration: none;">  21</a>
<a target=_blank id="L22" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L22" rel="#L22" style="color: rgb(102, 102, 102); text-decoration: none;">  22</a>
<a target=_blank id="L23" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L23" rel="#L23" style="color: rgb(102, 102, 102); text-decoration: none;">  23</a>
<a target=_blank id="L24" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L24" rel="#L24" style="color: rgb(102, 102, 102); text-decoration: none;">  24</a>
<a target=_blank id="L25" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L25" rel="#L25" style="color: rgb(102, 102, 102); text-decoration: none;">  25</a>
<a target=_blank id="L26" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L26" rel="#L26" style="color: rgb(102, 102, 102); text-decoration: none;">  26</a>
<a target=_blank id="L27" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L27" rel="#L27" style="color: rgb(102, 102, 102); text-decoration: none;">  27</a>
<a target=_blank id="L28" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L28" rel="#L28" style="color: rgb(102, 102, 102); text-decoration: none;">  28</a>
<a target=_blank id="L29" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L29" rel="#L29" style="color: rgb(102, 102, 102); text-decoration: none;">  29</a>
<a target=_blank id="L30" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L30" rel="#L30" style="color: rgb(102, 102, 102); text-decoration: none;">  30</a>
<a target=_blank id="L31" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L31" rel="#L31" style="color: rgb(102, 102, 102); text-decoration: none;">  31</a>
<a target=_blank id="L32" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L32" rel="#L32" style="color: rgb(102, 102, 102); text-decoration: none;">  32</a>
<a target=_blank id="L33" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L33" rel="#L33" style="color: rgb(102, 102, 102); text-decoration: none;">  33</a>
<a target=_blank id="L34" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L34" rel="#L34" style="color: rgb(102, 102, 102); text-decoration: none;">  34</a>
<a target=_blank id="L35" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L35" rel="#L35" style="color: rgb(102, 102, 102); text-decoration: none;">  35</a>
<a target=_blank id="L36" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L36" rel="#L36" style="color: rgb(102, 102, 102); text-decoration: none;">  36</a>
<a target=_blank id="L37" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L37" rel="#L37" style="color: rgb(102, 102, 102); text-decoration: none;">  37</a>
<a target=_blank id="L38" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L38" rel="#L38" style="color: rgb(102, 102, 102); text-decoration: none;">  38</a>
<a target=_blank id="L39" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L39" rel="#L39" style="color: rgb(102, 102, 102); text-decoration: none;">  39</a>
<a target=_blank id="L40" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L40" rel="#L40" style="color: rgb(102, 102, 102); text-decoration: none;">  40</a>
<a target=_blank id="L41" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L41" rel="#L41" style="color: rgb(102, 102, 102); text-decoration: none;">  41</a>
<a target=_blank id="L42" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L42" rel="#L42" style="color: rgb(102, 102, 102); text-decoration: none;">  42</a>
<a target=_blank id="L43" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L43" rel="#L43" style="color: rgb(102, 102, 102); text-decoration: none;">  43</a>
<a target=_blank id="L44" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L44" rel="#L44" style="color: rgb(102, 102, 102); text-decoration: none;">  44</a>
<a target=_blank id="L45" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L45" rel="#L45" style="color: rgb(102, 102, 102); text-decoration: none;">  45</a>
<a target=_blank id="L46" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L46" rel="#L46" style="color: rgb(102, 102, 102); text-decoration: none;">  46</a>
<a target=_blank id="L47" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L47" rel="#L47" style="color: rgb(102, 102, 102); text-decoration: none;">  47</a>
<a target=_blank id="L48" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L48" rel="#L48" style="color: rgb(102, 102, 102); text-decoration: none;">  48</a>
<a target=_blank id="L49" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L49" rel="#L49" style="color: rgb(102, 102, 102); text-decoration: none;">  49</a>
<a target=_blank id="L50" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L50" rel="#L50" style="color: rgb(102, 102, 102); text-decoration: none;">  50</a>
<a target=_blank id="L51" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L51" rel="#L51" style="color: rgb(102, 102, 102); text-decoration: none;">  51</a>
<a target=_blank id="L52" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L52" rel="#L52" style="color: rgb(102, 102, 102); text-decoration: none;">  52</a>
<a target=_blank id="L53" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L53" rel="#L53" style="color: rgb(102, 102, 102); text-decoration: none;">  53</a>
<a target=_blank id="L54" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L54" rel="#L54" style="color: rgb(102, 102, 102); text-decoration: none;">  54</a>
<a target=_blank id="L55" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L55" rel="#L55" style="color: rgb(102, 102, 102); text-decoration: none;">  55</a>
<a target=_blank id="L56" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L56" rel="#L56" style="color: rgb(102, 102, 102); text-decoration: none;">  56</a>
<a target=_blank id="L57" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L57" rel="#L57" style="color: rgb(102, 102, 102); text-decoration: none;">  57</a>
<a target=_blank id="L58" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L58" rel="#L58" style="color: rgb(102, 102, 102); text-decoration: none;">  58</a>
<a target=_blank id="L59" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L59" rel="#L59" style="color: rgb(102, 102, 102); text-decoration: none;">  59</a>
<a target=_blank id="L60" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L60" rel="#L60" style="color: rgb(102, 102, 102); text-decoration: none;">  60</a>
<a target=_blank id="L61" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L61" rel="#L61" style="color: rgb(102, 102, 102); text-decoration: none;">  61</a>
<a target=_blank id="L62" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L62" rel="#L62" style="color: rgb(102, 102, 102); text-decoration: none;">  62</a>
<a target=_blank id="L63" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L63" rel="#L63" style="color: rgb(102, 102, 102); text-decoration: none;">  63</a>
<a target=_blank id="L64" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L64" rel="#L64" style="color: rgb(102, 102, 102); text-decoration: none;">  64</a>
<a target=_blank id="L65" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L65" rel="#L65" style="color: rgb(102, 102, 102); text-decoration: none;">  65</a>
<a target=_blank id="L66" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L66" rel="#L66" style="color: rgb(102, 102, 102); text-decoration: none;">  66</a>
<a target=_blank id="L67" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L67" rel="#L67" style="color: rgb(102, 102, 102); text-decoration: none;">  67</a>
<a target=_blank id="L68" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L68" rel="#L68" style="color: rgb(102, 102, 102); text-decoration: none;">  68</a>
<a target=_blank id="L69" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L69" rel="#L69" style="color: rgb(102, 102, 102); text-decoration: none;">  69</a>
<a target=_blank id="L70" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L70" rel="#L70" style="color: rgb(102, 102, 102); text-decoration: none;">  70</a>
<a target=_blank id="L71" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L71" rel="#L71" style="color: rgb(102, 102, 102); text-decoration: none;">  71</a>
<a target=_blank id="L72" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L72" rel="#L72" style="color: rgb(102, 102, 102); text-decoration: none;">  72</a>
<a target=_blank id="L73" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L73" rel="#L73" style="color: rgb(102, 102, 102); text-decoration: none;">  73</a>
<a target=_blank id="L74" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L74" rel="#L74" style="color: rgb(102, 102, 102); text-decoration: none;">  74</a>
<a target=_blank id="L75" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L75" rel="#L75" style="color: rgb(102, 102, 102); text-decoration: none;">  75</a>
<a target=_blank id="L76" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L76" rel="#L76" style="color: rgb(102, 102, 102); text-decoration: none;">  76</a>
<a target=_blank id="L77" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L77" rel="#L77" style="color: rgb(102, 102, 102); text-decoration: none;">  77</a>
<a target=_blank id="L78" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L78" rel="#L78" style="color: rgb(102, 102, 102); text-decoration: none;">  78</a>
<a target=_blank id="L79" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L79" rel="#L79" style="color: rgb(102, 102, 102); text-decoration: none;">  79</a>
<a target=_blank id="L80" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L80" rel="#L80" style="color: rgb(102, 102, 102); text-decoration: none;">  80</a>
<a target=_blank id="L81" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L81" rel="#L81" style="color: rgb(102, 102, 102); text-decoration: none;">  81</a>
<a target=_blank id="L82" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L82" rel="#L82" style="color: rgb(102, 102, 102); text-decoration: none;">  82</a>
<a target=_blank id="L83" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L83" rel="#L83" style="color: rgb(102, 102, 102); text-decoration: none;">  83</a>
<a target=_blank id="L84" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L84" rel="#L84" style="color: rgb(102, 102, 102); text-decoration: none;">  84</a>
<a target=_blank id="L85" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L85" rel="#L85" style="color: rgb(102, 102, 102); text-decoration: none;">  85</a>
<a target=_blank id="L86" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L86" rel="#L86" style="color: rgb(102, 102, 102); text-decoration: none;">  86</a>
<a target=_blank id="L87" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L87" rel="#L87" style="color: rgb(102, 102, 102); text-decoration: none;">  87</a>
<a target=_blank id="L88" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L88" rel="#L88" style="color: rgb(102, 102, 102); text-decoration: none;">  88</a>
<a target=_blank id="L89" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L89" rel="#L89" style="color: rgb(102, 102, 102); text-decoration: none;">  89</a>
<a target=_blank id="L90" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L90" rel="#L90" style="color: rgb(102, 102, 102); text-decoration: none;">  90</a>
<a target=_blank id="L91" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L91" rel="#L91" style="color: rgb(102, 102, 102); text-decoration: none;">  91</a>
<a target=_blank id="L92" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L92" rel="#L92" style="color: rgb(102, 102, 102); text-decoration: none;">  92</a>
<a target=_blank id="L93" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L93" rel="#L93" style="color: rgb(102, 102, 102); text-decoration: none;">  93</a>
<a target=_blank id="L94" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L94" rel="#L94" style="color: rgb(102, 102, 102); text-decoration: none;">  94</a>
<a target=_blank id="L95" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L95" rel="#L95" style="color: rgb(102, 102, 102); text-decoration: none;">  95</a>
<a target=_blank id="L96" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L96" rel="#L96" style="color: rgb(102, 102, 102); text-decoration: none;">  96</a>
<a target=_blank id="L97" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L97" rel="#L97" style="color: rgb(102, 102, 102); text-decoration: none;">  97</a>
<a target=_blank id="L98" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L98" rel="#L98" style="color: rgb(102, 102, 102); text-decoration: none;">  98</a>
<a target=_blank id="L99" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L99" rel="#L99" style="color: rgb(102, 102, 102); text-decoration: none;">  99</a>
<a target=_blank id="L100" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L100" rel="#L100" style="color: rgb(102, 102, 102); text-decoration: none;"> 100</a>
<a target=_blank id="L101" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L101" rel="#L101" style="color: rgb(102, 102, 102); text-decoration: none;"> 101</a>
<a target=_blank id="L102" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L102" rel="#L102" style="color: rgb(102, 102, 102); text-decoration: none;"> 102</a>
<a target=_blank id="L103" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L103" rel="#L103" style="color: rgb(102, 102, 102); text-decoration: none;"> 103</a>
<a target=_blank id="L104" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L104" rel="#L104" style="color: rgb(102, 102, 102); text-decoration: none;"> 104</a>
<a target=_blank id="L105" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L105" rel="#L105" style="color: rgb(102, 102, 102); text-decoration: none;"> 105</a>
<a target=_blank id="L106" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L106" rel="#L106" style="color: rgb(102, 102, 102); text-decoration: none;"> 106</a>
<a target=_blank id="L107" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L107" rel="#L107" style="color: rgb(102, 102, 102); text-decoration: none;"> 107</a>
<a target=_blank id="L108" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L108" rel="#L108" style="color: rgb(102, 102, 102); text-decoration: none;"> 108</a>
<a target=_blank id="L109" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L109" rel="#L109" style="color: rgb(102, 102, 102); text-decoration: none;"> 109</a>
<a target=_blank id="L110" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L110" rel="#L110" style="color: rgb(102, 102, 102); text-decoration: none;"> 110</a>
<a target=_blank id="L111" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L111" rel="#L111" style="color: rgb(102, 102, 102); text-decoration: none;"> 111</a>
<a target=_blank id="L112" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L112" rel="#L112" style="color: rgb(102, 102, 102); text-decoration: none;"> 112</a>
<a target=_blank id="L113" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L113" rel="#L113" style="color: rgb(102, 102, 102); text-decoration: none;"> 113</a>
<a target=_blank id="L114" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L114" rel="#L114" style="color: rgb(102, 102, 102); text-decoration: none;"> 114</a>
<a target=_blank id="L115" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L115" rel="#L115" style="color: rgb(102, 102, 102); text-decoration: none;"> 115</a>
<a target=_blank id="L116" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L116" rel="#L116" style="color: rgb(102, 102, 102); text-decoration: none;"> 116</a>
<a target=_blank id="L117" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L117" rel="#L117" style="color: rgb(102, 102, 102); text-decoration: none;"> 117</a>
<a target=_blank id="L118" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L118" rel="#L118" style="color: rgb(102, 102, 102); text-decoration: none;"> 118</a>
<a target=_blank id="L119" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L119" rel="#L119" style="color: rgb(102, 102, 102); text-decoration: none;"> 119</a>
<a target=_blank id="L120" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L120" rel="#L120" style="color: rgb(102, 102, 102); text-decoration: none;"> 120</a>
<a target=_blank id="L121" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L121" rel="#L121" style="color: rgb(102, 102, 102); text-decoration: none;"> 121</a>
<a target=_blank id="L122" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L122" rel="#L122" style="color: rgb(102, 102, 102); text-decoration: none;"> 122</a>
<a target=_blank id="L123" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L123" rel="#L123" style="color: rgb(102, 102, 102); text-decoration: none;"> 123</a>
<a target=_blank id="L124" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L124" rel="#L124" style="color: rgb(102, 102, 102); text-decoration: none;"> 124</a>
<a target=_blank id="L125" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L125" rel="#L125" style="color: rgb(102, 102, 102); text-decoration: none;"> 125</a>
<a target=_blank id="L126" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L126" rel="#L126" style="color: rgb(102, 102, 102); text-decoration: none;"> 126</a>
<a target=_blank id="L127" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L127" rel="#L127" style="color: rgb(102, 102, 102); text-decoration: none;"> 127</a>
<a target=_blank id="L128" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L128" rel="#L128" style="color: rgb(102, 102, 102); text-decoration: none;"> 128</a>
<a target=_blank id="L129" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L129" rel="#L129" style="color: rgb(102, 102, 102); text-decoration: none;"> 129</a>
<a target=_blank id="L130" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L130" rel="#L130" style="color: rgb(102, 102, 102); text-decoration: none;"> 130</a>
<a target=_blank id="L131" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L131" rel="#L131" style="color: rgb(102, 102, 102); text-decoration: none;"> 131</a>
<a target=_blank id="L132" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L132" rel="#L132" style="color: rgb(102, 102, 102); text-decoration: none;"> 132</a>
<a target=_blank id="L133" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L133" rel="#L133" style="color: rgb(102, 102, 102); text-decoration: none;"> 133</a>
<a target=_blank id="L134" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L134" rel="#L134" style="color: rgb(102, 102, 102); text-decoration: none;"> 134</a>
<a target=_blank id="L135" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L135" rel="#L135" style="color: rgb(102, 102, 102); text-decoration: none;"> 135</a>
<a target=_blank id="L136" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L136" rel="#L136" style="color: rgb(102, 102, 102); text-decoration: none;"> 136</a>
<a target=_blank id="L137" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L137" rel="#L137" style="color: rgb(102, 102, 102); text-decoration: none;"> 137</a>
<a target=_blank id="L138" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L138" rel="#L138" style="color: rgb(102, 102, 102); text-decoration: none;"> 138</a>
<a target=_blank id="L139" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L139" rel="#L139" style="color: rgb(102, 102, 102); text-decoration: none;"> 139</a>
<a target=_blank id="L140" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L140" rel="#L140" style="color: rgb(102, 102, 102); text-decoration: none;"> 140</a>
<a target=_blank id="L141" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L141" rel="#L141" style="color: rgb(102, 102, 102); text-decoration: none;"> 141</a>
<a target=_blank id="L142" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L142" rel="#L142" style="color: rgb(102, 102, 102); text-decoration: none;"> 142</a>
<a target=_blank id="L143" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L143" rel="#L143" style="color: rgb(102, 102, 102); text-decoration: none;"> 143</a>
<a target=_blank id="L144" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L144" rel="#L144" style="color: rgb(102, 102, 102); text-decoration: none;"> 144</a>
<a target=_blank id="L145" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L145" rel="#L145" style="color: rgb(102, 102, 102); text-decoration: none;"> 145</a>
<a target=_blank id="L146" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L146" rel="#L146" style="color: rgb(102, 102, 102); text-decoration: none;"> 146</a>
<a target=_blank id="L147" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L147" rel="#L147" style="color: rgb(102, 102, 102); text-decoration: none;"> 147</a>
<a target=_blank id="L148" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L148" rel="#L148" style="color: rgb(102, 102, 102); text-decoration: none;"> 148</a>
<a target=_blank id="L149" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L149" rel="#L149" style="color: rgb(102, 102, 102); text-decoration: none;"> 149</a>
<a target=_blank id="L150" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L150" rel="#L150" style="color: rgb(102, 102, 102); text-decoration: none;"> 150</a>
<a target=_blank id="L151" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L151" rel="#L151" style="color: rgb(102, 102, 102); text-decoration: none;"> 151</a>
<a target=_blank id="L152" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L152" rel="#L152" style="color: rgb(102, 102, 102); text-decoration: none;"> 152</a>
<a target=_blank id="L153" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L153" rel="#L153" style="color: rgb(102, 102, 102); text-decoration: none;"> 153</a>
<a target=_blank id="L154" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L154" rel="#L154" style="color: rgb(102, 102, 102); text-decoration: none;"> 154</a>
<a target=_blank id="L155" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L155" rel="#L155" style="color: rgb(102, 102, 102); text-decoration: none;"> 155</a>
<a target=_blank id="L156" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L156" rel="#L156" style="color: rgb(102, 102, 102); text-decoration: none;"> 156</a>
<a target=_blank id="L157" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L157" rel="#L157" style="color: rgb(102, 102, 102); text-decoration: none;"> 157</a>
<a target=_blank id="L158" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L158" rel="#L158" style="color: rgb(102, 102, 102); text-decoration: none;"> 158</a>
<a target=_blank id="L159" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L159" rel="#L159" style="color: rgb(102, 102, 102); text-decoration: none;"> 159</a>
<a target=_blank id="L160" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L160" rel="#L160" style="color: rgb(102, 102, 102); text-decoration: none;"> 160</a>
<a target=_blank id="L161" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L161" rel="#L161" style="color: rgb(102, 102, 102); text-decoration: none;"> 161</a>
<a target=_blank id="L162" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L162" rel="#L162" style="color: rgb(102, 102, 102); text-decoration: none;"> 162</a>
<a target=_blank id="L163" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L163" rel="#L163" style="color: rgb(102, 102, 102); text-decoration: none;"> 163</a>
<a target=_blank id="L164" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L164" rel="#L164" style="color: rgb(102, 102, 102); text-decoration: none;"> 164</a>
<a target=_blank id="L165" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L165" rel="#L165" style="color: rgb(102, 102, 102); text-decoration: none;"> 165</a>
<a target=_blank id="L166" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L166" rel="#L166" style="color: rgb(102, 102, 102); text-decoration: none;"> 166</a>
<a target=_blank id="L167" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L167" rel="#L167" style="color: rgb(102, 102, 102); text-decoration: none;"> 167</a>
<a target=_blank id="L168" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L168" rel="#L168" style="color: rgb(102, 102, 102); text-decoration: none;"> 168</a>
<a target=_blank id="L169" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L169" rel="#L169" style="color: rgb(102, 102, 102); text-decoration: none;"> 169</a>
<a target=_blank id="L170" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L170" rel="#L170" style="color: rgb(102, 102, 102); text-decoration: none;"> 170</a>
<a target=_blank id="L171" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L171" rel="#L171" style="color: rgb(102, 102, 102); text-decoration: none;"> 171</a>
<a target=_blank id="L172" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L172" rel="#L172" style="color: rgb(102, 102, 102); text-decoration: none;"> 172</a>
<a target=_blank id="L173" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L173" rel="#L173" style="color: rgb(102, 102, 102); text-decoration: none;"> 173</a>
<a target=_blank id="L174" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L174" rel="#L174" style="color: rgb(102, 102, 102); text-decoration: none;"> 174</a>
<a target=_blank id="L175" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L175" rel="#L175" style="color: rgb(102, 102, 102); text-decoration: none;"> 175</a>
<a target=_blank id="L176" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L176" rel="#L176" style="color: rgb(102, 102, 102); text-decoration: none;"> 176</a>
<a target=_blank id="L177" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L177" rel="#L177" style="color: rgb(102, 102, 102); text-decoration: none;"> 177</a>
<a target=_blank id="L178" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L178" rel="#L178" style="color: rgb(102, 102, 102); text-decoration: none;"> 178</a>
<a target=_blank id="L179" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L179" rel="#L179" style="color: rgb(102, 102, 102); text-decoration: none;"> 179</a>
<a target=_blank id="L180" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L180" rel="#L180" style="color: rgb(102, 102, 102); text-decoration: none;"> 180</a>
<a target=_blank id="L181" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L181" rel="#L181" style="color: rgb(102, 102, 102); text-decoration: none;"> 181</a>
<a target=_blank id="L182" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L182" rel="#L182" style="color: rgb(102, 102, 102); text-decoration: none;"> 182</a>
<a target=_blank id="L183" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L183" rel="#L183" style="color: rgb(102, 102, 102); text-decoration: none;"> 183</a>
<a target=_blank id="L184" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L184" rel="#L184" style="color: rgb(102, 102, 102); text-decoration: none;"> 184</a>
<a target=_blank id="L185" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L185" rel="#L185" style="color: rgb(102, 102, 102); text-decoration: none;"> 185</a>
<a target=_blank id="L186" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L186" rel="#L186" style="color: rgb(102, 102, 102); text-decoration: none;"> 186</a>
<a target=_blank id="L187" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L187" rel="#L187" style="color: rgb(102, 102, 102); text-decoration: none;"> 187</a>
<a target=_blank id="L188" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L188" rel="#L188" style="color: rgb(102, 102, 102); text-decoration: none;"> 188</a>
<a target=_blank id="L189" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L189" rel="#L189" style="color: rgb(102, 102, 102); text-decoration: none;"> 189</a>
<a target=_blank id="L190" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L190" rel="#L190" style="color: rgb(102, 102, 102); text-decoration: none;"> 190</a>
<a target=_blank id="L191" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L191" rel="#L191" style="color: rgb(102, 102, 102); text-decoration: none;"> 191</a>
<a target=_blank id="L192" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L192" rel="#L192" style="color: rgb(102, 102, 102); text-decoration: none;"> 192</a>
<a target=_blank id="L193" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L193" rel="#L193" style="color: rgb(102, 102, 102); text-decoration: none;"> 193</a>
<a target=_blank id="L194" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L194" rel="#L194" style="color: rgb(102, 102, 102); text-decoration: none;"> 194</a>
<a target=_blank id="L195" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L195" rel="#L195" style="color: rgb(102, 102, 102); text-decoration: none;"> 195</a>
<a target=_blank id="L196" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L196" rel="#L196" style="color: rgb(102, 102, 102); text-decoration: none;"> 196</a>
<a target=_blank id="L197" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L197" rel="#L197" style="color: rgb(102, 102, 102); text-decoration: none;"> 197</a>
<a target=_blank id="L198" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L198" rel="#L198" style="color: rgb(102, 102, 102); text-decoration: none;"> 198</a>
<a target=_blank id="L199" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L199" rel="#L199" style="color: rgb(102, 102, 102); text-decoration: none;"> 199</a>
<a target=_blank id="L200" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L200" rel="#L200" style="color: rgb(102, 102, 102); text-decoration: none;"> 200</a>
<a target=_blank id="L201" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L201" rel="#L201" style="color: rgb(102, 102, 102); text-decoration: none;"> 201</a>
<a target=_blank id="L202" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L202" rel="#L202" style="color: rgb(102, 102, 102); text-decoration: none;"> 202</a>
<a target=_blank id="L203" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L203" rel="#L203" style="color: rgb(102, 102, 102); text-decoration: none;"> 203</a>
<a target=_blank id="L204" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L204" rel="#L204" style="color: rgb(102, 102, 102); text-decoration: none;"> 204</a>
<a target=_blank id="L205" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L205" rel="#L205" style="color: rgb(102, 102, 102); text-decoration: none;"> 205</a>
<a target=_blank id="L206" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L206" rel="#L206" style="color: rgb(102, 102, 102); text-decoration: none;"> 206</a>
<a target=_blank id="L207" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L207" rel="#L207" style="color: rgb(102, 102, 102); text-decoration: none;"> 207</a>
<a target=_blank id="L208" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L208" rel="#L208" style="color: rgb(102, 102, 102); text-decoration: none;"> 208</a>
<a target=_blank id="L209" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L209" rel="#L209" style="color: rgb(102, 102, 102); text-decoration: none;"> 209</a>
<a target=_blank id="L210" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L210" rel="#L210" style="color: rgb(102, 102, 102); text-decoration: none;"> 210</a>
<a target=_blank id="L211" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L211" rel="#L211" style="color: rgb(102, 102, 102); text-decoration: none;"> 211</a>
<a target=_blank id="L212" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L212" rel="#L212" style="color: rgb(102, 102, 102); text-decoration: none;"> 212</a>
<a target=_blank id="L213" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L213" rel="#L213" style="color: rgb(102, 102, 102); text-decoration: none;"> 213</a>
<a target=_blank id="L214" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L214" rel="#L214" style="color: rgb(102, 102, 102); text-decoration: none;"> 214</a>
<a target=_blank id="L215" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L215" rel="#L215" style="color: rgb(102, 102, 102); text-decoration: none;"> 215</a>
<a target=_blank id="L216" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L216" rel="#L216" style="color: rgb(102, 102, 102); text-decoration: none;"> 216</a>
<a target=_blank id="L217" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L217" rel="#L217" style="color: rgb(102, 102, 102); text-decoration: none;"> 217</a>
<a target=_blank id="L218" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L218" rel="#L218" style="color: rgb(102, 102, 102); text-decoration: none;"> 218</a>
<a target=_blank id="L219" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L219" rel="#L219" style="color: rgb(102, 102, 102); text-decoration: none;"> 219</a>
<a target=_blank id="L220" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L220" rel="#L220" style="color: rgb(102, 102, 102); text-decoration: none;"> 220</a>
<a target=_blank id="L221" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L221" rel="#L221" style="color: rgb(102, 102, 102); text-decoration: none;"> 221</a>
<a target=_blank id="L222" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L222" rel="#L222" style="color: rgb(102, 102, 102); text-decoration: none;"> 222</a>
<a target=_blank id="L223" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L223" rel="#L223" style="color: rgb(102, 102, 102); text-decoration: none;"> 223</a>
<a target=_blank id="L224" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L224" rel="#L224" style="color: rgb(102, 102, 102); text-decoration: none;"> 224</a>
<a target=_blank id="L225" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L225" rel="#L225" style="color: rgb(102, 102, 102); text-decoration: none;"> 225</a>
<a target=_blank id="L226" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L226" rel="#L226" style="color: rgb(102, 102, 102); text-decoration: none;"> 226</a>
<a target=_blank id="L227" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L227" rel="#L227" style="color: rgb(102, 102, 102); text-decoration: none;"> 227</a>
<a target=_blank id="L228" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L228" rel="#L228" style="color: rgb(102, 102, 102); text-decoration: none;"> 228</a>
<a target=_blank id="L229" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L229" rel="#L229" style="color: rgb(102, 102, 102); text-decoration: none;"> 229</a>
<a target=_blank id="L230" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L230" rel="#L230" style="color: rgb(102, 102, 102); text-decoration: none;"> 230</a>
<a target=_blank id="L231" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L231" rel="#L231" style="color: rgb(102, 102, 102); text-decoration: none;"> 231</a>
<a target=_blank id="L232" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L232" rel="#L232" style="color: rgb(102, 102, 102); text-decoration: none;"> 232</a>
<a target=_blank id="L233" href="http://blog.csdn.net/zhjm07054115/article/details/26964275?utm_source=tuicool#L233" rel="#L233" style="color: rgb(102, 102, 102); text-decoration: none;"> 233</a>
           
           
// LocalHistogramOfOrientedGradients.cpp : 定义控制台应用程序的入口点。
//局部方向梯度直方图
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace std ;
using namespace cv ;
/*
计算给定像素位置上的加权方向梯度直方图(orientation gradient histogram)
img:原始图像
pt: 指定的像素点
radius: 统计半径
isSmoothed:是否平滑输出直方图
用高斯函数进行中心加权;
isWeighted,和 weighted_sigma: 是否加权和计算权重的标准差
hist: 要输出的直方图
n: 直方图的bin个数
返回值:直方图的峰值(最大值)
*/
static float calcOrientationHist ( const Mat & img , Point pt , int radius , float * hist ,
int n , int isSmoothed , int isWeighted , float weighted_sigma )
{
//radius应该是以pt为中心的正方形的边长的一半
int i , j , k , len = ( radius * 2 + 1 ) * ( radius * 2 + 1 );
//使用高斯函数中心加权
float expf_scale = - 1.f / ( 2.f * weighted_sigma * weighted_sigma );
//为什么加4呢,是为了给临时直方图开辟多余的4个存储位置,
//用来存放temphist[-1],temphist[-2],temphist[n],temphist[n+1]的
//为什么加n呢,这n个位置是留给temphist[0 ... n-1]的
//为什么len*4呢,这4个len长度的数组位置是留给X、Y、W以及方向Ori的
AutoBuffer < float > buf ( len * 4 + n + 4 );
//X是横向梯度,Y是纵向梯度,Mag是梯度幅值=sqrt(X^2+Y^2), Ori是梯度方向 = arctan(Y/X)
float * X = buf , * Y = X + len , * Mag = X , * Ori = Y + len , * W = Ori + len ;
float * temphist = W + len + 2 ; //加2是用来存放temphist[-1],temphist[-2]的
//临时直方图清零
for ( i = 0 ; i < n ; i ++ )
temphist [ i ] = 0.f ;
//从上往下,从左往右扫描求横向,纵向的梯度值以及对应的权值
for ( i = - radius , k = 0 ; i <= radius ; i ++ )
{
int y = pt . y + i ; //指向原图像img的第pt.y+i行
if ( y <= 0 || y >= img . rows - 1 ) //边界检查
continue ;
for ( j = - radius ; j <= radius ; j ++ )
{
int x = pt . x + j ; //指向原图像img的第pt.x+j列
if ( x <= 0 || x >= img . cols - 1 ) //边界检查
continue ;
//横向梯度
float dx = ( float )( img . at < uchar > ( y , x + 1 ) - img . at < uchar > ( y , x - 1 ));
//纵向梯度
float dy = ( float )( img . at < uchar > ( y - 1 , x ) - img . at < uchar > ( y + 1 , x ));
//保存纵向梯度和横向梯度
X [ k ] = dx ; Y [ k ] = dy ;
//计算加权数组
if ( isWeighted )
W [ k ] = ( i * i + j * j ) * expf_scale ;
else
W [ k ] = 1.f ; //如果不加权,则每个统计点上的权重是一样的
k ++ ;
}
}
//把实际的统计点数复制给len,由于矩形局部邻域有可能超出图像边界,
len = k ; //所以实际的点数总是小于等于 (radius*2+1)*(radius*2+1)
//在指定像素点的邻域内 计算梯度幅值, 梯度方向 and 权重
exp ( W , W , len ); //权重
fastAtan2 ( Y , X , Ori , len , true ); //梯度方向
magnitude ( X , Y , Mag , len ); //梯度幅值
//填充临时直方图,直方图的横轴是梯度方向方向角度[0,360),bin宽度为n/360;
//纵轴是梯度幅值乘以对应的权重
for ( k = 0 ; k < len ; k ++ )
{
int bin = cvRound (( n / 360.f ) * Ori [ k ]); //求出第k个角度Ori[k]的bin索引号
if ( bin >= n )
bin -= n ;
if ( bin < 0 )
bin += n ;
temphist [ bin ] += W [ k ] * Mag [ k ];
}
if ( isSmoothed )
{
// 直方图平滑,平滑后放入输出直方图数组中
temphist [ - 1 ] = temphist [ n - 1 ];
temphist [ - 2 ] = temphist [ n - 2 ];
temphist [ n ] = temphist [ 0 ];
temphist [ n + 1 ] = temphist [ 1 ];
for ( i = 0 ; i < n ; i ++ )
{
hist [ i ] = ( temphist [ i - 2 ] + temphist [ i + 2 ]) * ( 1.f / 16.f ) +
( temphist [ i - 1 ] + temphist [ i + 1 ]) * ( 4.f / 16.f ) +
temphist [ i ] * ( 6.f / 16.f );
}
}
else //不平滑直方图
{
for ( i = 0 ; i < n ; i ++ )
{
hist [ i ] = temphist [ i ];
}
}
//求直方图梯度的最大值
float maxval = hist [ 0 ];
for ( i = 1 ; i < n ; i ++ )
maxval = std :: max ( maxval , hist [ i ]);
return maxval ;
}
void DrawHist ( Mat & hist , string & winname )
{
Mat drawHist ;
int histSize = hist . rows ;
// 创建直方图画布
int hist_w = 360 ; int hist_h = 360 ; //直方图图像的宽度和高度
int bin_w = cvRound ( ( double ) hist_w / histSize ); //直方图中一个矩形条纹的宽度
Mat histImage ( hist_w , hist_h , CV_8UC3 , Scalar ( 0 , 0 , 0 ) ); //创建画布图像
/// 将直方图归一化到范围 [ 0, histImage.rows ]
normalize ( hist , drawHist , 0 , histImage . rows , NORM_MINMAX , - 1 , Mat () );
/// 在直方图画布上画出直方图
for ( int i = 1 ; i < histSize ; i ++ )
{
//矩形图表示
rectangle ( histImage , Point (( i - 1 ) * bin_w , hist_h ),
Point ( i * bin_w , hist_h - cvRound ( drawHist . at < float > ( i - 1 ))), Scalar ( 0 , 0 , 255 ), 1 , 8 , 0 );
//折线表示
/* line( histImage, Point( bin_w*(i-1), hist_h - cvRound(hist.at<float>(i-1)) ) ,
Point( bin_w*(i), hist_h - cvRound(hist.at<float>(i)) ),
Scalar( 0, 0, 255), 1, 8, 0 );*/
}
/// 显示直方图
cv :: namedWindow ( winname , 1 );
cv :: imshow ( winname , histImage );
}
int main ( int argc , char ** argv )
{
const string filename = "meinv2.jpg" ;
Mat Image = imread ( filename , 1 );
if ( Image . empty ())
{
std :: cout << "无法读取图像...." << endl ;
getchar ();
}
Mat grayImage ; //灰度图像
cvtColor ( Image , grayImage , CV_BGR2GRAY );
//-------------------------------计算方向梯度直方图的参数------------------------
Point center ( grayImage . cols / 2 , grayImage . rows / 2 );
cout << "原图中心点: " << center << endl ;
int radius = 120 ; //局部邻域半径
Rect StatisticArea ( center . x - radius , center . y - radius , 2 * radius , 2 * radius );
int bins_count = 60 ; //bin的数目
float sigma = radius * 0.5f ; //加权函数的标准差,设为统计区域的半径的一半
bool isSmoothed = true ; //是否平滑直方图
bool isWeighted = false ; //不加权
//-------------------------------计算原图中心点的方向梯度直方图---------------------
//声明一个直方图数组
Mat originHist = Mat :: zeros ( bins_count , 1 , CV_32FC1 );
float * oh = ( float * ) originHist . data ;
if ( ! originHist . isContinuous ())
{
cout << "直方图地址存储不连续" << endl ;
getchar ();
}
calcOrientationHist ( grayImage , center , radius , oh , bins_count , isSmoothed , isWeighted , sigma );
//绘制直方图
string winname = "Origin hist" ;
DrawHist ( originHist , winname );
//---------------计算旋转图像的方向梯度直方图-------------------------------------------
//step:1 计算绕图像中点顺时针旋转30度缩放因子为1的旋转矩阵
Point rot_center = center ; //旋转中心
double angle = 30.0 ; //旋转角度
double scale = 1. ; //缩放因子
/// 通过上面的旋转细节信息求得旋转矩阵
Mat rot_mat = getRotationMatrix2D ( rot_center , angle , scale );
cout << "旋转矩阵:" << rot_mat << endl ;
/// 调用仿射变换函数旋转原始图像
Mat rotate_dst ;
warpAffine ( grayImage , rotate_dst , rot_mat , grayImage . size () );
//声明一个直方图数组
Mat_ < float > rotateHist = Mat :: zeros ( bins_count , 1 , CV_32FC1 );
float * rh = ( float * ) rotateHist . data ;
calcOrientationHist ( rotate_dst , center , radius , rh , bins_count , isSmoothed , isWeighted , sigma );
//绘制直方图
string winname2 = "rotated hist" ;
DrawHist ( rotateHist , winname2 );
//- -利用旋转前和旋转后的两个直方图的纵轴主峰对应的角度bin估算图像的旋转角度--------------------
cout << "直方图bin的宽度: " << ( 360.f / bins_count ) << "度" << endl ;
//求出旋转前图像方向梯度直方图的主峰位置对应的bin角度值
Point max_location1 ; //直方图主峰对应的bin位置
float angle1 ;
minMaxLoc ( originHist , 0 , 0 , 0 , & max_location1 );
angle1 = max_location1 . y * ( 360.f / bins_count );
cout << "未旋转之前的方向梯度直方图的主峰位置:" << max_location1 . y << endl
<< " ,对应角度值: " << angle1 << endl ;;
//求出旋转后图像方向梯度直方图的主峰位置对应的bin角度值
Point max_location2 ; //直方图主峰对应的bin位置
float angle2 ;
minMaxLoc ( rotateHist , 0 , 0 , 0 , & max_location2 );
angle2 = max_location2 . y * ( 360.f / bins_count );
cout << "旋转之后的方向梯度直方图的主峰位置:" << max_location2 . y << endl
<< " ,对应角度值: " << angle2 << endl ;;
cout << "真实旋转角度:" << angle << endl ;
cout << "估计的旋转角度: " << angle2 - angle1 << endl ;
rectangle ( grayImage , StatisticArea , Scalar ( 0 ), 2 );
imshow ( "origin img" , grayImage );
rectangle ( rotate_dst , StatisticArea , Scalar ( 0 ), 2 );
imshow ( "rotated img" , rotate_dst );
waitKey ( 0 );
return 0 ;
}
 来自CODE的代码片
localorientedgradient.cpp


结果分析:

绕图像中心点顺时针旋转30度缩放因子为1的估计结果:



从上图看出,顺时针旋转奶茶妹妹后,方向梯度直方图整体向左移动了一定距离

真实的旋转角度为 -30度,估计的旋转角度为 -24度,误差6度正好是直方图的bin的宽度

绕图像中心点逆时针旋转30度缩放因子为1的估计结果:



从上图看出,逆时针旋转奶茶妹妹后,方向梯度直方图整体向右移动了一定距离

真实旋转角度为30度,估计的旋转角度也为30度

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值