利用matlab求圖像均值和方差的幾種方法


一、求均值

% 求一副灰度圖像的均值
close all;
clear;
clc;
i=imread('d:/lena.jpg'); %載入真彩色圖像
i=rgb2gray(i); %轉換為灰度圖
i=double(i);  %將uint8型轉換為double型,否則不能計算統計量
% avg1=mean(i,1); %列向量均值
% avg2=mean(i,2); %行向量均值
% avg3=mean(i); %列向量均值
[m,n]=size(i);
s=0;
for x=1:m
    for y=1:n
        s=s+i(x,y); %求像素值總和 s
    end
end
%所有像素均值
a1=mean(mean(i)); %第一種方法:先計算列向量均值,再求總均值。
a2=mean2(i); %第二種方法:用函數mean2求總均值
a3=s/(m*n);  %第三種方法:按公式計算,像素值總和除以像素個數。
a4=sum(sum(i))/(m*n); %第四種方法:也是按公式計算,但是用sum來求像素值總和。

二、求方差

% 求一副灰度圖像的方差
close all
clear
clc;
i=imread('d:/lena.jpg'); %載入真彩色圖像
i=rgb2gray(i); %轉換為灰度圖
i=double(i);  %將uint8型轉換為double型,否則不能計算統計量
% sq1=var(i,0,1); %列向量方差,第二個參數為0,表示方差公式分子下面是n-1,如果為1則是n
% sq2=var(i,0,2); %行向量方差
avg=mean2(i);  %求圖像均值
[m,n]=size(i);
s=0;
for x=1:m
    for y=1:n
    s=s+(i(x,y)-avg)^2; %求得所有像素與均值的平方和。
    end
end
%求圖像的方差
a1=var(i(:)); %第一種方法:利用函數var求得。
a2=s/(m*n-1); %第二種方法:利用方差公式求得
a3=(std2(i))^2; %第三種方法:利用std2求得標准差,再平方即為方差。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM