现在的位置: 首页 > 综合 > 正文

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

2017年01月23日 ⁄ 综合 ⁄ 共 924字 ⁄ 字号 评论关闭

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 欢迎转载或分享,但请务必声明文章出处。

抱歉!评论已关闭.