图像锐化是图像增强的主要方式之一,而拉普拉斯锐化是最基础的最常用的。本文主要利用opencv进行此操作,直接上代码。
void sharpenImg(cv::Mat src, cv::Mat sharpenImg)
{
//创建并初始化滤波模板:拉普拉斯核3x3
cv::Mat kernel(3, 3, CV_32F, cv::Scalar(0));
kernel.at<float>(1, 1) = 5.0;
kernel.at<float>(0, 1) = -1.0;
kernel.at<float>(1, 0) = -1.0;
kernel.at<float>(1, 2) = -1.0;
kernel.at<float>(2, 1) = -1.0;
sharpenImg.create(src.size(), src.type());
cv::filter2D(src, sharpenImg, src.depth(), kernel);
}
注意两点:
- 在进行锐化时可能产生噪声点,从经验来看,绝大部分噪声点类似椒盐噪声,最好用中值滤波在对图像进行二次处理,中值滤波的卷积核一般为3*3,当然要根据实际情况适时调整;
- 此处使用的是3*3的拉普拉斯核,5*5等核需要大家根据实际情况添加;