图像变换——对数变换

原创 2013年12月04日 17:29:30

对数变换是将窄带低灰度输入图像值映射为一宽带输出值。相对的是输入灰度的高调整值。这种变化可以扩展被压缩的高值图像中的暗像素。相对的是反对数变换的调整值。

 

#include "math.h"
#include"cv.h"
#include"highgui.h"
//#include <iostream>
using namespace std;


int main(int argc,char **argv)
{
 /*IplImage *img=cvLoadImage("F:\HU\testopencv\pp.jpg");
 cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);
 cvShowImage("Example1",img);
 cvWaitKey(0);
 cvReleaseImage(&img);
 cvDestroyWindow("Example1"); */
 //图像反转
 IplImage *pImg;
 IplImage *pImg_gray;
 if(argc == 3 && (pImg = cvLoadImage(argv[1],-1))!= 0)
 {  
  pImg_gray = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U, 1);
  cvCvtColor(pImg,pImg_gray,CV_BGR2GRAY);
  
  int img_width = pImg->width;//image width
  int img_height = pImg->height;//image height

  uchar *data;
  data = (uchar *)pImg_gray->imageData;

  for (int i = 0; i < img_height - 1; i++)
  {
   for (int j = 0; j < img_width - 1; j++)
   {

    uchar cur = data[i * img_width + j];
     
    //cur =  3 * log((double)cur + 1.0);
    cur =  6 * sqrt((float)cur);
    if (cur < 0)
    {
     cur =0;
    }
    else if(cur > 255)
    {
     cur =255;
    }
   }
  }
 
  cvSaveImage(argv[2],pImg_gray);

  cvNamedWindow("log", 1);//create window
 
  cvShowImage("log", pImg_gray);

  cvWaitKey(0);

  cvDestroyWindow("canny");

  cvReleaseImage(&pImg);
  cvReleaseImage(&pImg_gray);
  
  return 0;
 }
 //printf("%s\n %s\n%s\n", argv[0],argv[1],argv[2]);
 return -1;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

OpenCV学习笔记(一)对数变换

关于对数变换,目的就是将输入图像中较窄的低灰度值映射到输出图像较宽的灰度值。s=log(1+r); 在程序中使用add(InputArray src1, InputArray src2, Out...
  • spw_1201
  • spw_1201
  • 2016年12月06日 09:27
  • 1832

灰度图像的对数变换原理及OpenCV代码实现!

对数变换的公式为: 其中c为常数,r>=0  对数变换目前我知道的有两个作用: ①因为对数曲线在像素值较低的区域斜率较大,像素值较高的区域斜率比较低,所以图像经过对数变换之后,在较暗的区域对比度将得...
  • wenhao_ir
  • wenhao_ir
  • 2016年06月13日 16:14
  • 3688

对数变换的三种实现方法

#include #include #include #include using namespace cv; // 对数变换方法1 cv::Mat logTransf...
  • Gone_HuiLin
  • Gone_HuiLin
  • 2016年11月18日 20:39
  • 460

数字图像处理-空间域图像增强(一)(图像反转,对数变换,幂次变换、分段线性变换)

空间域增强的第一部分:图像反转,对数变换,幂次变换、分段线性变换
  • mghhz816210
  • mghhz816210
  • 2014年07月11日 15:34
  • 10227

opencv实现对数log灰度变换

我的思路太窄了,想了一个遍历的方法。也可以先做通道分解,分析单个通道的log变换。 菜鸟一个,若是有好的想法,还请赐教。 Mat log_image; log_image.create(5...
  • u012033076
  • u012033076
  • 2014年03月15日 16:44
  • 2921

学习Opencv2.4.9(三)---图像的基本运算

作者:咕唧咕唧liukun321来自:http://blog.csdn.net/liukun321在初学这部分的时候,被各种运算搞得晕头转向.在这里就把各种图像运算分个类。以后再看起来也更有条理一些。...
  • liukun321
  • liukun321
  • 2014年11月25日 08:20
  • 20666

OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)

1. 基于直方图均衡化的图像增强 直方图均衡化是通过调整图像的灰阶分布,使得在0~255灰阶上的分布更加均衡,提高了图像的对比度,达到改善图像主观视觉效果的目的。对比度较低的图像适合使用直方图均衡化方...
  • dcrmg
  • dcrmg
  • 2016年12月15日 23:46
  • 17589

图像预处理——对数变换

[图像处理]_对数变换  算法实现 对数变换可实现图像的水平平移、竖直平移、对称变换等操作 也可实现图像灰度的扩展和压缩功能。 实现代码如下:  int LogTranslation(Mat srcI...
  • xiao_lxl
  • xiao_lxl
  • 2015年05月07日 14:54
  • 1591

图像处理中常见变换

                                                                 图像处理中常见变换   (1)KL变换    KL变换是遥感图像增强和...
  • byxdaz
  • byxdaz
  • 2006年05月09日 17:13
  • 6673

灰度对数变换

理论基础:          对数变换的一般表达式为:       t=c *log(1+s)          其中 c为尺度比例常数,s为原图灰度值,t 为变换后的目标灰度值。...
  • s12244315
  • s12244315
  • 2015年10月21日 19:10
  • 1778
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图像变换——对数变换
举报原因:
原因补充:

(最多只允许输入30个字)