有时候图像需要增强边缘来达到一定的效果,利用拉普拉斯对孤立像素的响应要比对边缘或线的响应更强烈,因此使用该算子进行图像锐化之前需要对图像作平滑处理。
分析:
当图像像素的灰度值发生剧 烈变化的时候,梯度算子是个很有效的方法,但是当灰度值变化很缓慢的时候,梯度的效果并不是很好,考虑用拉普拉斯算子是非常有效的,拉普拉斯算子是图像在x,y方向上二阶偏导的和。所以,当增强图像边缘时我们选择拉普拉斯分别对图像BGR通道分别增强来处理。
代码:
Mat addAdge(Mat & img) //增强边缘
{
Mat result;
vector<Mat> channels;
split(img, channels);
for (int i = 0; i < img.channels(); i++) {
Mat result, temp;
GaussianBlur(channels[i], temp, Size(3, 3), 0, 0);
Laplacian(temp, result, CV_16S, 3, 1, 0, BORDER_DEFAULT);
result.convertTo(result, CV_8U);
add(channels[i], result, channels[i]);
}
merge(channels, result);
return result;
}