求一程序Matlab对图像划分为4*4的子块,然后求取平均灰度值,再利用平均灰度值进行分类.分为大于平均灰度值I和小于平均灰度值II,然后再对I求平均灰度值A,对II求平均灰度值B,然后再对I类子块
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 12:38:46
求一程序Matlab对图像划分为4*4的子块,然后求取平均灰度值,再利用平均灰度值进行分类.分为大于平均灰度值I和小于平均灰度值II,然后再对I求平均灰度值A,对II求平均灰度值B,然后再对I类子块
求一程序Matlab对图像划分为4*4的子块,然后求取平均灰度值,再利用平均灰度值进行分类.
分为大于平均灰度值I和小于平均灰度值II,然后再对I求平均灰度值A,对II求平均灰度值B,然后再对I类子块提取出大于灰度值A的子块,同样提取出II类大于灰度值B的子块集.程序比较繁琐,希望有高人能给出个程序,十分感谢啊
求一程序Matlab对图像划分为4*4的子块,然后求取平均灰度值,再利用平均灰度值进行分类.分为大于平均灰度值I和小于平均灰度值II,然后再对I求平均灰度值A,对II求平均灰度值B,然后再对I类子块
I=imread('D:\matlab7.1\toolbox\images\imdemos\cameraman.tif');
[M,N]=size(I);
for ii=1:2
for jj=1:2
ima{ii,jj}=I((ii-1)*N/2+1:ii*N/2,(jj-1)*N/2+1:jj*N/2);%%对图像进行分块,图像大小256*256
end
end
m1=[mean2(ima{1,1}) mean2(ima{1,2}) mean2(ima{2,1}) mean2(ima{2,2})];%%计算各个子块的均值
ima{1,1}=ima{1,1};ima{1,2}=ima{1,2};ima{1,3}=ima{2,1};ima{1,4}=ima{2,2};
for k=1:4
a=ima{1,k};
[m,n]=size(a);
I1_1=zeros(N/2,N/2);I1_2=zeros(N/2,N/2);
I2_1=zeros(N/2,N/2);I2_2=zeros(N/2,N/2);
for i=1:m
for j=1:n
if a(i,j)>m1(k)
I1_1(i,j)=a(i,j);%%子块大于均值的值
else
I1_2(i,j)=a(i,j);%%子块小于均值的值
end
end
end
I1_11=I1_1(I1_1~=0);I1_22=I1_2(I1_2~=0);%%去掉其中的零元素
m11=mean(I1_11);m12=mean(I1_22);%%计算2类元素的均值
for i=1:m
for j=1:n
if I1_1(i,j)>m11
I2_1(i,j)=I1_1(i,j);
end
if I1_2(i,j)>m12
I2_2(i,j)=I1_2(i,j);%%提取各个子块中大于均值的像素值
end
end
end
ima_1{1,k}=I2_1+I2_2;%%将子块中大于各个均值的像素值合并
end
I1=[ima_1{1,1} ima_1{1,2};
ima_1{1,3} ima_1{1,4}];
figure,imshow(uint8(I1));