精华内容
下载资源
问答
  • 在数字图像处理学习笔记(八)中,已对图像增强之线性变换、对数变换、幂律变换、分段线性变换、灰度级分层等做过详细理论论述,本文将对上述理论知识做实践方面的实现。 具体理论知识可参考我之前的博文:数字图像...
  • matlab 简单的图像对数变换
  • 对数变换 matlab

    2015-05-11 15:13:56
    对数变换是matlab图像处理技术中增强图像的一种预处理方法 ,当希望对图像的低亮度区有较大的扩展而对高亮度区压缩时,可采用此种变换。
  • 此代码演示了如何使用Log Transform进行图像增强
  • 为了提高人脸识别的识别率,提出了一种基于自适应对数变换和主成分分析(PCA)算法的人脸识别方法。将人脸图像进行自适应对数变换,使人脸图像由于光照不均而引起的图像模糊得到改善;使用PCA算法对图像进行降维和...
  • 针对遥感影像中的阴影会导致地物信息受损、影像质量下降的问题,提出了联合对数变换与局部增强的高分遥感影像阴影补偿方法。在阴影检测结果的基础上,首先设计了改进的对数变换图像增强方法,构建了对数变换模型,实现了...
  • 冈萨雷斯数字图像处理(第三版) matlab代码 图3.5 傅里叶频谱及对数变换
  • 对数变换

    千次阅读 2017-06-05 14:34:16
    对数变换表达式: g = c*log(1 + f) c是常数,f是浮点数。 其主要应用是压缩动态范围。如傅里叶频谱的取值范围是[0, 106]或更高。将其以线性缩放到8比特显示器时,频谱中低灰度的可见细节容易丢失。通过对数计算,...

    对数变换表达式:

    g = c*log(1 + f)  c是常数,f是浮点数。

    其主要应用是压缩动态范围。如傅里叶频谱的取值范围是[0, 106]或更高。将其以线性缩放到8比特显示器时,频谱中低灰度的可见细节容易丢失。通过对数计算,106可以降到14左右[ln(106) = 13.8]

     

    为了压缩值出现在完整的显示范围,对8比特来说,使用

    gs = im2unit8(mat2gray(g));

    其中:mat2gray(g)会将值限定在[0, 1]范围内,im2unit8则限定在[0, 255]。

    function f = Log_Transformation() 
    %0至10^6间的傅里叶频谱
    f = imread('Fig0205(a).tif');
    imshow(f);
     
    g = im2uint8(mat2gray(log(1 +double(f))));
    figure
    imshow(g);




    展开全文
  • 诸如一个前100行为0.0001,102行为0.00000000001,102到200行为0.0002,300到400行为10等,也即是HDR图像的标配,此时常规的对数变换还是无法得到良好的对比度的,原因在于log(1+0.00005)=4.999e-5,而log(20+1)...

    这篇仅当作随手小记,可能不对,请各位及时指正。

    在学习图像处理的基本知识的时候,我们常常能听到诸如由于对数本身上凸的性质,它可以把低灰度(较暗)部分的亮度提高。

    由对数函数的性质,确实能将暗部提高,亮部压缩。但是凡事都有限度的。诸如一个前100行为0.0001,102行为0.00000000001,102到200行为0.0002,300到400行为10等,也即是HDR图像的标配,此时常规的对数变换还是无法得到良好的对比度的,原因在于log(1+0.00005)=4.999e-5,而log(20+1)=3.0445,如此两者对比度差距仍是10^6,无法合理显示的,此时需要以下操作

                                                            log(1+I*10^6)

    也即在对数变换时对数据乘以较大的数,起初我还想着是利用了对数曲线拉伸暗部的性质,结果并不是,真正的原因我认为反而是利用了对数函数对亮部的压缩!

    一个数值算例: log(1+5e-5*10^6)=3.9318,而此时log(1+20*10^6)=16.8112,此时两者的对比度已经被拉近到4倍了,对比之前的十万量级,明显已经到了可以被8位显示器显示的位置,这也是我理解的为什么对图像乘以一定数值可以得到明确的对比度,当然,变亮也是不可避免地,不过HDR嘛,一般都暗不是,稍微亮一点也挺好~~~

    展开全文
  • 如题:基于FPGA的自然对数变换器的设计与实现,通过FPGA实现自然对数
  • 选择一个图像并应用 log_expT.m ti 你可以得到对数变换对数变换图像的相应指数变换。 以便我们可以看到原始图像和指数图像之间的差异。
  • 使用C++、opencv实现对图像的对数变换及非线性变换,实现图像增强 相关API: void normalize(InputArray src, OutputArray dst, double alpha=1, double beta=0, int norm_type=NORM_L2, int dtype=-1, Input...

    使用C++、opencv实现对图像的对数变换及非线性变换,实现图像增强

    相关API:

    void normalize(InputArray src, OutputArray dst, double alpha=1, double beta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray() )

    normalize函数的作用是进行矩阵的归一化。归一化就是把要处理的数据经过某种算法的处理限制在所需要的范围内。首先归一化是为了后面数据处理的方便,其次归一化能够保证程序运行时收敛加快。归一化的具体作用是归纳同意样本的统计分布性,归一化在0-1之间是统计的概率分布,归一化在某个区间上是统计的坐标分布,在机器学习算法的数据预处理阶段,归一化也是非常重要的步骤。

    第一个参数,InputArray类型的src。输入图像,即源图像,填Mat类的对象即可。
    第二个参数,OutputArray类型的dst。函数调用后的运算结果存在这里,和源图片有一样的尺寸和类型。
    第三个参数,double类型的 alpha。归一化后的最大值,有默认值1。
    第四个参数,double类型的beta。归一化后的最大值,有默认值0。
    第五个参数,int类型的 norm type。归一化类型,有NORM_INF、 NORM_L1、NORM_L2和 NORM_MINMAX等参数可选,有默认值 NORM_L2。

    第六个参数,int类型的 dtype,有默认值-1。当此参数取负值时,输出矩阵和src有同样的类型,否则,它和src有同样的通道数,且此时图像深度为CV_MAT_DEPTH(dtype)。
    第七个参数,InputArray类型的mask,可选的操作掩膜,有默认值noArray()。

    void meanStdDev(InputArray src, OutputArray mean, OutputArray stddev, InputArray mask=noArray())

    第一个参数src,输入数组,应该有1到4个通道,以便结果可以存储在Scalar中。

    第二个参数mean,输出参数,计算的平均值。

    第三个参数srddev,输出参数,计算标准偏差。

    第四个参数mask,可选的操作掩膜,有默认值没有掩膜

    meanStdDev计算结果是double类型的。
    meanStdDev计算的均值和标准差都以Mat形式返回,这里返回的是1X1的矩阵。所以访问结果,要访问Mat的元素。

    以上参考:毛星云《OpenCV3编程入门》、https://blog.csdn.net/billbliss/article/details/44178737 


    代码通过对图像进行对数变换和非线性变换增强图像暗处细节,适用于彩色图像及灰度图像,但灰度图像不要使用cvtColor函数转换,直接以三通道形式输入。

    其中,对数变换使用函数为dst(i,j)=c*log(1+src(i,j)),src(i,j)为源图像(i,j)处的像素值,c为可调节的系数,dst(i,j)为经过对数变换后(i,j)处的像素值。

    非线性变换的公式如下图:

    #include "stdafx.h"
    #include "opencv2/imgproc/imgproc.hpp"
    #include "opencv2/highgui/highgui.hpp"
    #include <iostream>
    #include <fstream>
    #include <iterator>
    #include <math.h>
    using namespace cv;
    using namespace std;
    
    //定义声明一些全局变量和函数
    Mat src = imread("C:\\Users\\lenovo\\Desktop\\4.jpg");
    
    Mat hsv, lab, ycrcb;
    Mat logdst, nonlinerdst;
    Mat dst(src.size(), src.type(), Scalar::all(0));
    
    void LogTransform(cv::Mat& src, cv::Mat& dst, double c);//对数变换函数
    void non_liner_tran(Mat& src, Mat& dst);//非线性变换函数
    void balance(Mat& src, Mat& logdst, Mat&  nonlinerdst);//平衡图像函数
    
    int main(int argc, char** argv)
    {
    	system("color 02");
    	/*//获取图像每个像素点的RGBHSVLabYCrCb的值,并写入文件中
    	cvtColor(src, hsv, COLOR_BGR2HSV);
    	cvtColor(src, lab, COLOR_BGR2Lab);
    	cvtColor(src, ycrcb, COLOR_BGR2YCrCb);
    	FILE *fp;
    	fopen_s(&fp, "C:\\Users\\lenovo\\Desktop\\RGB数据.xls", "a");
    	for(int i=0;i<src.rows;i++)
    		for (int j = 0; j < src.cols; j++)
    		{
    			fprintf(fp, "%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n", src.at<Vec3b>(i, j)[2], src.at<Vec3b>(i, j)[1], src.at<Vec3b>(i, j)[0],
    				hsv.at<Vec3b>(i, j)[0], hsv.at<Vec3b>(i, j)[1], hsv.at<Vec3b>(i, j)[2],
    				lab.at<Vec3b>(i, j)[0], lab.at<Vec3b>(i, j)[1], lab.at<Vec3b>(i, j)[2], 
    				ycrcb.at<Vec3b>(i, j)[0], ycrcb.at<Vec3b>(i, j)[1], ycrcb.at<Vec3b>(i, j)[2]);
    		}
    	fclose(fp);*/
    
    	//对数变换
    	LogTransform(src, logdst, 8);
    	//非线性变换
    	non_liner_tran(src, nonlinerdst);
    	//平衡图像
    	balance(src, logdst, nonlinerdst);
    	//显示原图
    	namedWindow("src", WINDOW_NORMAL);
    	imshow("src", src);
    	waitKey(0);
    	return 0;
    }
    
    /*对数变换方法1*(灰度图像和彩色图像都适用)*/
    void LogTransform(cv::Mat& src, cv::Mat& dst, double c) {
    	int nr = src.rows;
    	int nc = src.cols*src.channels();
    	src.copyTo(dst);
    	dst.convertTo(dst, CV_64F);
    	if (src.isContinuous() && dst.isContinuous()) {  //判断图像连续性
    		nr = 1;
    		nc = src.rows*src.cols*src.channels(); //行数*列数 * 通道数= 一维数组的个数
    	}
    
    	for (int i = 0; i < nr; i++) {
    		const uchar* srcdata = src.ptr <uchar>(i);  //采用指针访问像素,获取第i行的首地址
    		double* dstdata = dst.ptr <double>(i);
    		for (int j = 0; j < nc; j++) {
    			dstdata[j] = c*log(double(1.0 + srcdata[j])); //开始处理每个像素
    		}
    	}
    	normalize(dst, dst, 0, 255, NORM_MINMAX); //经过对比拉升(将像素值归一化到0-255)得到最终的图像
    	dst.convertTo(dst, CV_8U);  //转回无符号8位图像
    	namedWindow("logdst", WINDOW_NORMAL);
    	imshow("logdst", dst);
    }
    
    void non_liner_tran(Mat& src, Mat& dst)
    {
    	src.copyTo(dst);
    	//拆分图像,获取每个通道的平均像素值
    	Mat channels[3];
    	Mat mat_mean[3], mat_stddev[3];
    	double vmean[3] = { 0 };
    	split(src, channels);
    
    	for (int n = 0; n < 3; n++)
    	{
    		meanStdDev(channels[n], mat_mean[n], mat_stddev[n]);
    		vmean[n] = mat_mean[n].at<double>(0, 0);
    	}
    	//非线性变换
    	double m = 0, kv = 0, a = 1;
    	for (int i = 0; i < src.rows; i++)
    	{
    		for (int j = 0; j < src.cols; j++)
    		{
    			for (int n = 0; n < 3; n++)
    			{
    				if ((src.at<Vec3b>(i, j)[n] >= 0) && (src.at<Vec3b>(i, j)[n] <= 60))
    				{
    					kv = 7;
    				}
    				else if ((src.at<Vec3b>(i, j)[n] > 60) && (src.at<Vec3b>(i, j)[n] <= 200))
    				{
    					kv = (src.at<Vec3b>(i, j)[n] - 60) / 70 + 7;
    				}
    				else if ((src.at<Vec3b>(i, j)[n] > 200) && (src.at<Vec3b>(i, j)[n] <= 255))
    				{
    					kv = (src.at<Vec3b>(i, j)[n] - 200) / 55 + 9;
    				}
    
    				m = kv*(src.at<Vec3b>(i, j)[n] / (src.at<Vec3b>(i, j)[n] + a*vmean[n]));
    				
    				dst.at<Vec3b>(i, j)[n] = (int)(2 / (1 + exp(-m)) - 1) * 255 - src.at<Vec3b>(i, j)[n];
    			}
    
    		}
    	}
    
    	namedWindow("nonlinerdst", WINDOW_NORMAL);
    	imshow("nonlinerdst", dst);
    }
    
    void balance(Mat& src, Mat& logdst, Mat&  nonlinerdst)
    {
    	for (int i = 0; i < src.rows; i++)
    	{
    		for (int j = 0; j < src.cols; j++)
    		{
    			for (int n = 0; n < 3; n++)
    			{
    				//将源图像、对数变换图像、非线性变换图像以一定比例合并
    				dst.at<Vec3b>(i, j)[n] = (int)(0.05*logdst.at<Vec3b>(i, j)[n] +
    					0.05*nonlinerdst.at<Vec3b>(i, j)[n] + 0.8*src.at<Vec3b>(i, j)[n]);
    			}
    		}
    	}
    	namedWindow("dst", WINDOW_NORMAL);
    	imshow("dst", dst);//显示经直方图均衡化的图像
    }

    源图像:

        

    对数变换后图像:

        

    非线性变换后图像:

        

    结果图:

        

    参考文献:http://xueshu.baidu.com/usercenter/paper/show?paperid=864f24732d62a37915e71dbea2050010&site=xueshu_se&hitarticle=1

    代码部分参考:http://www.pianshen.com/article/2960258309/

    展开全文
  • 回归模型中对数变换的含义

    千次阅读 2020-06-23 18:32:44
    1.1 因变量采用对数变换 ln(y^)=β0+β1×xln(\hat y)=\beta_0 +\beta_1 \times xln(y^​)=β0​+β1​×x x→x+1;y^1→y^2x \to x+1; \hat y_1 \to \hat y_2x→x+1;y^​1​→y^​2​ {y^1=eβ0+β1×xy^2=eβ0+β1...

    1 精确解释

    1.1 因变量采用对数变换

    l n ( y ^ ) = β 0 + β 1 × x ln(\hat y)=\beta_0 +\beta_1 \times x ln(y^)=β0+β1×x
    x → x + 1 ; y ^ 1 → y ^ 2 x \to x+1; \hat y_1 \to \hat y_2 xx+1;y^1y^2

    { y ^ 1 = e β 0 + β 1 × x y ^ 2 = e β 0 + β 1 × ( x + 1 ) \begin{cases} \hat y_1=e^{\beta_0 +\beta_1 \times x}\\ \hat y_2=e^{\beta_0 +\beta_1 \times (x+1)} \end{cases} {y^1=eβ0+β1×xy^2=eβ0+β1×(x+1)

    y ^ 2 y ^ 1 = e β 0 + β 1 × ( x + 1 ) e β 0 + β 1 × x = e [ β 0 + β 1 × ( x + 1 ) ] − [ β 0 + β 1 × x ] = e β 1 \begin{aligned} &\frac{\hat y_2}{\hat y_1}\\ &=\frac{e^{\beta_0+\beta_1 \times (x+1)}}{e^{\beta_0+\beta_1 \times x}}\\ &=e^{[\beta_0+\beta_1 \times (x+1)]-[\beta_0+\beta_1 \times x]}\\ &=e^{\beta_1} \end{aligned} y^1y^2=eβ0+β1×xeβ0+β1×(x+1)=e[β0+β1×(x+1)][β0+β1×x]=eβ1

    结论

    • x x x每增加一个单位变为 x + 1 x+1 x+1 y ^ \hat y y^变为原来的 e β 1 e^{\beta_1} eβ1
    • x x x每增加一个单位变为 x + 1 x+1 x+1 y ^ \hat y y^相比原来增加 [ e β 1 − 1 ] × 100 % [e^{\beta_1}-1]\times 100\% [eβ11]×100%

    1.2 自变量采用对数变换

    y ^ = β 0 + β 1 × l n ( x ) \hat y=\beta_0+\beta_1 \times ln(x) y^=β0+β1×ln(x)
    x → e × x ; y ^ 1 → y ^ 2 x \to e\times x; \hat y_1 \to \hat y_2 xe×x;y^1y^2
    { y ^ 1 = β 0 + β 1 × l n ( x ) y ^ 2 = β 0 + β 1 × l n ( e × x ) \begin{cases} \hat y_1=\beta_0+\beta_1 \times ln(x)\\ \hat y_2=\beta_0+\beta_1 \times ln(e \times x) \end{cases} {y^1=β0+β1×ln(x)y^2=β0+β1×ln(e×x)

    y ^ 2 − y ^ 1 = [ β 0 + β 1 × l n ( e × x ) ] − [ β 0 + β 1 × l n ( x ) ] = [ β 0 + β 1 × ( l n ( e ) + l n ( x ) ) ] − [ β 0 + β 1 × l n ( x ) ] = [ β 0 + β 1 × l n ( e ) + β 1 × l n ( x ) ] − [ β 0 + β 1 × l n ( x ) ] = β 1 × l n ( e ) = β 1 \begin{aligned} &\hat y_2-\hat y_1 \\ &=[\beta_0+\beta_1 \times ln(e \times x)]-[\beta_0+\beta_1 \times ln(x)]\\ &=[\beta_0+\beta_1 \times (ln(e)+ln(x))]-[\beta_0+\beta_1 \times ln(x)]\\ &=[\beta_0+\beta_1 \times ln(e)+\beta_1 \times ln(x)]-[\beta_0+\beta_1 \times ln(x)]\\ &=\beta_1 \times ln(e)\\ &=\beta_1 \end{aligned} y^2y^1=[β0+β1×ln(e×x)][β0+β1×ln(x)]=[β0+β1×(ln(e)+ln(x))][β0+β1×ln(x)]=[β0+β1×ln(e)+β1×ln(x)][β0+β1×ln(x)]=β1×ln(e)=β1
    结论

    • x x x变为原来的 e e e倍后,则 y ^ \hat y y^增加 β 1 \beta_1 β1
    • 如果使用以2为底的对数变换,则 x x x变为原来的2倍后, y ^ \hat y y^增加 β 1 \beta_1 β1

    1.3 因变量和自变量同时采用对数变换

    l n ( y ^ ) = β 0 + β 1 × l n ( x ) ln(\hat y)=\beta_0 +\beta_1\times ln(x) ln(y^)=β0+β1×ln(x)
    x → k × x ; y ^ 1 → y ^ 2 x \to k \times x; \hat y_1 \to \hat y_2 xk×x;y^1y^2
    { y ^ 1 = e β 0 + β 1 × l n ( x ) y ^ 2 = e β 0 + β 1 × l n ( k × x ) \begin{cases} \hat y_1=e^{\beta_0+\beta_1\times ln(x)}\\ \hat y_2=e^{\beta_0+\beta_1\times ln(k \times x)} \end{cases} {y^1=eβ0+β1×ln(x)y^2=eβ0+β1×ln(k×x)

    y ^ 2 y ^ 1 = e β 0 + β 1 × l n ( k × x ) e β 0 + β 1 × l n ( x ) = e [ β 0 + β 1 × l n ( k × x ) ] − [ β 0 + β 1 × l n ( x ) ] = e [ β 0 + β 1 × l n ( k ) + β 1 × l n ( x ) ] − [ β 0 + β 1 × l n ( x ) ] = e β 1 × l n ( k ) = [ e l n ( k ) ] β 1 = k β 1 \begin{aligned} &\frac{\hat y_2}{\hat y_1}\\ &=\frac{e^{\beta_0+\beta_1\times ln(k \times x)}}{e^{\beta_0+\beta_1\times ln(x)}}\\ &=e^{[\beta_0+\beta_1\times ln(k \times x)]-[\beta_0+\beta_1\times ln(x)]}\\ &=e^{[\beta_0+\beta_1 \times ln(k)+\beta_1 \times ln(x)] - [\beta_0+\beta_1\times ln(x)]}\\ &=e^{\beta_1 \times ln(k)}\\ &=[e^{ln(k)}]^{\beta_1}\\ &=k^{\beta_1} \end{aligned} y^1y^2=eβ0+β1×ln(x)eβ0+β1×ln(k×x)=e[β0+β1×ln(k×x)][β0+β1×ln(x)]=e[β0+β1×ln(k)+β1×ln(x)][β0+β1×ln(x)]=eβ1×ln(k)=[eln(k)]β1=kβ1
    结论

    • x x x变为原来的 k k k倍, y ^ \hat y y^变为原来的 k β 1 k^{\beta_1} kβ1
    • x x x变为原来的 k k k倍, y ^ \hat y y^增加 [ k β 1 − 1 ] × 100 % [k^{\beta_1} - 1]\times 100\% [kβ11]×100%

    2 粗略解释

    2.1 e β − 1 e^{\beta} - 1 eβ1 β \beta β的关系

    library(ggplot2)
    library(latex2exp)
    
    x <- seq(0, 0.5, 0.001)
    y1 <- x
    y2 <- exp(x) - 1
    df <- data.frame(x = x, y1 = y1, y2 = y2)
    
    ggplot(data = df) +
      geom_line(aes(x = x, y = y1, color = "beta"), size = 1) +
      geom_line(aes(x = x, y = y2, color = "exp(beta)-1"), size = 1) +
      labs(x = TeX('$\\beta$'), y = "Y") + 
      theme_classic()
    

    结论

    • β \beta β较小时, e β − 1 e^{\beta}-1 eβ1 β \beta β的值接近

    2.2 因变量采用对数变换

    l n Y = β 1 + β 2 t lnY=\beta_1+\beta_2t lnY=β1+β2t
    β 2 = d ( l n Y ) d t = d Y / Y d t \beta_2=\frac{d(lnY)}{dt}=\frac{dY/Y}{dt} β2=dtd(lnY)=dtdY/Y
    总结

    • β 2 \beta_2 β2测度了 Y Y Y的瞬时变化率
    • β 2 \beta_2 β2可粗略解释为: t t t每增加1个单位, Y Y Y增加 β 2 × 100 % \beta_2 \times 100\% β2×100%,如年均增长率。( e β 2 − 1 ≈ β 2 e^{\beta_2}-1\approx\beta_2 eβ21β2;当 β 2 \beta_2 β2较小时)

    2.3 自变量采用对数变换

    Y = β 1 + β 2 × l n x Y=\beta_1+\beta_2 \times lnx Y=β1+β2×lnx
    β 2 = d Y d ( l n x ) = d Y d x / x \beta_2=\frac{dY}{d(lnx)}=\frac{dY}{dx/x} β2=d(lnx)dY=dx/xdY
    总结

    • β 2 \beta_2 β2测度了 x x x轻微变化(百分比变化)后 Y Y Y的绝对变化量
    • β 2 \beta_2 β2可粗略解释为:当 x x x变化 1 % 1\% 1%时, Y Y Y绝对变化 0.01 × β 2 0.01\times \beta_2 0.01×β2

    2.4 因变量和自变量同时采用对数变换

    l n ( Y ) = β 1 + β 2 × l n x ln(Y)=\beta_1 +\beta_2\times lnx ln(Y)=β1+β2×lnx
    β 2 = d ( l n Y ) d ( l n x ) = d Y / Y d x / x \beta_2=\frac{d(lnY)}{d(lnx)}=\frac{dY/Y}{dx/x} β2=d(lnx)d(lnY)=dx/xdY/Y
    总结

    • β 2 \beta_2 β2测度了 Y Y Y x x x的弹性,如 Y Y Y为某商品的需求量, x x x为该商品价格, β 2 \beta_2 β2为需求的价格弹性
    • β 2 \beta_2 β2可粗略解释为: x x x变动 1 % 1\% 1%引起 Y Y Y变动的百分数
    展开全文
  • 这个 m 文件对图像进行对数转换
  • ln(1/x) + lnx = ln(x^(-1)) + lnx = -lnx + lnx = 0 即对一个数(如x)取对数,与其倒数(1/x)取对数,互为相反数。 若要比较两个函数在某区间内变化的相对快慢,可对两个函数做减法,构造一个目标函数,利用求导...
  • 对数变换的通用形式为:,其中c是一个常数, 由对数函数的性质可知,改变换将范围较窄的低灰度值映射为较宽范围的灰度值,相反地,对高输入灰度值也是如此。 我们使用这种类型的变换来扩展图像中,暗像素的值,...
  • ADL5310是美国ADI公司生产的具有两个独立通道的双对数变换器。它具有对光电转换的最优化接口和温度特性稳定的对数输出,同时带有可由用户配置的输出缓冲放大器,其对数转换传递函数的斜率和截距均可由用户...
  • 数据预处理之对数变换

    千次阅读 2020-04-26 16:01:42
    对数变换(log transformation)是特殊的一种数据变换方式,它可以将一类我们理论上未解决的模型问题转化为已经解决的问题。我将说两类比较有代表性的模型。 这句话交代了假设,也就是说,数学模型在实际问题的应用...
  • 灰度变换——对数变换

    千次阅读 2017-11-01 17:30:54
    分类:对数变换属于灰度变换中的非线性变换。 作用: 1.对数变换实现了图像灰度扩展和压缩的功能。可以从对数曲线看出,它扩展低灰度值而压缩高灰度值。 2.用于显示傅里叶变换的频谱图。在进行傅立叶变换时,得到...
  • 3.1 对数变换 3.2 伽马变换 参考资料 1 灰度变换简介 灰度变换是图像增强的一种重要手段,用于改善图像显示效果,属于空间域处理方法,它可以使图像动态范围加大,使图像对比度扩展,图像更加清晰,特征更加明显...
  • 本文主要介绍对《数字图像处理》第三章书中示例图片实现 反转变换、对数变换以及伽马变换的代码 若要获取更多数字图像处理,python,深度学习,机器学习,计算机视觉等高清PDF以及 更多有意思的 分享,可搜一搜 微信...
  • 本文提出采用对数变换的方法将功能函数线性化,从而转化为求线性功能函数的可靠指标.通过三个算例将本文方法与验算点法和蒙特卡罗法进行比较和校核,算例结果表明该方法不仅计算简单,不需要通过迭代运算求解,而且得出...
  • 文章目录 灰度直方图(Gray Histogram) 直方图的计算方法 简单的图像转换方法 线性变换 / 图像翻转(Image Nagatives) 对数变换(Log Transformation) Gamma变换(Power-Law Transformation) 灰度直方图(Gray ...
  • 数据预处理-对数变换

    千次阅读 2020-03-24 21:13:11
    这里写自定义目录标题 数据分布的倾斜有很多负面的影响。 ...Log变换通常用来创建单调的数据变换。它的主要作用在于帮助稳定方差,始终保持分布接近于正态分布并使得数据与分布的平均值无关。 ...
  • 1.图像的线性变换 图像的线性变换 S=k×r+b S=k\times r+b S=k×r+b 其中 rrr 为输入变量,SSS为输出变量,k,bk,bk,b为线性变换中的倍数因子和偏移因子。 当0<k<10<k<10<k<1时,对灰度压缩,...
  • Matlab 图像增强(对数变换

    万次阅读 多人点赞 2019-03-21 11:30:46
    图像的对数变换: 通过灰度变换函数,调整输入低质图像的灰度值范围。将图像的低灰度值部分扩展,高灰度值部分压缩。借此强调图像低灰度部分,达到增强图像的目的。 该法用于图像增强的原理: 显示器无法显示...
  • 灰度线性变换的计算公式如下所示: 该公式中DB表示灰度线性变换后的灰度值,DA表示变换前输入图像的灰度值,α和b为线性变换方程f(D)的参数,分别表示斜率和截距。 当α=1,b=0时,保持原始图像 当α=1,b!=0时,...
  • 对数变换:增强较暗的部分,用于扩展压缩的频谱图像,例如傅里叶频谱。 >> I=imread('D:\project1.jpg'); I=im2double(I); >> F=fft2(I); >> F=fftshift(F); >> F=abs(F); >> T=log(F+1); >> imshow(F,[]); >> ...
  • 数字图像处理实验之对数变换

    千次阅读 2019-07-16 16:01:55
    对数变换将输入中范围较窄的低灰度值映射为输出中范围较宽的灰度值,或将输入中范围较宽的高灰度值映射为输出中范围较窄的灰度值。结合书本图片说明: 对于对数函数,可以看到输入中范围在[0~L/4]的灰度值映射为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,445
精华内容 13,378
关键字:

对数变换