用OpenCV实现Photoshop算法(九): 高反差保留
系列文章:
用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算法(九): 高反差保留相关推荐
- 用OpenCV实现Photoshop算法(七): 调整色相饱和度
系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...
- 用OpenCV实现Photoshop算法(四): 色阶调整
系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...
- 用OpenCV实现Photoshop算法(八): 可选颜色
系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...
- 用OpenCV实现Photoshop算法(十): 美白磨皮(未完)
系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...
- 用OpenCV实现Photoshop算法(五): 亮度对比度调整
系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Photoshop算法(二): 图像剪切 用OpenCV实现Photoshop算法(三): 曲线调整 用Ope ...
- OpenCV与图像处理学习九——连通区域分析算法(含代码)
OpenCV与图像处理学习九--连通区域分析算法(含代码) 一.连通区域概要 二.Two-Pass算法 三.代码实现 一.连通区域概要 连通区域(Connected Component)一般是指图像中 ...
- OpenCV学习笔记(九): 漫水填充:floodFill()
OpenCV学习笔记(九): 漫水填充:floodFill() 定义: 漫水填充法是一种用特定的颜色填充联通区域(自动选中了和种子点相连的区域,接着将该区域替换成指定的颜色)通过设置可连通像素的上下限 ...
- 【OpenCV学习】(九)目标识别之车辆检测与计数
[OpenCV学习](九)目标识别之车辆检测及计数 背景 本篇将具体介绍一个实际应用项目--车辆检测及计数,在交通安全中是很重要的一项计数:当然,本次完全采用OpenCV进行实现,和目前落地的采用深度 ...
- OpenCV使用 GrabCut 算法进行交互式前景提取
OpenCV使用 GrabCut 算法进行交互式前景提取 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Python,OpenCV中的GrabCut 算法来提取图像中的前景,并为此创建一个交互 ...
最新文章
- “chaos”的算法--之链表面试题
- no module named sklearn
- 手机bootstrap搜索框_你知道手机可以对摄像头进行图像调节吗
- 配置apache支持cgi
- Vagrant 手册之多个虚拟机 multi-machine
- 05-cache相关的系统寄存器
- mysql数据库dao模式_古诗MySQL数据库DAO模式实现
- 移动端C#病毒“东山再起”,利用知名应用通信实现远控隐私窃取
- java技术系列(一) Enum
- java常用类总结_java——常用类的总结
- *p++,(*p)++,*++p,++*p有什么不同
- 给超链接(a标签)加onclick事件
- Mockito—参数匹配~任意
- echarts时间散点图_ECharts 实现地图散点图(下)
- 在DataGrid页眉上添加全选的CheckBox控件
- C++学习(二六七)find_package() find_library()
- python网络刷学时_python实践—网络刷博器
- 获取Bootcamp 6 下载地址(mac装win10)
- html转换为jpg格式,JPG转换成HTML的两种方法
- Jenkins自动构建部署项目