高反差保留滤镜学习OpenCV:滤镜系列(11)——高反差保留
这几周笔者几篇文章介绍了改高反差保留滤镜的文章. 关联文章的地址
高反差保留就是高通滤波
r=(pix[x,y]-avg(R))/128
pix[x,y]*r+128*(1-r)
#include <math.h>
#include <opencv/cv.h>
#include <opencv/highgui.h> using namespace cv;
using namespace std; int R=5; int main()
{
Mat src = imread("D:/10.jpg",1);
int width=src.cols;
int heigh=src.rows;
Mat img;
src.copyTo(img);
Mat avg;
//GaussianBlur(img,avg,Size(R,R),0.0);
blur(img,avg,Size(R,R));
Mat dst(img.size(),CV_8UC3);
float tmp;
for (int y=0;y<heigh;y++)
{
uchar* imgP=img.ptr<uchar>(y);
uchar* avgP=avg.ptr<uchar>(y);
uchar* dstP=dst.ptr<uchar>(y);
for (int x=0;x<width;x++)
{
float r0 = abs((float)imgP[3*x]-(float)avgP[3*x])/128;
tmp = abs( ((float)imgP[3*x] )*r0 + 128*(1-r0) );
tmp=tmp>255?255:tmp;
tmp=tmp<0?0:tmp;
dstP[3*x]=(uchar)(tmp); float r1 = abs((float)imgP[3*x+1]-(float)avgP[3*x+1])/128;
tmp = (uchar)abs( ((float)imgP[3*x+1])*r1 + 128*(1-r1) );
tmp=tmp>255?255:tmp;
tmp=tmp<0?0:tmp;
dstP[3*x+1]=(uchar)(tmp); float r2 = abs((float)imgP[3*x+2]-(float)avgP[3*x+2])/128;
tmp = (uchar)abs( ((float)imgP[3*x+2])*r2 + 128*(1-r2) );
tmp=tmp>255?255:tmp;
tmp=tmp<0?0:tmp;
dstP[3*x+2]=(uchar)(tmp);
}
}
imshow("high",dst); //高通滤波测试 Mat kern = (Mat_<char>(3,3) << -1, -1, -1,
-1, 5, -1,
-1, -1, -1);
Mat dstF;
filter2D(img,dstF,img.depth(),kern);
imshow("kernel",dstF); waitKey();
imwrite("D:/高反差保留.jpg",dst);
imwrite("D:/高通滤波.jpg",dstF);
}
“一年之计在于春”,十几岁的年纪,正是人生的春天,别辜负了岁月老人的厚爱与恩赐。行动起来,播种梦想吧!
原图:
高反差保留:
高通滤波器:
文章结束给大家分享下程序员的一些笑话语录:
刹车失灵
有一个物理学家,工程师和一个程序员驾驶着一辆汽车行驶在阿尔卑斯山脉 上,在下山的时候,忽然,汽车的刹车失灵了,汽车无法控制地向下冲去, 眼看前面就是一个悬崖峭壁,但是很幸运的是在这个悬崖的前面有一些小树 让他们的汽车停了下来, 而没有掉下山去。 三个惊魂未定地从车里爬了出来。
物理学家说, “我觉得我们应该建立一个模型来模拟在下山过程中刹车片在高 温情况下失灵的情形”。
工程师说, “我在车的后备厢来有个扳手, 要不我们把车拆开看看到底是什么 原因”。
程序员说,“为什么我们不找个相同的车再来一次以重现这个问题呢?”
---------------------------------
原创文章 By
高反差保留和滤镜
---------------------------------
高反差保留滤镜学习OpenCV:滤镜系列(11)——高反差保留的更多相关文章
- 学习OpenCV研究报告指出系列(二)源代码被编译并配有实例project
下载并安装CMake3.0.1 要自己编译OpenCV2.4.9的源代码.首先.必须下载编译工具,使用的比較多的编译工具是CMake. 以下摘录一段关于CMake的介绍: CMake是一个 ...
- opencv滤镜-使用opencv实现各种图像滤镜特效
图像处理-滤镜 链接:https://mangoroom.cn/opencv/image-processing-filter.html opencv滤镜-实现晕影vignetting效果 链接:htt ...
- [纯小白学习OpenCV系列]官方例程00:世界观与方法论
2015-11-11 ----------------------------------------------------------------------------------- 其实,写博 ...
- Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例
概要 前一章,我们学习了HashMap.这一章,我们对Hashtable进行学习.我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable.第1部分 Ha ...
- 《学习OpenCV》练习题第五章第一题ab
这道题是载入一幅带有有趣纹理的图像并用不同的模板(窗口,核)大小做高斯模糊(高斯平滑),然后比较用5*5大小的窗口平滑图像两次和用11*11大小的窗口平滑图像一次是否接近相同. 先说下我的做法,a部分 ...
- 《学习OpenCV》练习题第四章第二题
#include <highgui.h> #include <cv.h> #pragma comment (lib,"opencv_calib3d231d.lib&q ...
- 【从零学习openCV】IOS7下的人脸检測
前言: 人脸检測与识别一直是计算机视觉领域一大热门研究方向,并且也从安全监控等工业级的应用扩展到了手机移动端的app,总之随着人脸识别技术获得突破,其应用前景和市场价值都是不可估量的,眼下在学习ope ...
- Deep Learning(深度学习)学习笔记整理系列之(八)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(一)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-0 ...
随机推荐
- Android 通过网络打开自己的APP(scheme)
通过使用手机的浏览器(内部.第三方能够)访问网页,点击一个链接,开始实施自己的应用程序,和传输数据. 第一Mainifest面对文件启动Activity添加过滤器. <activity andr ...
- 安装后维修指南再次双系统xp、win7、ubuntu
在本文中,主机为单个硬盘,三个步骤. 第一步: 使用liveCD要么u盘引导计算机进入ubuntu.这里最好是确保两个系统版本号之间的一致性. 菜单 System -> Administrati ...
- C语言使用SQLite3数据库
原文:C语言使用SQLite3数据库 SQLite是一个著名的免费数据库(不管是商用还是私人使用都免费),已经向众多公司如Adobe, Airbus, Apple, google, GE, Micro ...
- 安装Codeception框架
安装Codeception框架 打开终端,进入项目根目录: composer require "codeception/codeception:*" 安装完成,在vendor目录会 ...
- 空连接ipc$入侵
使用命令 net use url=file://\\IP\ipc$\\IP\ipc$ "" /user:"" 就可以简单地和目标建立一个空连接(需要目标开放ip ...
- iOS_23_undress Girl
最后效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize/400/fill ...
- selenium2入门 用selenium安装、加载、启用插件(一)
一:下载 下载地址是:http://docs.seleniumhq.org/download/
- 如何查找Linux的函数定义的位置?
网上的许多站点提供这样的服务,如下面这个: http://lxr.free-electrons.com/ident?v=3.10 Linux的错误返回值:3.10版本 Linux/include/ua ...
- 使用.net备份和还原数据库
原文:使用.net备份和还原数据库 CSDN网友的提问http://community.csdn.net/Expert/TopicView3.asp?id=4929678C#实现SQLSERVER20 ...
- 使用JasperReport+iReport进行Web报表开发
使用JasperReport+iReport进行Web报表开发 前言 在实际工程中非常,报告是其中很重要的一部分,结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥有复杂表头的.多维 ...