从数字图像处理的一篇文章(模板运算)提到以下内容,但内容中有一个问题想请大家帮忙: 
就是后面提到的二维转化成一维后,两个一维矩阵是如何与图(a)矩阵运算的(其运算结果值为图(c))? 
   文章原文如下: 可以设法将二维模板运算转换成一维模板运算,对速度的提高也是非常可观的。 
例如,                           
                      1     2     1                                                                 
  (1/16)   *   [   2     4.     2   ]        (3.2) 
                   1     2     1                                                               式可以分解成一个水平模板和一个垂直模板,即, 
                   1   2  1                              1                         1 
  (1/16)   *   [ 2  4.  2 ]=(1/4)* [1   2.  1]*(1/4)*[ 2.] =(1/16)*[1   2.  1]*[ 2.]  (3.3) 
                 1  2   1                              1                         1      
我们来验证一下。 
设图象为   
                2     2     2     2   
            [ 3     2     3     3   ]                 (a) 
              4     6     4     5 
              5     6     6     6   
,经过(3.2)式处理后变为     
                  2       2        2      2   
            [   3       3      3.06     3   ]             (b) 
                4     4.56     4.56     5 
                5       6        6      6   
  
,经过(3.3)式处理后变为     
                  2       2       2       2   
            [   3       3       3.06    3   ]                                               (c)   
                4     4.56     4.56     5 
                5       6       6       6   
,两者完全一样。如果计算时不考虑周围一圈的象素,前者做了4×(9个乘法,8个加法,1个除法),共36个乘法,32个加法,4个除法;后者做了4×(3个乘法,2个加法)+4×(3个乘法,2个加法)+4个除法,共24个乘法,16个加法,4个除法,运算简化了不少.       
  请大家帮忙解答开始提的问题,谢谢! 

解决方案 »

  1.   

    嗯,自己算出來了。   A={a0,a1,a2,a3,
         a4,a5,a6,a7,
         a8,a9,a10,a11,
         a12,a13,a14,a15};
                                   1
     運算順序,a5' = [a4,a5,a6]*[ 2 ,  
                               1                           1
     再算出   a6' = [a5,a6,a7]*[2],
                              1 同樣算出 a9',a10',  然後將a5',a6',a9',a10'替換a5,a6,a9,10,  A'= {a0,a1,a2,a3,
           a4,a5',a6',a7,
           a8,a9',a10',a11,
           a12,a13,a14,a15
          };
    再進行橫向一維運算:
              a1
       a5''=[a5']*[1 2 1 ];
             a9'  
      a6'',a9'',a10''也如此。