系列文章:

用OpenCV实现Photoshop算法(一): 图像旋转

用OpenCV实现Photoshop算法(二): 图像剪切

用OpenCV实现Photoshop算法(三): 曲线调整

用OpenCV实现Photoshop算法(四): 色阶调整

用OpenCV实现Photoshop算法(五): 亮度对比度调整

用OpenCV实现Photoshop算法(六): 变为黑白图像

用OpenCV实现Photoshop算法(七): 调整色相饱和度

用OpenCV实现Photoshop算法(八): 可选颜色

用OpenCV实现Photoshop算法(九): 高反差保留

九、高反差保留(High Pass)

高反差保留是一个Photoshop的滤镜功能。常见的用法是用于锐化,对图像进行1个像素的高反差保留,再将得到的新图像以强光混合方式叠加在原图上,可得到非常好的锐化效果。如果需要深度锐化,反复作这个动作。

(一)原理

请看这一篇:PS理论:高斯模糊与高反差保留

(二)算法:

首先对原图进行高斯模糊, 然后将新图与原图的每一个点的数值相减,再加127,则得到高反差保留图。 

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

(三)OpenCV实现

1, 我用OpenCV 编写了一个 Filter 滤镜类。在源文件 Filter.hpp,  Filter.cpp中

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;
}

运行效果:

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

用OpenCV实现Photoshop算法(九): 高反差保留相关推荐

  1. 用OpenCV实现Photoshop算法(七): 调整色相饱和度

    系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...

  2. 用OpenCV实现Photoshop算法(四): 色阶调整

    系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...

  3. 用OpenCV实现Photoshop算法(八): 可选颜色

    系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...

  4. 用OpenCV实现Photoshop算法(十): 美白磨皮(未完)

    系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...

  5. 用OpenCV实现Photoshop算法(五): 亮度对比度调整

    系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...

  6. OpenCV与图像处理学习九——连通区域分析算法(含代码)

    OpenCV与图像处理学习九--连通区域分析算法(含代码) 一.连通区域概要 二.Two-Pass算法 三.代码实现 一.连通区域概要 连通区域(Connected Component)一般是指图像中 ...

  7. OpenCV学习笔记(九): 漫水填充:floodFill()

    OpenCV学习笔记(九): 漫水填充:floodFill() 定义: 漫水填充法是一种用特定的颜色填充联通区域(自动选中了和种子点相连的区域,接着将该区域替换成指定的颜色)通过设置可连通像素的上下限 ...

  8. 【OpenCV学习】(九)目标识别之车辆检测与计数

    [OpenCV学习](九)目标识别之车辆检测及计数 背景 本篇将具体介绍一个实际应用项目--车辆检测及计数,在交通安全中是很重要的一项计数:当然,本次完全采用OpenCV进行实现,和目前落地的采用深度 ...

  9. OpenCV使用 GrabCut 算法进行交互式前景提取

    OpenCV使用 GrabCut 算法进行交互式前景提取 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Python,OpenCV中的GrabCut 算法来提取图像中的前景,并为此创建一个交互 ...

最新文章

  1. “chaos”的算法--之链表面试题
  2. no module named sklearn
  3. 手机bootstrap搜索框_你知道手机可以对摄像头进行图像调节吗
  4. 配置apache支持cgi
  5. Vagrant 手册之多个虚拟机 multi-machine
  6. 05-cache相关的系统寄存器
  7. mysql数据库dao模式_古诗MySQL数据库DAO模式实现
  8. 移动端C#病毒“东山再起”,利用知名应用通信实现远控隐私窃取
  9. java技术系列(一) Enum
  10. java常用类总结_java——常用类的总结
  11. *p++,(*p)++,*++p,++*p有什么不同
  12. 给超链接(a标签)加onclick事件
  13. Mockito—参数匹配~任意
  14. echarts时间散点图_ECharts 实现地图散点图(下)
  15. 在DataGrid页眉上添加全选的CheckBox控件
  16. C++学习(二六七)find_package() find_library()
  17. python网络刷学时_python实践—网络刷博器
  18. 获取Bootcamp 6 下载地址(mac装win10)
  19. html转换为jpg格式,JPG转换成HTML的两种方法
  20. Jenkins自动构建部署项目

热门文章

  1. php调用c dll,PHP调用DLL的方法
  2. 用matlab计算八木天线增益,matlab控制运算精度函数digits(A)和vpa(B)的使用方法
  3. yiwoSDK QQ通讯协议的封装 快速做出QQ推广产品
  4. 一个合格的IT信息化公司需要具备哪些资质?
  5. 【JavaWeb开发】使用java实现简单的Excel文件的导入与导出(POI)
  6. 小米12pro是双卡双待吗 小米12pro是5g手机吗
  7. 微信支付普通商户分账-请求单次分账
  8. 水晶报表 动态批量打印本地图片
  9. PE盘和系统启动盘制作
  10. php设置中奖概率算法