• 高反差保留滤镜学习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
    高反差保留和滤镜
    ---------------------------------

  • 相关阅读:
    Elasticsearch系列---常见搜索方式与聚合分析
    Elasticsearch系列---Elasticsearch的基本概念及工作原理
    Elasticsearch系列---初识Elasticsearch
    记一次ES查询数据突然变为空的问题
    04、管道符、重定向与环境变量
    03、新手必须掌握的Linux命令
    02、安装Linux系统
    01、VM安装教程
    02、HTML 基础
    01、HTML 简介
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3153303.html
Copyright © 2020-2023  润新知