PhotoShop算法实现高级篇--马赛克(三十八)

来源:互联网 发布:php redis zscore 编辑:程序博客网 时间:2024/05/01 21:43

PhotoShop算法实现高级篇--马赛克(三十八)

kezunhai@gmail.com

http://blog.csdn.net/kezunhai

        曾经看到一句话:阻止人类进步的最大障碍——马赛克。马赛克的发明者一定也想不到该技术对社会产生了如此重大的影响,也一定不曾想到会被调侃成阻止人类进步的最大障碍(对于岛国的******情有独钟,就另论~?~)。

         其实马赛克的实现技术很简单,就是让图像中的所有像素成块状,而每个块的颜色则取决于块内像素的平均值或块内像素的随机值。 算法实现很简单(用当前像素来代替块内像素):

// 马赛克void PhotoShop::Masic(Mat& img, Mat& dst, int nSize)  {  if ( dst.empty())dst.create(img.rows, img.cols, img.type());int offset = (nSize-1)/2;  int height = img.rows;int width = img.cols;for ( int row = offset; row <height - offset; row= row+2*offset)  {  for( int col= offset; col<width - offset; col = col+2*offset)  {  int val0 = getPixel(img, row, col, 0);  int val1 = getPixel(img, row, col, 1);  int val2 = getPixel(img, row, col, 2);  for ( int m= -offset; m<offset; m++)  {  for ( int n=-offset; n<offset; n++)  {  setPixel(dst, row+m, col+n, 0, val0);  setPixel(dst, row+m, col+n, 1, val1);  setPixel(dst, row+m, col+n, 2, val2);  }  } // for m }  // for col}  // for row} 
       第一张块较小:



再来一张块大的:

 

       再来一张阻止人类进步的:


作者:kezunhai 出处:http://blog.csdn.net/kezunhai 欢迎转载或分享,但请务必声明文章出处。


0 0