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 }

    运行效果:

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

  • 相关阅读:
    C++指针使用方法解惑
    2007中国手机网络游戏TOP10和2006中国手机网络游戏回顾
    美丽的诗
    三分钟就知道谁是你最爱的人
    基于先进思想指导的信息化
    Nginx 常见应用技术指南
    Web开发与设计之Google兵器谱Web开发与设计利器
    openssl建立证书,非常详细配置ssl+apache
    Nginx 二级子域名完美方案
    正则表达式30分钟入门教程
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13801395.html
Copyright © 2011-2022 走看看