MATLAB 亮度与对比度调整

  • Post author:
  • Post category:其他


  • 实验目的

    • 熟悉仿真工具MATLAB
    • 掌握图像读取与显示
    • 掌握灰度变换方法
    • 掌握直方图均衡化方法
  • 实验环境

    • Windows 7
    • Matlab R2014a
  • 实验内容与步骤

    • 熟悉Matlab软件界面,利用


      M


      文件程序


      工作方式完成Matlab中的矩阵运算和基本语句结构,具体如下:
  1. 输入矩阵A = ,求A的转置矩阵B、逆矩阵C以及B与C的乘积D。

2. if。。。else语句:生成一个0~4之间的随机变量gpa,如果gpa为4.0,在工作区输出“excellent”,如果大于2.5且小于4.0,输出“good”,否则输出“average”;

3. for 循环语句:生成一个对角线元素为10,其他元素为0的大小为9*9的矩阵E;

4. 读取并显示一幅


灰度图像


(图像可自选),计算图像大小,显示其直方图;

5. 对原图像进行直方图均衡化,并画出新图像及新直方图,


比较直方图均衡化前后的图像及直方图的特点并进行总结


6. 对原图像进行灰度变换,并画出新图像及其直方图。调整参数,显示不同的实验结果;原始图像灰度分布在较窄的区间,由于曝光不足使图像灰度级集中在低亮度范围内。均衡化后的图像直方图均匀分布,增加了像素之间灰度值差别的动态范围。但是对于moon图像来说,均衡化后的效果并不比原始图像好,这是因为如果一幅图像整体偏暗或者偏亮,那么直方图均衡化的方法很适用。但直方图均衡化是一种全局处理方式,它对处理的数据不加选择,可能会增加背景干扰信息的对比度并且降低有用信号的对比度,此外,均衡化后图像的灰度级减少,某些细节将会消失。



  • 不使用imadjust函数


    ,借助循环、选择、矩阵运算等基本语句的嵌套,


    自己编写一段程序


    ,实现灰度图像的分段线性变换,不断调整分段函数的折线拐点与分段直线的斜率,使图像得到不同的视觉效果,


    并记录下相关实验参数,对结果进行简要分析


    。利用了两个循环嵌套对图像的数组进行遍历。结合变换函数我们可知x<x1时斜率小于1,x1<x<x2时斜率大于1,x>x2时斜率小于1,根据灰度值的变换规律。
  • 斜率影响图像的对比度,低灰度值的部分被压缩,效果就是暗的部分更加暗,而且对比度更低,结果图像我们明显看出暗色的背景更加暗,而且结合直方图我们可以看出低灰度值部分向更低灰度值压缩,也就是低灰度值部分向x轴左侧偏移导致图像暗色部分更暗,而且低灰度部分灰度值分布范围变窄,导致此部分对比度降低。高灰度值部分,由变换曲线可知此部分值增大,整体高灰度值部分向x轴右侧偏移,结果就是导致亮色的部分更加亮,从图像中可以明显观察出来,而此部分变换曲线斜率小于1,也就是说此部分灰度值范围得到了压缩,对比度降低,由直方图看出高灰度部分的范围缩小了。





  • 实验心得与体会

初次使用Matlab仿真工具,通过本次试验的亲身操作和实验,学习了建立m文件,建立矩阵和运算矩阵,用if和for循环语句实现各种操作,掌握图像读取与显示,掌握灰度变换方法,掌握了直方图均衡化;对于Matlab有了全新的认识,对更多操作和命令更熟练掌握。

但是在做图像处理的过程中困难重重,对于各种函数的使用并不了解,只能在网上大量搜索和分析,逐步改进。但是通过本次实验亲身体会了数字图像处理的过程,将上课所学运用到实践当中,对直方图均衡化有了真切的体会。本次实验花费了很多时间,希望今后对Matlab的学习可以熟能生巧。



版权声明:本文为tutouxiaotu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。