求教MATLAB高手!我想将一个256*256的图像分成每块4*4的子块,然后求出每个子块的最小值 并对这些最小值画一个

求教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;
珍珠天堂 1年前 已收到1个回答 举报

hqing 花朵

共回答了18个问题采纳率:100% 举报

[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;

1年前 追问

3

珍珠天堂 举报

好厉害~! 能不能再麻烦帮忙看一下我的SURF哪里出错了- - 为什么不能画出3D图呢 谢谢了~ 错误是这个: ??? Error using ==> surf at 78 Data dimensions must agree.
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 18 q. 0.034 s. - webmaster@yulucn.com