早教吧 育儿知识 作业答案 考试题库 百科 知识分享

求教MATLAB高手!我想将一个256*256的图像分成每块4*4的子块,然后求出每个子块的最小值并对这些最小值画一个3D图,问题出在如何把最小值都求出来得到一个矩阵?我用MIN貌似只能得到一个数值,

题目详情
求教MATLAB高手!
我想将一个256*256的图像分成每块4*4的子块,然后求出每个子块的最小值 并对这些最小值画一个3D图,问题出在如何把最小值都求出来得到一个矩阵?我用MIN貌似只能得到一个数值,程序如下 C1为原图片
[M,N]=size(C1);
C2=double(C1);
m=4; %每小块大小为4*4
for f=1:M-m+1
for g=1:N-m+1
c1=C2(f:f+(m-1),g:g+(m-1));
e1=c1(1,:);
for u1=2:m
e1=[e1,c1(u1,:)];
end
mi=min(e1);
end
end
H.color=[1 1 1];
figure(H);
[x,y]=meshgrid(1:M,1:N);
surf(M,N,mm),%画出背景亮度粗估计的3D图
rotate3d on;
▼优质解答
答案和解析
[M,N]=size(C1);
mi=zeros(64,64);%初始化最小矩阵
m=4; %每小块大小为4*4
C2=mat2cell(C1,ones(M/m,1)*m,ones(N/m,1)*m);%分块为64x64的cell数组
for i=1:64
for j=1:64
mi(i,j)=min(min(C2{i,j}));%求最小
end
end
H.color=[1 1 1];
figure(H);
[x,y]=meshgrid(1:M,1:N);
surf(M,N,mm), %画出背景亮度粗估计的3D图
rotate3d on;