DAY13 彩色圖片分別顯示RGB三個通道圖片 Matlab求圖像的均值 方差 信息熵


% 讀取一張彩色圖片 分別顯示RGB三個通道圖片
% 將彩色圖片換成灰度圖像 求圖像的均值 方差 熵
im=(imread('robot.jpg'));
figure,imshow(im);

% Step1 分別顯示RGB三個通道圖片
subplot(2,2 ,1),imshow(im); %原始彩色圖像
subplot(2, 2 ,2),imshow(im(:,:,1)); %R通道 im(:,:,1) 表示三維圖像 第一個參數表示獲取全部行
subplot(2 ,2 ,3),imshow(im(:,:,2)); %G通道 第二個參數表示獲取全部列
subplot(2 ,2 ,4),imshow(im(:,:,3)); %B通道 第二個參數表示獲取頁數

% Step2 將彩色圖片換成灰度圖像
% Step3 求圖像的均值 方差 熵
im1=rgb2gray(im); 
figure,imshow(im1);

[row,col]=size(im1); %獲取行數 和 列數
im1=double(im1); %要先轉換成double 否則不能實現累加
sum=0; %求矩陣所有元素的和
for i=1:row
for j=1:col
sum=sum+im1(i,j);
end
end

%求均值
mid=sum/(row*col);

%求方差
s=0;
for x=1:row
for y=1:col
s=s+(im1(x,y)-m)^2; %求得所有像素與均值的平方和。
end
end
a2=s/(row*col); %方差

%求信息熵
A=im1;
[M,N]=size(A);
temp=zeros(1,256); %設置空白矩陣 用於記錄概率
for m=1:M;
for n=1:N; 
if A(m,n)==0; %如果數值為0
i=1; %序號為1
else 
i=A(m,n); %否則為原來序號
end 
temp(i)=temp(i)+1; %統計每個灰度值出現的次數
end
end
%求信息熵
temp=temp/(M*N); %所有值除以元素個數,表示概率 即公式中的P(i)
result=0; 
for i=1:length(temp) %返回temp的行列中的最大值 即256
if temp(i)==0; %如果概率為0 則不累加 0要單獨處理
% result=result; 
else %否則 公式
result=result-temp(i)*log2(temp(i));
end
end

 

 

 

  


免責聲明!

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



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