图像放大算法(马赛克效果)

图像放大即把较小的图像绘制在较大的空白图像上。这只介绍马赛克效果的原理以及模拟实现。

上图可以看出,马赛克效果的图像放大就是原始像素点的放大。
模拟实现算法:
C#:

class  Program 

     static   void  Main( string [] args) 
    { 
         int [,] a  =   new   int [,] { {  1 ,  2 ,  3 ,  4  }, {  5 ,  6 ,  7 ,  8  } }; 

        Print(Enlarge(a,  4 )); 
    } 

     static   int [,] Enlarge( int [,] src,  int  zoom) 
    { 
         if  (zoom  <   1 ) 
        { 
             throw   new  IndexOutOfRangeException( " 放大倍数不能小于1 " ); 
        } 

         if  (zoom  ==   1 ) 
        { 
             return  src; 
        } 

         int [,] dst  =   new   int [src.GetLength( 0 )  *  zoom, src.GetLength( 1 )  *  zoom]; 

         for  ( int  i  =   0 ; i  <  dst.GetLength( 0 ); i ++ ) 
        { 
             for  ( int  j  =   0 ; j  <  dst.GetLength( 1 ); j ++ ) 
            { 
                dst[i, j]  =  src[(i  /  zoom)  %  (zoom  *  zoom), (j  /  zoom)  %  (zoom  *  zoom)]; 
            } 
        } 

         return  dst; 
    } 

     static   void  Print( int [,] array) 
    { 
         for  ( int  i  =   0 ; i  <  array.GetLength( 0 ); i ++ ) 
        { 
            Console.WriteLine( "" ); 

             for  ( int  j  =   0 ; j  <  array.GetLength( 1 ); j ++ ) 
            { 
                Console.Write( "   "   +  array[i, j]); 
            } 
        } 
    } 
}

如果要实现更逼真的图像放大效果,原始图像相邻两个像素点放大后它们之间可用两个像素点的过度色进行填充,也就是插值算法,有二次插值和多次插值等,其实质可以是贝塞尔曲线算法或其他近似算法。图像放大如果没有特殊算法的优化,生成的图像不可避免的变地模糊或出现马赛克。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值