zoukankan      html  css  js  c++  java
  • 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 }

    运行效果:

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

  • 相关阅读:
    mongodb的学习-1-NoSQL
    mongodb的学习-3-在Mac上的安装配置
    面试题之算法与编程
    笔试题之javaweb
    笔试题之j2ee
    笔试题之代码查错
    笔试题之java基础
    javaweb笔记分享
    过滤器入门
    jsp入门
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13801395.html
Copyright © 2011-2022 走看看