• 实验四 图像增强—灰度变换之直方图变换


    一.实验目的

    1.掌握灰度直方图的概念及其计算方法;

    2.熟练掌握直方图均衡化计算过程;了解直方图规定化的计算过程;

    3.了解色彩直方图的概念和计算方法

    二.实验内容

    1 读取数字图像,显示直方图(例如使用imhist,有余力可尝试bar,stem等函数),并进行直方图均衡化处理;

    2 显示经过均衡化处理过的图像直方图。

    3 有余力可探索更多关于直方图的图像处理操作(例如直方图规定化、局部直方图规定化等)。

    4 记录和整理实验报告。

    三.实验程序、实验结果与实验分析

    1.实验程序

    (1)读取数字图像,显示直方图,并进行直方图均衡化处理(Test4_1)

    1. I=imread('pollen.jpg');  
    2. J=histeq(I);%对原图像进行直方图均衡化处理
    3. figure;subplot(1,2,1) ;imshow(I);title('原图像');         
    4. subplot(1,2,2) ;imshow(J); 
    5. title('直方图均衡化后的图像') ;   
    6. figure; subplot(1,2,1) ;
    7. imhist(I,64);    %将原图像直方图显示为64级灰度
    8. title('原图像直方图') ;       
    9. subplot(1,2,2);             
    10. imhist(J,64) ;    %将均衡化后图像的直方图显示为64级灰度
    11. title('均衡变换后的直方图') ; 

    (2)读取数字图像,显示直方图,并进行直方图规定化处理(Test4_2)

    1. I=imread('mars.jpg');
    2. % 显示原始图像和其直方图
    3. figure;
    4. subplot(1, 2, 1);
    5. imshow(I);
    6. title('火星天体福布斯的图像');
    7. subplot(1, 2, 2);
    8. imhist(I, 64);
    9. title('原图像直方图');
    10. m1 = 0.15; sig1 = 0.05;  m2 = 0.75; sig2 = 0.05
    11. A1 = 1; A2 = 0.07;  k = 0.002
    12. p = twomodegauss(m1, sig1, m2, sig2, A1, A2, k);
    13. % 对图像进行直方图规定化处理
    14. J = histeq(I, p);
    15. % 显示规定化处理后的图像和其直方图
    16. figure;
    17. subplot(1, 2, 1);
    18. imshow(J);
    19. title('直方图规定化后的图像');
    20. subplot(1, 2, 2);
    21. imhist(J, 64);
    22. title('规定化处理后的直方图');

    (3)读取数字图像,显示直方图,并进行局部直方图规定化处理(Test4_3)

    1. f=imread('mars.jpg');
    2. figure; 
    3. subplot(2, 2, 1); 
    4. imshow(f); 
    5. title('原始图像'); 
    6. g1=adapthisteq(f);
    7. subplot(2, 2, 2); 
    8. imshow(g1); 
    9. title('用默认值使用adpthisteq函数的结果'); 
    10. g2=adapthisteq(f,'NumTiles',[25,25]);
    11. subplot(2, 2, 3); 
    12. imshow(g2); 
    13. title('将参数NumTiles设置为[25,25]时函数的结果'); 
    14. g3=adapthisteq(f,"NumTiles",[25,25],"ClipLimit",0.05);
    15. subplot(2, 2, 4); 
    16. imshow(g3); 
    17. title('使用这个小片数量,并且ClipLimit=0.05时得到的结果');

    2.实验结果

    (1)读取数字图像,显示直方图,并进行直方图均衡化处理

    (2)读取数字图像,显示直方图,并进行直方图规定化处理

    直方图规定化后的图像

    (3)读取数字图像,显示直方图,并进行局部直方图规定化处理

    3.实验分析

    (1)读取数字图像,显示直方图,并进行直方图均衡化处理

    ①读取灰度图像pollen.jpg
    I=imread('pollen.jpg');  
    ②对原图像进行直方图均衡化处理
    J=histeq(I);
    ③将均衡化后图像的直方图显示为64级灰度 
    imhist(J,64) ;    %将均衡化后图像的直方图显示为64级灰度

    (2)读取数字图像,显示直方图,并进行直方图规定化处理

    ①读取灰度图像mars.jpg
    I=imread('mars.jpg');
    ②使用双模态高斯函数作为特定的直方图
    1. m1 = 0.15; sig1 = 0.05;  m2 = 0.75; sig2 = 0.05
    2. A1 = 1; A2 = 0.07;  k = 0.002
    3. p = twomodegauss(m1, sig1, m2, sig2, A1, A2, k);
    ③对图像进行直方图规定化处理
    J = histeq(I, p);

    (3)读取数字图像,显示直方图,并进行局部直方图规定化处理

    ①读取灰度图像mars.jpg
    f=imread('mars.jpg');
    ②使用adpthisteq函数全部默认设置
    g1=adapthisteq(f);
    ③将小片大小增加到[25,25]
    g2=adapthisteq(f,'NumTiles',[25,25]);
    ④使用小片数量[25,25],使ClipLimit=0.05
    g3=adapthisteq(f,"NumTiles",[25,25],"ClipLimit",0.05);

    四.思考题

    1.直方图是什么概念?它反映了图像的什么信息?

    直方图是一个统计图表,它用于表示数字图像中每个灰度级出现的频率或次数。对于一幅给定的图像,直方图能够展示图像中每个像素强度值(灰度级)的分布情况。横坐标通常代表灰度级,而纵坐标则代表该灰度级在图像中出现的频数或频率。

    直方图反映了图像的以下几个关键信息:

    对比度:通过直方图,可以观察图像中像素强度的分布情况,从而判断图像的对比度。

    亮度:直方图的偏移情况可以反映图像的整体亮度。如果直方图主要偏向较高的灰度级,则图像整体偏亮;反之,如果偏向较低的灰度级,则图像整体偏暗。

    动态范围:直方图能够展示图像所包含的灰度级范围,从而反映图像的动态范围。


    2.直方图均衡化是什么意思?它的主要用途是什么?

    直方图均衡化是一种增强图像对比度的方法,通过拉伸像素强度值的分布范围来增强图像的对比度。具体来说,它将原始图像的直方图变换为均匀分布的形式,从而增强图像中不同灰度级之间的对比度。

    直方图均衡化的主要用途包括:

    提高图像对比度:通过均衡化操作,可以使图像的灰度级分布更加均匀,从而提高图像的对比度,使图像中的细节更加清晰。

    改善视觉效果:对于对比度较低的图像,直方图均衡化可以显著改善其视觉效果,使图像更加鲜明、生动。

    预处理步骤:在图像处理和分析中,直方图均衡化常作为预处理步骤,为后续的特征提取、目标识别等任务提供更好的图像质量。

  • 相关阅读:
    第三话、程序员第一家公司有多重要
    Caliburn.Micro框架学习笔记——事件总线机制
    SpringCloud学习笔记-注册微服务到Eureka注册中心
    linux进程控制类命令
    Java-对象到底占多少个字节?计算规则是什么?
    当transcational遇上synchronized
    现在啥软件都有开源,BI 呢?
    一文搞懂Go读写Excel文件
    白盒测试总结
    阿里云ossutil使用
  • 原文地址:https://blog.csdn.net/m0_64986186/article/details/140217275