引言:
在图像处理领域有一个众所周知的结论:如果从图像中减去拉普拉斯算子部分,图像的边缘就会放大,因而图像会变的更加尖锐。 在这里基于拉普拉斯算子,通过访问图像中相邻像素来实现对图像的锐化
1、锐化原理公式
5*current[i] - current[i-nchannels] - current[i+nchannels]-previous[i]-next[i]);
2、第一种实现方式:通过访问相邻像素实现对图像的锐化
以下的代码,核心是上面提到的锐化原理公式,下面所有的代码后面都有详细的标注
void sharpen(const Mat &image,Mat result)
{
/// 判断是否需要分配图像数据。如果需要,就分配
result.create(image.size(),image.type());
int nchannels = image.channels(); /// 获得通道数
接下来的程序就是处理所有的行
for (int j = 1 ; j < image.rows-1; j++) {
const uchar* previous = image.ptr<const uchar>(j-1); /// 上一行
const uchar* current = image.ptr<const uchar>(j); /// 当前行
const uchar* next = image.ptr<const uchar>(j+1); ///下一行
uchar* ou