【数字图像处理matlab】 (均值、中值、排序、众数、方差/协方差、相关系数、直方图/累计直方图)

【数字图像处理matlab】 (统计与描述)

一些数字图像处理,统计与描述相关代码,matlab编写

1.均值

读入一张RGB影像,计算得到像素均值。
matlab函数为mean(),直接实现代码为:

ave=mean(mean(mean(A)))

%均值
A=imread('flower.jpg');
[row,column,band]=size(A);
n=row*column;
z=1;sum=0;
for i=1:row
    for j=1:column
        for k=1:band
            x(z)=double(A(i,j,k));
            sum=sum+x(z);
            z=z+1;
        end
              
    end
end
ave=sum/(row*column*band)

2.排序

一维数组排序,
matlab自带函数实现:

sort(x)

%排序[a,b]=sort(x)
[row,column]=size(x);
n=row*column;
for i=1:n
    for j=1:n-i
        if x(j)>x(j+1)
        t=x(j);
        x(j)=x(j+1);
        x(j+1)=t;
        end
    end   
end
x

3.中值

一维数组中值,先调用2.排序函数,再寻找中值。
matlab自带函数实现:

median(x)

%中值<排好序的数组>
if rem(n,2)   %求余函数,判断n为奇数还是偶数
    i=fix(n/2)+1;
    mid=x(i)
else
    mid=(x(n/2)+x(n/2+1))/2        %n为偶数时
end

4.众数

图像和一维数组众数实现
matlab自带函数实现:

mode(x)

function F=zhong(image)

%调用代码-----------------------
%image=rgb2gray(imread('eye.jpg'));
%zhong(image);
%调用代码-----------------------

%求图像众数
[row,column]=size(image);
X=imhist(image);
X=X';
[~,index]=max(X);
mode=index-1

time=X(1);Mode=0;
for i=2:256
    if X(i)>time
        time=X(i);
        Mode=i-1;
    end
end
Mode

%一维数组众数
Y=[7,2,3,6,8,3,5,3,1,3];
Z=zeros(1,max(Y)+1);
[r,c]=size(Y);
for i=1:c
    Z(Y(i)+1)=Z(Y(i)+1)+1;
end
[time2,index2]=max(Z);
Mode1=index2-1

end

5+6.方差/协方差 相关系数

RGB图像的方差/协方差,相关系数计算
matlab自带函数实现:

var(x)
corrcoef(X)

%方差,协方差,var(x),...相关系数corrcoed(X),X为二维数组
A=
sum1=0;sum2=0;
for i=1:row
    for j=1:column
        x(z)=A(i,j,1);      %第一波段和第二波段的方差,相关系数
        y(z)=A(i,j,2);
        sum1=sum1+x(z);
        sum2=sum2+y(z);
        z=z+1;
    end
end
ave1=sum1/(row*column);
ave2=sum2/(row*column);
s1=0;s2=0;cov=0;
for i=1:n
    s1=s1+(x(i)-ave1)*(x(i)-ave1)/(n-1);   %方差
    s2=s2+(y(i)-ave2)*(y(i)-ave2)/(n-1);
    cov=cov+(x(i)-ave1)*(y(i)-ave2)/(n-1); %协方差
end
s1
s2
r=cov/sqrt(s1*s2)  %相关系数

6.直方图/累计直方图

读入一个RGB图像,输出其灰度直方图和累计直方图。
当然,也可以读入的时候将图像转化为灰度图:image=rgb2gray(imread(‘xxx.jpg’));

function Result=Histogram(imageR)
%统计R波段的灰度直方图
%输入为r波段(一个波段)
%输出为灰度直方图

%调用代码-------------------------------
% imageR=imread('animal.jpg');
% Histogram(imageR);

[row,column]=size(imageR);
Result=zeros(1,256);
for i=1:row
    for j=1:column
        k=imageR(i,j);
        Result(k+1)=Result(k+1)+1;%记录每个灰度值的像素数
    end
end
figure;

z=zeros(1,256);
for i=1:256
    for j=1:i
         z(i)=z(i)+Result(j);    %累计直方图
    end
end
subplot(1,3,1);imshow(imageR);   %将多个图画画在一个平面上
subplot(1,3,2);bar(Result);       %axis tight;
subplot(1,3,3);bar(z);
end

测试:
在这里插入图片描述

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
瑞利分布是一种概率分布,常用于描述随机变量的幅度。在Matlab中,可以使用随机数生成函数和直方图函数来模拟和可视化瑞利分布。 引用\[1\]中的Matlab代码演示了如何生成瑞利分布的随机数,并使用直方图来显示分布情况。首先,使用rand函数生成均匀分布的随机数x2,然后通过sqrt(-2*log(x2))计算得到瑞利分布的随机数y2。接着,使用hist函数计算y2的直方图,并使用plot函数绘制直方图。最后,添加标签和图例,以便更好地理解和解释结果。 引用\[2\]中的Matlab代码展示了另一种生成瑞利分布的方法。首先,使用randn函数生成两组服从标准正态分布的随机数x1_1和x1_2。然后,通过计算sqrt(x1_1.^2+x1_2.^2)得到瑞利分布的随机数y1。接下来的步骤与引用\[1\]中的代码类似,使用hist函数计算y1的直方图,并使用plot函数绘制直方图。 引用\[3\]中的Matlab代码演示了如何生成服从高斯分布的随机序列信号,并绘制概率密度函数。首先,定义了两个高斯分布的均值方差。然后,使用randn函数生成服从高斯分布的随机数y,并通过sqrt(variance(i)) * randn(1,N) + data_mean(i)计算得到。接着,使用subplot函数将图像分为两个子图,分别绘制随机序列信号和直方图。最后,使用hist函数计算y的直方图,并使用plot函数绘制概率密度函数。 综上所述,以上Matlab代码可以用于生成和可视化瑞利分布和高斯分布的随机数和概率密度函数。 #### 引用[.reference_title] - *1* *2* *3* [matlab仿真瑞利分布与高斯分布](https://blog.csdn.net/QUACK_G/article/details/127824044)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值