1.圖像銳化概念原理
- 圖像銳化是一種突出和加強圖像中景物的邊緣和輪廓的技術。圖像銳化的本質是
增加鄰域間像素的差值
,使圖像的突變部分變得更加明顯。 - 圖像的卷積計算除了可以完成模糊去噪、邊緣檢測等任務外,還可以實現圖像銳化/增強的功能。一般也通過
Laplacian濾波加原圖權重像素疊加銳化空間濾波器用來增強圖像的突變信息,圖像的細節和邊緣信息
。 - 補充:低通濾波器和高通濾波器
- 平滑濾波器主要是使用鄰域的均值(或者中值、積分)來代替模板中心的像素,消弱和鄰域間的差別,以達到平滑圖像和抑制噪聲的目的;模糊圖像,稱為低通濾波器
- 銳化濾波器則使用鄰域的微分作為算子,增大鄰域間像素的差值,使圖像的突變部分變的更加明顯。銳化的作用是加強圖像的邊沿和輪廓,通常也成為高通濾波器:
2.opencv實現
圖像銳化的本質是圖像拉普拉斯濾波加原圖權重像素疊加的輸出:
拉普拉斯算子
- 當C值大於8時候表示圖像銳化、越接近8表示銳化效果越好
- 當C值等於8時候圖像的高通濾波
- 當C值越大,圖像銳化效果在減弱、中心像素的作用在提升
代碼
#include <iostream> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main(int argc, char* argv[]) { Mat src = imread("yuan_test.png"); if (src.empty()) { printf("could not load image...\n"); return -1; } namedWindow("input", CV_WINDOW_AUTOSIZE); imshow("input", src); Mat sharpen_op = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0); Mat result; filter2D(src, result, CV_32F, sharpen_op); convertScaleAbs(result, result); imshow("sharpen image", result); waitKey(0); return 0; } //version1.1
原圖
銳化圖
對比
可以明顯看出銳化后的圖比原圖多了一些紋理細節元素
參考:
https://blog.csdn.net/PecoHe/article/details/95289957
https://blog.csdn.net/cyf15238622067/article/details/87859887
https://wx.zsxq.com/dweb2/index/group/551551828124?from=mweb&type=detail