一幅JPG图像,编写Matlab程序,将其切割成9幅小图(3×3).

 我来答
qingningleyun
2014-02-12 · TA获得超过5853个赞
知道大有可为答主
回答量:2991
采纳率:30%
帮助的人:3041万
展开全部
% 图像切片代码
% my_imslice(filename); 缺省方式,输出 3×3 切片;
% my_imslice(filename,rc,cc); 输出 rc×cc 切片;
function [rgb,mn] = my_imslice(filename,rc,cc)
p = imread(filename);
if nargin == 1, rc = 3; cc = 3; end; % rc,cc 缺省值
% 图片补齐及计算每片大小
[m,n,h] = size(p);
rp = rc*(fix(m/rc)+1*(mod(m,rc)==1)); % 补齐后行像素
frow = fix(rp/rc);                    % 片行像素   
cp = cc*(fix(n/cc)+1*(mod(n,cc)==1)); % 补齐后列像素
fcol = fix(cp/cc);                    % 片列像素 
mn = [frow fcol];
pp = p; 
pp(rp,cp,:) = 0; % 原始数据补齐
% 数据分片、显示
rgb = cell(rc,cc);
for r = 1:rc
    for c = 1:cc
        rrr = ((r-1)*frow+1):r*frow;
        ccc = ((c-1)*fcol+1):c*fcol;
        rgb{r,c} = pp(rrr,ccc,:);
        subplot(rc,cc,(r-1)*cc+c);
        imshow(rgb{r,c}); 
        tt = [num2str(r) num2str(c)];
        title(tt); 
    end;
end;
% 切片保存为文件
txt = '是否将切片保存为文件?';
ttl = '切片保存提醒';
str1 = '保存';
str2 = '放弃';
def = str1;
button = questdlg(txt,ttl,str1,str2,def);
saved = strcmp(str1,button);
if ~saved, disp('放弃切片文件保存。'); return; end;
ps = find(filename=='.');
nm = filename(1:ps-1);       % 文件名称
ext = filename(ps+1:end);    % 文件扩展名
txt = ['保存为 ' num2str(rc*cc) ' 个切片文件: '];
disp(txt);
for r = 1:rc
    for c = 1:cc
        tt = [num2str(r) num2str(c)];
        fnm = [nm '_' tt '.' ext];
        imwrite(rgb{r,c},fnm); % 保存片文件
        disp(fnm);
    end;
end;
阿福刻录
2014-02-11 · 超过12用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:28.9万
展开全部
size提取长宽参数
各分3份
imcrop和for配合使用保存成9个子图
追问
求具体的结果
追答
别求了,自己琢磨琢磨。
艺多不压身
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式