http://blog.csdn.net/kezunhai
图像锐化通过增加邻域像素的对比度来减弱或消除图像的模糊程度,使图像变得更清晰,锐化和平滑恰恰相反。拉普拉斯锐化是采用拉普拉斯运算对图像进行操作。
看到这里,其实拉普拉斯锐化和我们前面介绍的模板平滑(或模板)操作本质是一样的。在日常中,还有一种比常用的拉普拉斯算子(前面的是基于四邻域的,还有一种是基于八邻域的),如下所示:
本文实现的是八邻域锐化算法:
// -1 -1 -1 // -1 9 -1 // -1 -1 -1 void PhotoShop::LaplaceSharp(Mat& img, Mat& dst) { if ( dst.empty()) dst.create(img.rows, img.cols, img.type()); int height = img.rows; int width = img.cols; int chns = img.channels(); int border = 1; int i, j, k; for ( i=border; i<height-border; i++) { unsigned char* dstData = (unsigned char*)dst.data + dst.step*i; for ( j=border; j<width-border; j++) { for ( k=0; k<chns; k++) { int sum = 9*getPixel(img, i, j, k) - getPixel(img, i-1, j-1, k) - getPixel(img, i-1, j, k) - getPixel(img, i-1, j+1, k) - getPixel(img, i, j-1, k) - getPixel(img, i, j+1, k) - getPixel(img, i+1, j-1, k) - getPixel(img, i+1, j, k) - getPixel(img, i+1, j+1, k) ; //dstData[j*chns+k] = saturate_cast<uchar>(dstData[j*chns+k] + sum); dstData[j*chns+k] = saturate_cast<uchar>(sum) ; } } } }测试(视觉上效果比较差,需要做一定的处理):