Matlab圖像處理(灰度特征的提取)
1、將彩色圖片轉化為灰度圖片
I=imread('crack.jpg');? ? ?%%讀取圖片
imshow(I);? ? ? ? %%顯示圖片
imhist(I)
I1 = rgb2gray(I)? ? ? ?%%將真彩色圖像 RGB 轉換為灰度圖像
imshow(I1);
2、提取灰度特征(均值、方差、熵、能量)
close all;
clear;
clc;
i=imread('crack.jpg');
i=double(i);
[m,n]=size(i);
s=0;
for x=1:m
? ? for y=1:n
? ? ? ? s=s+i(x,y);
? ? end
end
a=mean(mean(i));
a;
%%%%%%%%%%%%方差
close all;
clear;
clc;
i=imread('crack.jpg');
i=double(i);
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
b=var(i(:));
b
%%% 熵
clc;clear;
close all;
I=imread('crack.jpg');
[c,l]=size(I);
Img_size=c*l;
G=256;
H_x=0;
nk=zeros(G,1);
for i=1:c
? ? for j=1:l
? ? ? ? Img_level=I(i,j)+1;
? ? ? ? nk(Img_level)=nk(Img_level)+1;
? ? end
end
for k=1:G
? ? Ps(k)=nk(k)/Img_size;
? ? if ne(Ps(k),0);
? ? ?H_x=-Ps(k)*log2(Ps(k))+H_x;
? ? end
end
H_x
%%%%%%%%能量
im=imread('crack.jpg');
a=tabulate(im(:));
n=sum(a(:,3).^2)/10;