% 讀取一張彩色圖片 分別顯示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