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 }第一张块较小:
再来一张块大的:
再来一张阻止人类进步的: