• 图像处理之图像统计特性


    一、前言

    在matlab中,灰度图像是一个二维矩阵,RGB彩色图像是一个三维矩阵,可以通过统计特性得到一幅图像的统计信息,来帮助我们对图像进行判断,比如平均值、方差和相关系数等统计特征。

    二、图像大小

    我们在matlab中主要使用size函数来计算图像大小,使用numel函数计算图像的像素总个数(即size计算的图像大小的乘积)。

    以下面灰度图像tire.tif为例:
    在这里插入图片描述

    I=imread('tire.tif');% I为灰度图像对应二维数组
    % 第一种格式
    A=size(I);
    % 第二种格式
    [r,c]=size(I);
    [r,c,m]=size(I);% 将二维矩阵当作第三维为1的三维矩阵,即m=1
    % 第三种格式
    row=size(I,1);
    column=size(I,2);
    % 计算图像像素总数piexl=row*column
    pixel=numel(I);
    % disp函数的作用是在命令行窗口显示变量的值
    disp(A);
    disp(r);
    disp(c);
    disp(m);
    disp(row);
    disp(column);
    disp(pixel);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    最终命令行窗口结果:

       205   232
    
       205
    
       232
    
         1
    
       205
    
       232
    
           47560
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    三、图像均值

    对于灰度图像即计算图像的灰度平均值,对于彩色图像既可以计算所有颜色值的平均值也可以计算每种颜色的平均值,反映一幅图像的平均亮度。在matlab中,采用mean2函数计算矩阵均值

    % 均值反映了图像的亮度,均值越大说明图像亮度越大,反之越小
    I=imread('onion.png');
    J=rgb2gray(I);
    % 当定义一个MATLAB函数,中间一行代码如果结尾不加分号,MATLAB会把这行代码的值直接输出到命令行窗口
    % 对于灰度图像(二维矩阵),mean2()函数计算图像的平均灰度值
    gary=mean2(J)
    % 对于彩色图像(三维矩阵),mean2()可以得到所有颜色值的平均值((r+g+b)/3)
    rgb=mean2(I)
    % 可以使用mean2(I(:,:,1))mean2(I(:,:,2))mean2(I(:,:,3))分别计算彩色图像每种颜色的平均值
    r=mean2(I(:,:,1))
    g=mean2(I(:,:,2))
    b=mean2(I(:,:,3))
    
    subplot(121),imshow(I);
    subplot(122),imshow(J);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    最终命令行窗口结果:

    gary =
    
      100.6817
    rgb =
    
       91.7928
    r =
    
      137.3282
    g =
    
       92.7850
    b =
    
       45.2651
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    实现效果:
    在这里插入图片描述
    (对于本例,通过输出结果可以发现此幅图像的红色和绿色均值较大,蓝色均值较小,说明原图中红色和绿色成分较多,蓝色成分较少,符合原图。)

    四、图像标准差

    图像的标准差反映了图像像素值与均值的离散程度,在matlab中使用std2函数计算图像标准差

    % std()可计算向量的标准差,std2()可计算矩阵的标准差
    I=imread('pout.tif');
    s1=std2(I)
    J=histeq(I);
    s2=std2(J)
    % 注意s2>s1,标准差反映了图像像素值与均值的离散程度,标准差越大说明图像的质量越好
    
    subplot(221),imshow(I);
    subplot(222),imshow(J);
    subplot(223),imhist(I);
    title('原图的灰度直方图');
    subplot(224),imhist(J);
    title('均衡化后的灰度直方图');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    最终命令行窗口结果:

    s1 =
    
       23.1811
    s2 =
    
       74.7572
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    实现效果:
    在这里插入图片描述

    (对于本例,通过输出结果可以发现灰度图像经过直方图均衡化处理后,明暗对比度增加,图像变得更加清晰,其标准差也变大了。)

    五、图像方差

    图像方差即为图像标准差的平方,在matlab中,有两种可以方法可以求出图像方差:
    (1)使用var函数计算
    (2)使用标准差的平方计算

    I=imread('tire.tif');
    I=im2double(I);% 注意一定要将图像类型转为double类型,否则使用var函数时会报错:数据类型无效.第一个输入参数必须为单精度值或双精度值
    % 方法一:使用var函数计算
    s1=var(I(:))
    % 方法二:使用标准差的平方计算
    s2=(std2(I))^2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    最终命令行窗口结果:

    s1 =
    
        0.0595
    s2 =
    
        0.0595
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    六、图像协方差矩阵

    协方差矩阵是两幅图像之间的相关程度的一种度量。协方差矩阵为0时,表明两图像之间相互独立,反之表示两图像之间相互依赖.。在matlab中,使用cov函数计算图像协方差矩阵

    % 相同图像求协方差矩阵
    I=imread('tire.tif');
    I=im2double(I);
    s=var(I(:))   % 图像的方差
    c1=cov(I,I)   % cov(I,I)等同于cov(I(:),I(:)),注意cov(A,B)中的AB必须具有相同的大小
    
    % 不同图像求协方差矩阵
    J1=imread('sun.png');
    J1=im2double(rgb2gray(J1));
    J2=imread('grass.png');
    J2=im2double(rgb2gray(J2));
    c2=cov(J1,J2) % cov(I,I)等同于cov(I(:),I(:)),注意cov(A,B)中的AB必须具有相同的大小
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    最终命令行窗口结果:

    s =
    
        0.0595
    c1 =
    
        0.0595    0.0595
        0.0595    0.0595
    c2 =
    
        0.0423    0.0066
        0.0066    0.0159
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    更加具体的cov函数的用法可参考博客:
    【 MATLAB 】协方差 cov以及协方差矩阵基础知识

    七、图像相关系数

    图像相关系数是两幅图像相关性的一种度量,其值越接近1,两幅图像的线性相关性越密切;其值越接近0,两幅图像的线性相关性越不密切。在matlab中,使用corr2函数计算两个灰度图像的相关系数

    I=imread('pout.tif');
    % 中值滤波对孤立的噪声像素即椒盐噪声、脉冲噪声具有良好的滤波效果,可以保持图像的边缘特性,不会使图像产生显著的模糊。
    % medfilt2为中值滤波函数
    J=medfilt2(I);
    % corr2函数计算两个灰度图像(注意大小相等,只针对二维矩阵)的相关系数
    r1=corr2(I,J) % 不同图像
    r2=corr2(I,I) % 相同图像
    subplot(121),imshow(I);
    subplot(122),imshow(J);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    最终命令行窗口结果:

    r1 =
    
        0.9959
    r2 =
    
         1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    实现效果:
    在这里插入图片描述
    八、图像等高线

    在matlab中,使用imcontour绘制灰度图像的等高线。简单调用格式如下:
    在这里插入图片描述

    I=imread('peppers.png');
    J=rgb2gray(I);
    subplot(131),imshow(J);
    % imcontour(I,n)设置灰度图像等高线的条数为n,若不指定n,该函数会自动选择n
    subplot(132),imcontour(J,3);
    subplot(133),imcontour(J);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    实现效果:
    在这里插入图片描述

  • 相关阅读:
    RabbitMQ常见操作命令
    为何学linux及用处
    【iOS】—— URL Scheme
    LRU算法学习笔记:实现以及应用
    微信朋友圈全新玩法,轻松互动,引爆你的社交圈
    【node.js 入门篇】三分钟实现简单服务器功能
    Springboot贸易行业crm系统l8m1o计算机毕业设计-课程设计-期末作业-毕设程序代做
    扩散模型 - Diffusion Model【李宏毅2023】学习笔记 Part 1
    bootstrap柵格
    为什么选择推荐计划?不能错过的这八大好处
  • 原文地址:https://blog.csdn.net/qq_44111805/article/details/126435296