一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

高反差保留(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 }

运行效果:

高反差保留得到的图是一个近似于灰度的图片。

posted on 2020-10-12 10:45  一杯清酒邀明月  阅读(1430)  评论(0编辑  收藏  举报