精华内容
下载资源
问答
  • 对数变换

    千次阅读 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);



    展开全文
  • 选择一个图像并应用 log_expT.m ti 你可以得到对数变换对数变换图像相应指数变换。 以便我们可以看到原始图像和指数图像之间差异。
  • 数据预处理之对数变换

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

    对数据做一些变换的目的是它能够让它符合我们所做的假设,使我们能够在已有理论上对其分析。

    对数变换(log transformation)是特殊的一种数据变换方式,它可以将一类我们理论上未解决的模型问题转化为已经解决的问题。我将说两类比较有代表性的模型。

    这句话交代了假设,也就是说,数学模型在实际问题的应用(应用数学)

    逆文本频率指数(Inverse document frequency 缩写为IDF)
    我们很容易发现,如果一个关键词只在很少的网页中出现,我们通过它就容易锁定搜索目标,它的权重也就应该大。反之如果一个词在大量网页中出现,我们看到它仍然不很清楚要找什么内容,因此它应该小。概括地讲,假定一个关键词 w 在 Dw 个网页中出现过,那么 Dw 越大,w 的权重越小,反之亦然。

    在信息检索中,使用最多的权重是“逆文本频率指数” (Inverse document frequency 缩写为IDF),它的公式为log(D/Dw)其中D是全部网页数。

    比如,我们假定中文网页数是D=10亿,应删除词“的”在所有的网页中都出现,即Dw=10亿,那么它的IDF=log(10亿/10亿)= log (1) = 0。

    假如专用词“原子能”在两百万个网页中出现,即Dw=200万,则它的权重IDF=log(500) =6.2。

    又假定通用词“应用”,出现在五亿个网页中,它的权重IDF = log(2)则只有 0.7。也就只说,在网页中找到一个“原子能”的比配相当于找到九个“应用”的匹配。利用 IDF,上述相关性计算个公式就由词频的简单求和变成了加权求和,即 TF1IDF1 + TF2IDF2 +… + TFN*IDFN。

    在上面的例子中,该网页和“原子能的应用”的相关性为 0.0161,其中“原子能”贡献了 0.0126,而“应用”只贡献了0.0035。这个比例和我们的直觉比较一致了。

    告诉你为什么数据要取对数
    平时在一些数据处理中,经常会把原始数据取对数后进一步处理。之所以这样做是基于对数函数在其定义域内是单调增函数,取对数后不会改变数据的相对关系,取对数作用主要有:

    1.缩小数据的绝对数值,方便计算。例如,每个数据项的值都很大,许多这样的值进行计算可能对超过常用数据类型的取值范围,这时取对数,就把数值缩小了,例如TF-IDF计算时,由于在大规模语料库中,很多词的频率是非常大的数字。

    2.取对数后,可以将乘法计算转换称加法计算。

    3.某些情况下,在数据的整个值域中的在不同区间的差异带来的影响不同。例如,中文分词的mmseg算法,计算语素自由度时候就取了对数,这是因为,如果某两个字的频率分别都是500,频率和为1000,另外两个字的频率分别为200和800,如果单纯比较频率和都是相等的,但是取对数后,log500=2.69897, log200=2.30103, log800=2.90308 这时候前者为2log500=5.39794, 后者为log200+log800=5.20411,这时前者的和更大,取前者。因为前面两个词频率都是500,可见都比较常见。后面有个词频是200,说明不太常见,所以选择前者。

    4.从log函数的图像可以看到,自变量x的值越小,函数值y的变化越快,还是前面的例子,同样是相差了300,但log500-log200>log800-log500,因为前面一对的比后面一对更小。

    也就是说,对数值小的部分差异的敏感程度比数值大的部分的差异敏感程度更高。这也是符合生活常识的,例如对于价格,买个家电,如果价格相差几百元能够很大程度影响你决策,但是你买汽车时相差几百元你会忽略不计了。
    4. 取对数之后不会改变数据的性质和相关关系,但压缩了变量的尺度,例如800/200=4, 但log800/log200=1.2616,数据更加平稳,也消弱了模型的共线性、异方差性等。

    5.所得到的数据易消除异方差问题。

    6.在经济学中,常取自然对数再做回归,这时回归方程为 lnY=a lnX+b ,两边同时对X求导,1/Y*(DY/DX)=a1/X, b=(DY/DX)(X/Y)=(DYX)/(DXY)=(DY/Y)/(DX/X) 这正好是弹性的定义。

    当然,如果数据集中有负数当然就不能取对数了。实践中,取对数的一般是水平量,而不是比例数据,例如变化率等。

    展开全文
  • 数字图像处理之点运算---对数变换

    千次阅读 2019-04-12 20:17:30
    对数变换的一般形式:t=clog(1+s),其中c为尺度比例常数,s为源灰度值,t为变换后的目标灰度值。由函数曲线可知,灰度值低的时候斜率较高,灰度值高的时候斜率低哦,根据这个特点对数变换主要应用于下面的两个方向: ...

    一.理论基础
    对数变换的一般形式:t=clog(1+s),其中c为尺度比例常数,s为源灰度值,t为变换后的目标灰度值。由函数曲线可知,灰度值低的时候斜率较高,灰度值高的时候斜率低哦,根据这个特点对数变换主要应用于下面的两个方向:
    1.增强一副图像中比较暗的部分,从而用来扩展被压缩的高值图像中的较暗像素。
    2.广泛用于频谱图像的显示中。傅里叶变换的频谱动态范围可能宽达0~10六次方,直接显示频谱时,图像显示设备的动态范围往往不能满足要求,从而丢失了大量的暗部细节。

    二.matlab实现:
    下面的代码用来增强图像中较暗的部分,可以看出图像相比原图暗的部分明显增亮,而高灰度值的部分则变化不明显。

    I=im2double(I);
    imshow(I,[]);
    title('原图像');
    L=log(I+1);
    subplot(1,2,2);
    imshow(L,[]);
    title('经对数变换的图像');
    

    在这里插入图片描述
    下面的代码则是在频谱中的应用:可以看出原图像中心绝对高灰度值的存在压缩了低灰度值的动态范围,从而无法在显示时表现出细节;而经过对数灰度处理的图像,其低灰度区域对比度将会增加。

    I=imread('coins.png');
    F=fft2(im2double(I)); %计算频谱
    F=fftshift(F);  %将频谱搬移到中心位置
    F=abs(F);   %求频谱幅度
    T=log(F+1); %对数变换
    subplot(1,2,1);
    imshow(F,[]);   %注意其中的[]规定了灰度值的范围,默认为[Imin,Imax]
    title('未经变换的频谱');
    subplot(1,2,2);
    imshow(T,[]);
    title('经过对数变换的频谱');
    
    

    在这里插入图片描述
    全部代码:

    I=imread('coins.png');
    F=fft2(im2double(I)); %计算频谱
    F=fftshift(F);  %将频谱搬移到中心位置
    F=abs(F);   %求频谱幅度
    T=log(F+1); %对数变换
    subplot(1,2,1);
    imshow(F,[]);   %注意其中的[]规定了灰度值的范围,默认为[Imin,Imax]
    title('未经变换的频谱');
    subplot(1,2,2);
    imshow(T,[]);
    title('经过对数变换的频谱');
    figure;
    subplot(1,2,1);
    I=im2double(I);
    imshow(I,[]);
    title('原图像');
    L=log(I+1);
    subplot(1,2,2);
    imshow(L,[]);
    title('经对数变换的图像');
    

    三.总结
    我们使用这种类型的变换来扩展图像中的暗像素值,同时压缩更高灰度级的值。即:将输入中范围较窄的低灰度值映射为输出中范围较宽的灰度值,或将输入中范围较宽的高灰度值映射为输出范围中范围较窄的灰度值。

    展开全文
  • // 对比度增强.cpp : 定义控制台应用程序入口点。 // #include "stdafx.h" #include #include #include using namespace cv; using namespace std; //归一化 //data 进行处理像素集合 //grayscale ...
    // 对比度增强.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <opencv2/opencv.hpp>
    #include <math.h>
    #include <iostream>
    
    using namespace cv;
    using namespace std;
    
    //归一化
    //data				进行处理的像素集合
    //grayscale			目标灰度级
    //rows cols type	目标图像的行,列,以及类型
    Mat Normalize(vector<double> data, int grayscale, int rows, int cols, int type)
    {
    	double max = 0.0;
    	double min = 0.0;
    	for(int i = 0;i < data.size();i++)
    	{
    		if(data[i] > max)
    			max = data[i];
    		if(data[i] < min)
    			min = data[i];
    	}
    	Mat dst;
    	dst.create(rows, cols, type);
    	int index = 0;
    	for(int r = 0;r < dst.rows;r++)
    	{
    		uchar* dstRowData = dst.ptr<uchar>(r);
    		for(int c = 0;c < dst.cols;c++)
    		{
    			dstRowData[c] = (uchar)(grayscale * ((data[index++] - min) * 1.0 / (max - min)));
    		}
    	}
    	return dst;
    }
    
    //对数变换
    Mat LogTransform(Mat src, double parameter)
    {
    	vector<double> value;
    	for(int r = 0;r < src.rows;r++)
    	{
    		uchar* rowData = src.ptr<uchar>(r);
    		for(int c = 0;c < src.cols;c++)
    		{
    			//对数变换公式s = c * log(1 + v * r) / log(v + 1)
    			//其中r为输入图像像素,c为常数,v + 1为对数底
    			value.push_back(log(1 + parameter * rowData[c]) / log(parameter + 1));
    		}
    	}
    	//计算得出的s经过对比拉升(将像素值归一化到0-255)得到最终的图像
    	return Normalize(value, 255, src.rows, src.cols, src.type());
    }
    
    //反对数变换
    Mat NegativeLogTransform(Mat src, double parameter)
    {
    	vector<double> value;
    	for(int r = 0;r < src.rows;r++)
    	{
    		uchar* srcRowData = src.ptr<uchar>(r);
    		for(int c = 0;c < src.cols;c++)
    		{
    			//反对数变换公式为s = ((v + 1) ^ r - 1) / v
    			value.push_back((pow(parameter + 1, srcRowData[c]) - 1) / parameter);
    		}
    	}
    	//计算得出的s经过对比拉升(将像素值归一化到0-255)得到最终的图像
    	return Normalize(value, 255, src.rows, src.cols, src.type());
    }
    
    //幂次变换
    Mat PowerTranseform(Mat src, double gamma, int parameter)
    {
    	Mat dst;
    	dst.create(src.size(), src.type());
    	vector<double> value;
    	for(int r = 0;r < src.rows;r++)
    	{
    		uchar* srcRowData = src.ptr<uchar>(r);
    		for(int c = 0;c < src.cols;c++)
    		{
    			//幂次变换的公式为 s = c * r ^ v	r为输入图像像素
    			value.push_back(parameter * pow((double)srcRowData[c], gamma));
    		}
    	}
    	return Normalize(value, 255, src.rows, src.cols, src.type());
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	Mat srcImg = imread("E:\\学习之路\\OpenCV 练习程序\\01.jpg",0);
    	if(srcImg.data == NULL)
    	{
    		cout << "图像打开失败" << endl;
    	}
    	imshow("原图",srcImg);
    	//Mat dstImg = LogTransform(srcImg,0.2);
    	Mat dstImg;
    	//dstImg = NegativeLogTransform(srcImg, 3);
    	dstImg = PowerTranseform(srcImg, 0.4, 1);
    	imshow("变换后",dstImg);
    	waitKey(0);
    	return 0;
    }

    展开全文
  • 将传统散斑相关法应用于结构试件变形测量中存在一定的角位移范围限制, 针对这一问题, 提出了一种采用对数极坐标变换的散斑相关角位移测量法。首先, 该方法采用对数极坐标变换, 将结构试件散斑图像在直角坐标系下的角...
  • 对数变换排序

    2019-08-16 09:06:05
    对数组中每个元素xx应用二次函数f(x)=ax^2+bx+cf(x)=ax​2​​+bx+c。 返回数组必须是有序。 样例 样例1 输入: nums = [-4, -2, 2, 4], a = 1, b = 3, c = 5 输出: [3, 9, 15, 33] 样例2 输入: nums ...
  • 对数变换的表达式:g = c*log(1+f),主要应用压缩动态范围 其中c是一个常数,f是浮点数, 图像类似: gamma曲线的形状可变,但是对数形状是固定的 当执行一个对数变换时,通常期望将导致的压缩值还原为显示的...
  • 对数及对比度拉伸变换

    千次阅读 2016-08-04 20:17:28
    对数及对比度拉伸变换 ...对数变换:  应用:压缩动态范围(实现了图像灰度扩展和压缩功能,扩展低灰度值而压缩高灰度值,让图像灰度分布更加符合人视觉特性)(灰度值0(黑)~255(白))  
  • 另一方面,DA变换中,在保证分辨率情况下,模数转换器位数会随动态范围增大而增大。因此,在处理宽动态范围信号时,常常将其动态范围压缩到一个可以处理程度。如果一个系统中阻抗是线性,信号功率与...
  • 对数变换的一项主要应用是压缩动态范围。 当执行对数变换时,通常期望得到的是压缩值返回至显示的全域。 >>gs=im2uint8(mat2gray(g)); 使用mat2gray将值限定在【0,1】范围内,使用im2uint8将值限定在【0...
  • 快速傅立叶转换的应用 :Implement of radix-2, radix-3 & radix-5 DCT algorithm :Implement of radix-2 DST algorithm :Application of General Discrete Fourier transform :Implement of Fast Poisson Solver...
  • 0)变换,证明了这种变换可以有效地提高建模数据序列的光滑度和所建模型的精度,而且其模型精度优于对数变换所建模型,从而拓宽了灰色模型的应用范围.且用文中方法建立了我国人均发电量的数学模型,实例表明该方法的...
  • 基本灰度变换

    2020-05-05 11:22:03
    图像反转,对数变换,幂次变换。分段函数变换。 灰度变换主要应用于图像增强,便于人眼观察。将原本较窄灰度级通过函数映射到范围较大灰度级。凸显图像一些细节变化。 ...
  • 基于函数变换理论,采用函数COS(xα)(α≥1)变换建立了灰色预测模型,并从理论上证明该变换可以有效地提高离散数据序列光滑度,且其光滑度比单纯的对数函数、三角函数、幂函数变换法更优。将建立灰色预测...
  • a(a>0)变换,理论上证明这种变换可以有效地提高建模数据序列的光滑度和所建GM(1,1)模型的精度,而且其模型精度优于对数变换所建模型,从而大大拓宽了灰色模型的应用范围.用文中所提方法建立了我国农村人均住房面积的...
  • 对数放大器实实质上就是一种对数变换器,是指输出信号幅值与输入信号幅值呈对数函数关系基本放大电路。 在电子测量技术领域之中,某些信号电压具有比较宽动态范围,例如在雷达、声纳等无线电接受系统中,接收...
  • 通过变换正弦函数,将无阻尼单摆运动微分方程转化为等价多项式类型非线性常微分方程。这种常微分方程可以应用已推广Riccati方程方法求解,得到了对数函数形式6类精确解。
  • 采集无源RFID标签辐射射频信号,变换为新的对数谱射频指纹,并进行特征提取与识别,获得标签身份真伪结果;把射频指纹等集成到读写器应用层协议,实现标签与读写器之间信息控制。建模、仿真与实验表明,对数谱...
  • 考虑了用于评估奇异积分正交规则,该奇异积分通常出现在二维和轴对称三维问题边界元方法(BEM)中。... 对于许多p值,将Gauss-Legendre正交规则应用变换积分。 结果表明,较高p值通常会给出更准确结果。
  • 在特征价格模型的应用中,函数形式的选择具有多样化,包括线性函数、对数函数、半对数函数等。在国外研究的基础上,提出在线性函数应用的基础上,对模型进行Box-Cox变换,并利用线性Box-Cox特征模型对巴黎的住宅市场...
  • 最近,研究人员已经引入了使用对数极坐标变换(LPT)的图像配准技术,以实现其旋转和缩放不变性。 但是,它受到采样不均匀的困扰,这使其不适用于注册图像被更改或遮挡的应用。 受LPT的启发,本文提出了一种新的...
  • matlab幂律变换代码ECE1512数字图像处理及其应用(在机器学习领域) 本课程是关于图像处理。 该存储库包含我在本课程...对数变换和幂律变换是逐点图像增强技术,而直方图均衡化是在空间域中进行图像增强整体方法。
  • 医学超声图像增强与去噪一直是医学图像处理重要课题,针对传统超声图像增强处理算法不足,本文提出一种基于小波分析理论和模糊理论超声图像增强与去噪算法,首先对医学超声图像进行对数变换,将乘性噪声转换...
  • 基于这些,构造联合概率密度函数以考虑对数变换图像在轮廓波域中方向间相关性。 然后,导出二元收缩函数以通过最大后验估计来对图像进行降噪。 通过主观评估和客观指标对系统图像,OCT心管图像和其他OCT组织图像...
  • 在Windows操作系统下的MATLAB2019b应用程序中编写程序,待程序调试完成后,通过选取相同尺寸、不同质量的三幅图像分别利用变换函数(线性函数、对数函数)和直方图均衡化方法进行灰度变换来探究基于灰度变换的图像...
  • Box-Cox变换

    万次阅读 2017-11-06 20:31:44
    Box-Cox变换 1 Box-Cox变换 在回归模型号中,Box-Cox...它包括了对数变换(=0),平方根变换()和倒数变换(=-1)等常用变换。 图1. 变换前变量分布 图2.变换后变量分布 对因变量n个观测值,应用
  • 下面是对Qt的窗口和按钮进行透视变换的效果: 具体代码    1.下面先定义一个类,它的作用是将传入的 QPixmap 转换为numpy 数组,然后用 opencv 的 warpPerspective 对数组进行透视变换,最后再将 numpy 数组转为...
  • 数字图像处理技术在医学中的应用。ct像的线性变换和非线性的对数变换,及扩展直方图法调整灰度对比度
  • LOGZPLOT 使用 SURF、MESH、IMAGE、PCOLOR、TRISURF 或 TRIMESH 创建绘图,然后应用对数变换。 如果在没有数据输入情况下调用,LOGZPLOT 会将对数缩放应用于现有曲面图。 尽管从命令行创建像 LOGZPLOT 输出...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 219
精华内容 87
关键字:

对数变换的应用