精华内容
下载资源
问答
  • 如有帮助欢迎支持 图形图像处理课程 大作业 姓名 班级 学号 1 如有帮助欢迎支持 目录 界面编程实现图像灰度变换1 摘 要2 正 文3 1.MATLAB界面编程简介3 2.图像的灰度变换简介3 3.采用MATLAB Guide设计界面4 3.1 问题...
  • MATLAB非线性灰度变换,只要是对数变换,以增强图像的显示效果
  • 本文参考了 以下这篇文章[数字图像处理]灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,...以上为上述文章 的原话,这里展示出对数变换的code 和 figure,Matlab Code:f = 0:0.01:1; v1 = 1; y1 = lo...
    本文参考了 以下这篇文章

    [数字图像处理]灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割 

    https://blog.csdn.net/zhoufan900428/article/details/12709361

    并进行了一下改进。



    以上为上述文章 的原话,这里展示出对数变换的code 和 figure,

    Matlab Code:

    f = 0:0.01:1;
    v1 = 1;
    y1 = log2(1 + v1*f)/log2(v1+1); 
    v2 = 10;
    y2 = log2(1 + v2*f)/log2(v2+1); 
    v3 = 50;
    y3 = log2(1 + v3*f)/log2(v3+1); 
    v4 = 100;
    y4 = log2(1 + v4*f)/log2(v4+1); 
    v5 = 200;
    y5 = log2(1 + v5*f)/log2(v5+1); 
    plot(f,y1,'g',f,y2,'r',f,y3,'b',f,y4,'c',f,y5,'y');
    xlabel('Input gray level');
    ylabel('Output gray level');
    title('Log transformation: g = log(1+v*r)/log(1+v)');
    
    lgd = legend('Log(v=1)','Log(v=10)','Log(v=50)','Log(v=100)','Log(v=200)');
    legend('Location','southeast');
    title(lgd,'The Legend Title')

    Figure:


    从图中我们可以很直观的看出,由于对数本身上凸的性质,它可以把低灰度(较暗)部分的亮度提高,v 越大,灰度提高越明显,即图像越来越亮。

    以下是改进后的对数变换代码,将4个对比图形放在同一张图内,看起来更直观。

    f = imread('2.jpg');  
    I=rgb2gray(f);
    f = mat2gray(I);% 原代码中的[0 255] 可以去掉,因为f中最大最小值等于0, 255
    
    v = 10;  
    g_1 = log2(1 + v*f)/log2(v+1);  
      
    v = 30;  
    g_2 = log2(1 + v*f)/log2(v+1);  
      
    v = 200;  
    g_3 = log2(1 + v*f)/log2(v+1);  
      
    figure(); %这里改成了四个子图,会更加直观  
    subplot(2,2,1);  
    imshow(f,[0 1]);  
    xlabel('a).Original Image');  
    subplot(2,2,2);  
    imshow(g_1,[0 1]);  
    xlabel('b).Log Transformations v=10');  
      
    subplot(2,2,3);  
    imshow(g_2,[0 1]);  
    xlabel('c).Log Transformations v=100');  
      
    subplot(2,2,4);  
    imshow(g_3,[0 1]);  
    xlabel('d).Log Transformations v=200');  

    figure:


    再次感谢 这篇文章在学习这部分内容时提供的帮助。https://blog.csdn.net/zhoufan900428/article/details/12709361



    展开全文
  • [数字图像处理]灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割 【From】http://blog.csdn.net/zhoufan900428/article/details/12709361 数字图像处理灰度变换灰度拉伸MATLAB...

    [数字图像处理]灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割

    【From】http://blog.csdn.net/zhoufan900428/article/details/12709361

    目录(?)[+]

                灰度变换,属于一个非常重要的概念。这里主要参考《Digital Image Processing》 Rafael C. Gonzalez / Richard E. Woods 的第三章。书中所有的实验与数学式都采用了8-bit 图像的灰度范围,也就是0到255这样一个范围,这是本书不合理的一个地方。首先,这样做并不泛用,图片不一定是8-bit的。其次,在做某些变换的时候,可能会导致溢出。比如,伽马变化,假设伽马值为2,那么灰度为255的像素点,其变换之后值为65025,这里就溢出了。当然,要是使用Matlab计算,肯定会处理的非常好,直接使用mat2gray函数就能将其压缩回0到255。但是要是其他嵌入式平台处理的时候,直接套用不方便不说,直接按照8-bit的图来理解很不直观。因此,我将数学式做了改变,让其输入为0到1的浮点数,其输出也是0到1的浮点数,这样方便理解。

          本文所使用的图片,均来源于《Digital Image Processing》的主页 http://www.imageprocessingplace.com/

           图像反转

           图像反转,这个翻译还是很不恰当的。这里应该理解为负片变换,负片变换如下所示。

    负片变换,主要用于观察过黑的图片,负片变换之后,方便观察。很简单的变换。

           对数变换

           对数变换主要用于将图像的低灰度值部分扩展,将其高灰度值部分压缩,以达到强调图像低灰度部分的目的。变换方法由下式给出。

    这里的对数变换,底数为,实际计算的时候,需要用换底公式。其输入为,其输出也为。对于不同的底数,其对应的变换曲线如下图所示。

    底数越大,对低灰度部分的强调就越强,对高灰度部分的压缩也就越强。相反的,如果想强调高灰度部分,则用反对数函数就可以了。看下面的实验就可以很直观的理解,下图是某图像的二维傅里叶变换图像,其为了使其灰度部分较为明显,一般都会使用灰度变换处理一下。

           实现对数变换的Matlab代码如下:
    [plain] view plaincopy
    1. close all;  
    2. clear all;  
    3.   
    4. %% -------------Log Transformations-----------------  
    5. f = imread('DFT_no_log.tif');  
    6. f = mat2gray(f,[0 255]);  
    7.   
    8. v = 10;  
    9. g_1 = log2(1 + v*f)/log2(v+1);  
    10.   
    11. v = 30;  
    12. g_2 = log2(1 + v*f)/log2(v+1);  
    13.   
    14. v = 200;  
    15. g_3 = log2(1 + v*f)/log2(v+1);  
    16.   
    17. figure();  
    18. subplot(1,2,1);  
    19. imshow(f,[0 1]);  
    20. xlabel('a).Original Image');  
    21. subplot(1,2,2);  
    22. imshow(g_1,[0 1]);  
    23. xlabel('b).Log Transformations v=10');  
    24.   
    25. figure();  
    26. subplot(1,2,1);  
    27. imshow(g_2,[0 1]);  
    28. xlabel('c).Log Transformations v=100');  
    29.   
    30. subplot(1,2,2);  
    31. imshow(g_3,[0 1]);  
    32. xlabel('d).Log Transformations v=200');  

           伽马变换

           伽马变换主要用于图像的校正,将漂白的图片或者是过黑的图片,进行修正。伽马变换也常常用于显示屏的校正,这是一个非常常用的变换。其变化所用数学式如下所示,

    其输入为,其输出也为。对于不同的伽马值,其对应的变换曲线如下图所示。

    和对数变换一样,伽马变换可以强调图像的某个部分。根据下面两个实验,可以看出伽马变换的作用。
           实验1:

    其实现Matlab代码为:
    [plain] view plaincopy
    1. close all;  
    2. clear all;  
    3.   
    4. %% -------------Gamma Transformations-----------------  
    5. f = imread('fractured_spine.tif');  
    6. f = mat2gray(f,[0 255]);  
    7.   
    8. C = 1;  
    9. Gamma = 0.4;  
    10. g2 = C*(f.^Gamma);  
    11.   
    12. figure();  
    13. subplot(1,2,1);  
    14. imshow(f,[0 1]);  
    15. xlabel('a).Original Image');  
    16.   
    17. subplot(1,2,2);  
    18. imshow(g2,[0 1]);  
    19. xlabel('b).Gamma Transformations \gamma = 0.4');  
           实验2:

           灰度拉伸

           灰度拉伸也用于强调图像的某个部分,与伽马变换与对数变换不同的是,灰度拉升可以改善图像的动态范围。可以将原来低对比度的图像拉伸为高对比度图像。实现灰度拉升的方法很多,其中最简单的一种就是线性拉伸。而这里介绍的方法稍微复杂一些。灰度拉伸所用数学式如下所示。

    同样的,其输入为,其输出也为。这个式子再熟悉不过了,跟巴特沃斯高通滤波器像极了,其输入输出关系也大致能猜到是个什么形状的。但是,这里就出现一个问题了,输入为0时候,式子无意义了。所以,在用Matlab计算的时候,将其变为如下形式。

    这里的eps,就是Matlab里面,一个很小数。如此做的话,式子变得有意义了。但是,其输入范围为的时候,其输出范围变为了。输出范围大致为,为了精确起见,使用mat2gray函数将其扩展到精确的。调用格式如下。
    [plain] view plaincopy
    1. g = mat2gray(g,[1/(1+(m/eps)^E) 1/(1+(m/1+eps)^E)]);  
           输入输出问题解决了,还有一个问题,参数的决定。这里有两个参数,一个是m(相对于巴特沃斯高通滤波器而言,这个是截止频率),一个是E(相对于巴特沃斯高通滤波器而言,这个是滤波器次数)。m可以控制变换曲线的重心,E则可以控制曲线的斜率,如下图所示。

    m值的可取图像灰度分布的中央值,如下式所示,

           决定m之后,接下来就只剩E了。灰度拉升的目的就是扩展图片的动态范围,我们想将原本灰度范围是的图像变换到内。那么,就直接取最大值与最小值,带入式子,解出E就可以了。但是,如之前所说的,我们所用的式子的的输出范围达不到,而且,直接取的范围,会造成E非常大,从而变换曲线的斜率非常大,灰度扩展的结果并不是很好。所以,这里退一步,取的输出范围是。E的取值,如下所示。

           实验:

           从直方图看,原图的灰度范围确实被拉伸了。用上面所说的方法,确定的灰度拉伸的输入输出曲线如下图所示。

          其Matlab代码如下:
    [plain] view plaincopy
    1. close all;  
    2. clear all;  
    3.   
    4. %% -------------Contrast Stretching-----------------  
    5. f = imread('washed_out_pollen_image.tif');  
    6. %f = imread('einstein_orig.tif');  
    7. f = mat2gray(f,[0 255]);  
    8.   
    9. [M,N] = size(f);  
    10. g = zeros(M,N);  
    11.   
    12. Min_f = min(min(f));  
    13. Max_f = max(max(f));  
    14. m = (Min_f + Max_f)/2;  
    15.   
    16. Out_put_min = 0.05;  
    17. Out_put_max = 0.95;  
    18.   
    19. E_1 = log(1/Out_put_min - 1)/log(m/(Min_f+eps));  
    20. E_2 = log(1/Out_put_max - 1)/log(m/(Max_f+eps));  
    21. E = ceil(min(E_1,E_2)-1);  
    22.   
    23. g = 1 ./(1 + (m ./ (f+ eps)).^E);  
    24. g = mat2gray(g,[1/(1+(m/eps)^E) 1/(1+(m/1+eps)^E)]);  
    25.   
    26. figure();  
    27. subplot(2,2,1);  
    28. imshow(f,[0 1]);  
    29. xlabel('a).Original Image');  
    30.   
    31. subplot(2,2,2);  
    32. r = imhist(f)/(M*N);  
    33. bar(0:1/255:1,r);  
    34. axis([0 1 0 max(r)]);  
    35. xlabel('b).The Histogram of a');  
    36. ylabel('Number of pixels');  
    37.   
    38. subplot(2,2,3);  
    39. imshow(g,[0 1]);  
    40. xlabel('c).Results of Contrast stretching');  
    41.   
    42. subplot(2,2,4);  
    43. s = imhist(g)/(M*N);  
    44. bar(0:1/255:1,s);  
    45. axis([0 1 0 max(s)]);  
    46. xlabel('b).The Histogram of a');  
    47. ylabel('Number of pixels');  
    48.   
    49. in_put = 0:1/255:1;  
    50. Out_put1 = 1 ./(1 + (m ./ (double(in_put)+ eps)).^E);  
    51. Out_put1 = mat2gray(Out_put1,[1/(1+(m/eps)^E) 1/(1+(m/1+eps)^E)]);  
    52.   
    53. figure();  
    54. plot(in_put,Out_put1);  
    55. axis([0,1,0,1]),grid;  
    56. axis square;  
    57. xlabel('Input intensity level');  
    58. ylabel('Onput intensity level');  

           灰度切割

           灰度切割也是一个很简单,但也很实用的变换。灰度切割,主要用于强调图像的某一部份,将这个部分赋为一个较高的灰度值,其变换对应关系如下所示。

    灰度切割有以上两种方法,一种是特定灰度值的部分赋值为一个较高的灰度值,其余部分为一个较低的灰度值。这样的方法,得到的结果是一个二值化图像。另外一种方法,则是仅仅强调部分赋值为一个较高的灰度值,其余的部分不变。
           实验:

           位图切割

           位图切割,就是按照图像的位,将图像分层处理。若图像的某个像素,其bit7为1,则在位面7这个像素值为1,反之则为0。
           实验:

           由位图切割的结果,图像的主要信息包含在了高4位。仅仅靠高4位,还原的图像更原图基本差不多。由此可见,位图切割主要用于图像压缩。
    展开全文
  • 绘制灰度直方图 原图: 一般直方图: 改变区间数: 归一化处理:
    • 绘制灰度直方图

    原图:

    一般直方图:

    改变区间数:

    归一化处理:

    • 对直方图进行线性变换:
    %线性变换
    I=imread('D:\project1.jpg');
    I=im2double(I);
    [M,N]=size(I);
    figure(1);
    imshow(I);
    title('source');
    figure(2);
    [H,x]=imhist(I,32);
    stem(x,(H/M/N),'.');
    title('source1');
    %增加对比度
    A=2;B=-55;
    O=A.*I+B/255;
    figure(3);
    subplot(2,2,1);
    imshow(O);
    figure(4);
    subplot(2,2,1);
    [H,x]=imhist(O,32);
    stem(x,(H/M/N),'.');
    %减小对比度
    A=0.5;B=-55;
    O=A.*I+B/255;
    figure(3);
    subplot(2,2,2);
    imshow(O);
    figure(4);
    subplot(2,2,2);
    [H,x]=imhist(O,32);
    stem(x,(H/M/N),'.');
    %增加亮度
    A=1;B=55;
    O=A.*I+B/255;
    figure(3);
    subplot(2,2,3);
    imshow(O);
    figure(4);
    subplot(2,2,3);
    [H,x]=imhist(O,32);
    stem(x,(H/M/N),'.');
    %反相显示
    A=-1;B=255;
    O=A.*I+B/255;
    figure(3);
    subplot(2,2,4);
    imshow(O);
    figure(4);
    subplot(2,2,4);
    [H,x]=imhist(O,32);
    stem(x,(H/M/N),'.');
    

    处理后的结果:

    • 对数变换:增强较暗的部分,用于扩展压缩的频谱图像,例如傅里叶频谱。
    >> I=imread('D:\project1.jpg');
    I=im2double(I);
    >> F=fft2(I);
    >> F=fftshift(F);
    >> F=abs(F);
    >> T=log(F+1);
    >> imshow(F,[]);
    >> imshow(T,[]);
    • 指数变换:选择性地增强高低灰度区域的对比度。(改变对比度+增加细节)

     

     

     

     

    展开全文
  • Matlab 图像增强(对数变换

    万次阅读 多人点赞 2019-03-21 11:30:46
    图像的对数变换: 通过灰度变换函数,调整输入低质图像的灰度值范围。将图像的低灰度值部分扩展,高灰度值部分压缩。借此强调图像低灰度部分,达到增强图像的目的。 该法用于图像增强的原理: 显示器无法显示...

    图像的对数变换:

    通过灰度变换函数,调整输入低质图像的灰度值范围。将图像的低灰度值部分扩展,高灰度值部分压缩。借此强调图像低灰度部分,达到增强图像的目的。

    该法用于图像增强的原理:

    显示器无法显示大范围灰度值时,许多灰度细节会被丢失掉,

    对数变换可将其动态范围变换到一个合适的区间,就可以显示更多细节。

    下面先介绍冈萨雷斯《数字图像处理》中设计的方法,我认为对图像的灰度提高的过于明显。

    对数变换公式:S=c log(1+r) , c为常数。

    f = imread('lena.png');  
    
    G=mat2gray(log(1+double(f))); 
    % matlab中数值一般采用double型(64位)存储和运算。mat2gray对图像灰度进行归一化处理
    
    subplot(1,2,1);  
    imshow(f);  
    xlabel(' a). 原始图像');  
    subplot(1,2,2);  
    imshow(I2,[]);   % 自动调整数据的范围以便于显示 
    xlabel(' b). 对数变换');  
    end
    

    运行结果:

    下面介绍另一种方法,参考:[数字图像处理]灰度变换

    对数变换公式:, c为常数,

    v越大,灰度提高越明显,r为灰度归一化后的输入图像。

    f = imread('lena.png');  
    
    v=10;
    r=mat2gray(double(I));
    S=log(1+v*r)/(log(v+1));
    
    subplot(1,2,1);  
    imshow(I);  
    xlabel('a). 原始图像');  
    subplot(1,2,2);  
    imshow(S,[]);  
    xlabel('b). 对数变换');  
    end
    

    运行结果:

    这个感觉比较自然一点。

     

    展开全文
  • 2、对数、指数变换、取反等各种非线性变换的效果对比,务必有仿真结果及其详细的对比分析 二、1、已知某灰度图像数据如下,请对其进行直方图均衡化 2、已知某灰度图像数据如下,请用Gml和SML两种映射规则对其进行...
  • 灰度变换 灰度 灰度可以认为是亮度,灰色图片中黑白的深浅程度,范围一般为0~255。图像数字化为二维矩阵后,每个点的值都代表一个像素点的灰度值。 灰度灰度值的表示范围,灰度级时,称图片为k比特图片。...
  • 图形图像处理课程 大作业 姓名: 班级: 学号: 界面编程实现图像灰度变换 摘要 正文 1.MATLAB界面编程简介: 2. 图像的灰度变换简介 3. 采用 MATLAB Guide 设计界面 3.1 问题... 对数变换的算法设计与实现 5.1 问题分析:
  • 采用对数变换法增强灰度图像对比度,已用Matlab编译出结果。但是要求在CCS中用C语言完成任务,如今读取图像部分和直方图均衡化部分已经完成,如何才能把对数增强的Matlab语言转换成C语言呢?
  • 图形图像处理课程 大作业 姓名: 班级 : 学号: 目录 界面编程实现图像灰度变换 摘要 正文 1.MATLAB 界面编程简介 : 2. 图像的灰度变换简介 3. 采用 MATLAB Guide 设计界面 3.1 问题分析: 3.2 ... 对数变换的算法设计与实
  • Word可编辑 图形图像处理课程 大作业 姓名: 班级: 学号: 目录 界面编程实现图像灰度变换 摘要 正文 1.MATLAB 界面编程简介: 2. 图像的灰度变换简介 3. 采用 MATLAB Guide 设计界面 3.1 问题... 对数变换的算法设计与实
  • 数字图像处理——Matlab GUI与灰度变换函数简介Matlab具有强大的函数运算功能,利用这一点可以进行像素级的计算,也就是图像处理。...对数变换​ 使用方法不允许修改空图片,必须打开一张图片后才能获得修改图片
  • Matlab图像处理之灰度变换函数

    万次阅读 2016-04-20 19:08:51
    1,灰度:对于通常所谓的黑白图像,把黑色和白色之间按对数关系分为若干等级称为灰度灰度分为256阶,用灰度表示的图像称作灰度图.在图像中用0~255表示,0是全黑,255是全白 2.对比度:对比度值一幅图像中敏感区域...
  • 图像灰度变换

    2019-05-07 20:52:13
    MATLAB编写的图像灰度变换,其中所包含的灰度变换由线性变换、对数变换、反转变换、指数变换4中,并由相应的实验结果图片
  • 在Windows操作系统下的MATLAB2019b应用程序中编写程序,待程序调试完成后,通过选取相同尺寸、不同质量的三幅图像分别利用变换函数(线性函数、对数函数)和直方图均衡化方法进行灰度变换来探究基于灰度变换的图像...
  • 这是一个小的gui代码。 其中用户可以加载任何灰度图像并使用对数变换增加其亮度并且可以通过使用功率变换来降低亮度。 它还允许用户对任何给定图像进行块(8*8)DCT 变换。
  • Matlab幂律变换及直方图均衡化

    千次阅读 2020-09-27 12:46:35
    一、目标: 1、实现幂律变换,可以尝试调整gamma数值,观察图像变换。分析Lena图像(灰度)在不同gamma数值下,图像灰度变换的特点。...与对数变换相同,幂次变换将部分灰度区域映射到更宽的区域中。当...
  • matlab幂律变换代码数字图像处理 四年级第二学期实验室使用MATLAB完成数字图像处理代码 关于项目 该存储库包含使用WebGL和GLSL的6个项目。 这6个项目是: 切片图像并旋转90度 直方图均衡 强度转换 形态学 高斯3 * 3...
  • 给定一个灰度图像,找到并显示傅立叶光谱的大小,然后对其进行对数变换和幂定律变换。 给定灰度图像,对其进行直方图均衡化增强 教程-2 在给定的输入图像上实现Marr-Hildreth边缘检测器和Canny边缘检测器。 仅使用两...
  • 上一篇:MATLAB安装与简单的图像操作 上一篇文章忘记介绍灰度直方图了,灰度直方图就是将RGB图像转成灰度图后,统计灰度图...继续学习图像灰度变换之:灰度对数变换 t = c log(s + 1) 这种变换可
  •   图像灰度的非线性变换主要有对数变换、指数变换、幂次变换等。本文主要讨论对数变换。   对数变换的基本形式如下: y=log⁡(1+x)b y=\frac{\log{(1+x)}}{b} y=blog(1+x)​ 其中,bbb为正常数,用以控制...
  • 基本灰度变换函数 1 对数变换 s=c∗log(1+v⋅r) ...MATLAB 对数变换函数效果代码: f = 0:0.01:1; v1 = 1; y1 = log2(1 + v1*f)/log2(v1+1); v2 = 10; y2 = log2(1 + v2*f)/log2(v2+1); v3 = 50; y3
  • 数字图像的基本灰度变换函数

    千次阅读 2016-03-24 23:58:35
    图像反转,底片效果反转灰度范围[0,L-1]的图像需要使用L-1减去图像灰度值,公式: s = L-1-rmatlab代码>> gyy = imread('gyy.jpg');... 对数变换,增强灰度低区/高区对比度对数变换使灰度较低的区域
  • 为了恢复其最原始的创意,可以应用诸如线性变换(例如负变换,对数变换或幂定律变换)之类的图像变换方法来提高图像质量。 通过数学方程式,可以描述为 s = T(r)或g(x,y)= T [f(x,y)] 其中“ s”或“ g(x,...
  • 1.对数变换可以增强图像中较暗部分的细节,因为对数可以将较小的值放大,而较大的值缩小 2.伽马变换:y=(x+esp)^γ,x,y的取值范围是0到1,esp是补偿系数,γ为伽马系数。γ的不同取值可以选择性的增强图片不同...
  • MATLAB课程设计.docx

    2019-05-13 16:20:31
    对图片进行灰度反转变换,拉伸变换,对数变换,伽马变换,切割变换,分段线性变换等处理,实现图片的清晰化。
  • 腐蚀 matlab 代码 一、作业要求: 采用MATLAB或opencv+C编程实现。每一题写明题目,给出试验...对一幅灰度图像进行灰度对数变换。观察变换前后高、低灰度位置的变化并解释原因。 对一幅对比度差的图像进行灰度均衡化。
  • 亮度变换函数2.1函数imadjust2.2对数和对比度拉伸变换 一.背景知识 空间域技术则是直接对图像的像素进行操作。有表达式: g(x,y)=T[f(x,y)]g(x,y)=T[f(x,y)]g(x,y)=T[f(x,y)] 其中f是输入,g是输出。 还有点(x,y)的...
  • matlab图像处理基础(二)之点运算

    千次阅读 2017-04-07 20:26:07
    一,灰度直方图:  一幅图像中灰度值0~255之间各灰度所占的像素多少;  用法:imhist(image);...二,灰度对数变换:  如对数图一样,值越大,斜率越小,这种变换可以增强一副图像中较暗的部分;  

空空如也

空空如也

1 2 3
收藏数 50
精华内容 20
关键字:

matlab灰度对数变换

matlab 订阅