1. 程式人生 > >matlab提升(1):用matlab求影象的均值和方差

matlab提升(1):用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求得標準差,再平方即為方差。