opencv入门学习之五:图像的对数变换

来源:互联网 发布:windows开发是什么工作 编辑:程序博客网 时间:2024/04/28 13:46

博客用于知识记录和学习交流,欢迎大家互动学习。
作者:JackGao24 博客园文章链接:
作者:JackGao16 CSDN文章链接:
http://blog.csdn.net/u013108511/article/details/64927943
邮箱:gshuai16@mail.ustc.edu.cn

1、图像对数变换的原理

图像的对数变换作用:
由于对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率较小,所以图像经过对数变换后,较暗区域的对比度将有所提升,所以就可以增强图像的暗部细节。

对数变换公式如下:
这里写图片描述其中c为常数,r>=0;

2、对数变换处理

#include<highgui.h>   #include <opencv2/opencv.hpp>  using namespace std;void handleLogImage(IplImage* src, IplImage* dst,double a){      for(int i=0; i<src->height;i++){          for(int j=0;j<src->width;j++){              CvScalar s = cvGet2D(src, i, j);              s.val[0] = a*log((double)i + 1.0);             cvSet2D(dst, i, j, s);          }      }  }  int main() {    IplImage* src = cvLoadImage ("pic.jpg", 1);     IplImage* dst = cvCreateImage (cvGetSize(src), 8, 3);    handleLogImage(src,dst,50);     // 显示原图      cvNamedWindow("src", CV_WINDOW_AUTOSIZE);      cvShowImage("src", src);     // 显示对数变换后的图      cvNamedWindow("dst", CV_WINDOW_AUTOSIZE);      cvShowImage("dst", dst);     // 等待60000 ms后窗口自动关闭      cv::waitKey(60000);     return 0;}

输出结果:
这里写图片描述

欢迎大家留言,学习交流共同学习。

我是Jack,学无止境。

0 0
原创粉丝点击