OpenCV實現Photoshop算法(九): 高反差保留


高反差保留(High Pass)

高反差保留是一個Photoshop的濾鏡功能。常見的用法是用於銳化,對圖像進行1個像素的高反差保留,再將得到的新圖像以強光混合方式疊加在原圖上,可得到非常好的銳化效果。如果需要深度銳化,反復作這個動作。

(一)原理

(二)算法:

首先對原圖進行高斯模糊, 然后將新圖與原圖的每一個點的數值相減,再加127,則得到高反差保留圖。 

即: 高反差保留 = 高斯模糊圖-原圖 +127

(三)OpenCV實現

1, 我用OpenCV 編寫了一個 Filter 濾鏡類。在源文件 Filter.hpp,  Filter.cpp中

2, Filter類中有一個方法 HighPass(), 使用它即可。 (注意:是 static靜態方法)

(四)例程

 1 #include <iostream>
 2 #include "opencv2/core.hpp"
 3 #include "opencv2/imgproc.hpp"
 4 #include "opencv2/highgui.hpp"
 5  
 6 #include "Filter.hpp"
 7  
 8 using namespace std;  9 using namespace cv; 10  
11 static Mat src; 12 static Mat dst; 13 static int radius = 10; 14  
15 static void callbackAdjust(int , void *) 16 { 17  
18     Filter::HighPass(src, dst, radius / 10.0 ); 19     imshow("photo", dst); 20 } 21  
22 int main() 23 { 24     src = imread("building.jpg"); 25  
26     if ( !src.data ) { 27         cout << "error read image" << endl; 28         return -1; 29  } 30  
31     namedWindow("photo"); 32     createTrackbar("radius", "photo", &radius, 100, callbackAdjust); 33     callbackAdjust(0, 0); 34  
35  waitKey(); 36     return 0; 37 }

運行效果:

高反差保留得到的圖是一個近似於灰度的圖片。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM