用OpenCV實現Photoshop演算法(九): 高反差保留
阿新 • • 發佈:2019-02-10
系列文章:
用OpenCV實現Photoshop演算法(四): 色階調整九、高反差保留(High Pass)
高反差保留是一個Photoshop的濾鏡功能。常見的用法是用於銳化,對影象進行1個畫素的高反差保留,再將得到的新影象以強光混合方式疊加在原圖上,可得到非常好的銳化效果。如果需要深度銳化,反覆作這個動作。
(一)原理
(二)演算法:
首先對原圖進行高斯模糊, 然後將新圖與原圖的每一個點的數值相減,再加127,則得到高反差保留圖。
即: 高反差保留 = 高斯模糊圖-原圖 +127
(三)OpenCV實現
1, 我用OpenCV 編寫了一個 Filter 濾鏡類
2, Filter類中有一個方法 HighPass(), 使用它即可。 (注意:是 static靜態方法)
3,原始碼及例程下載在這: 高反差保留原始碼
(四)例程
#include <iostream> #include "opencv2/core.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include "Filter.hpp" using namespace std; using namespace cv; static Mat src; static Mat dst; static int radius = 10; static void callbackAdjust(int , void *) { Filter::HighPass(src, dst, radius / 10.0 ); imshow("photo", dst); } int main() { src = imread("building.jpg"); if ( !src.data ) { cout << "error read image" << endl; return -1; } namedWindow("photo"); createTrackbar("radius", "photo", &radius, 100, callbackAdjust); callbackAdjust(0, 0); waitKey(); return 0; }
執行效果: